Ich habe diese Situation, in der ich Personen innerhalb einer Gruppe einschließen musste.
Dafür erzeuge ich eine Beziehung wie die im Bild gezeigt.Gruppe von Personen speichern und jede Änderung darin
table diagram http://img189.imageshack.us/img189/6076/imagetkr.png
Die Gruppen ändern sich ständig (mehrmals täglich werden mehrere Personen hinzugefügt und aus einer Gruppe entfernt).
Ich muss den Status der Gruppe jedes Mal speichern, wenn es sich ändert (welche Personen waren darin und zwischen welchen Daten), für die spätere Analyse.
Dafür jedes Mal eine Person aus einer Gruppe hinzugefügt oder entfernt wurde, kommt die Anwendung des folgenden:
- die aktuelle Gruppe erhalten (und die Personen darin)
- eine Liste erstellen (im Speicher) von Personen in der Gruppe, mit Ausnahme von oder Hinzufügen diejenigen zu bem entfernt oder
- Aktualisierung der EndDate auf der aktuellen Gruppe
- erzeugt eine neue Gruppe
- einzufügen, die Personen (aus der Liste in Punkt hinzugefügt 2) in der Gruppe
- Rückkehr die neue GroupId
Diese GroupId wird verwendet, um ein Protokoll der Änderungen in der Gruppe zu speichern.
Ein Beispiel für die nach einigen Bewegungen erzeugten Daten:
PERSON:
PersonId Name
1 John
2 Sally
3 Pete
-Hinzufügen John:
GROUP:
GroupId Description StartDate EndDate
1 John added 31/7/2009 11:00:00 null
GROUPPERSON:
GroupPersonId GroupId PersonId
1 1 1
-Hinzufügen Sally:
GROUP:
GroupId Description StartDate EndDate
1 John added 31/7/2009 11:00:00 31/7/2009 11:35:00
2 Sally added 31/7/2009 11:35:00 null
GROUPPERSON:
GroupPersonId GroupId PersonId
1 1 1
2 2 1
3 2 2
-Hinzufügen Pete:
GROUP:
GroupId Description StartDate EndDate
1 John added 31/7/2009 11:00:00 31/7/2009 11:35:00
2 Sally added 31/7/2009 11:35:00 31/7/2009 12:10:00
3 Pete added 31/7/2009 12:10:00 null
GROUPPERSON:
GroupPersonId GroupId PersonId
1 1 1
2 2 1
3 2 2
4 3 1
5 3 2
6 3 3
-Remove John:
GROUP:
GroupId Description StartDate EndDate
1 John added 31/7/2009 11:00:00 31/7/2009 11:35:00
2 Sally added 31/7/2009 11:35:00 31/7/2009 12:10:00
3 Pete added 31/7/2009 12:10:00 31/7/2009 12:24:00
4 John removed 31/7/2009 12:24:00 null
GROUPPERSON:
GroupPersonId GroupId PersonId
1 1 1
2 2 1
3 2 2
4 3 1
5 3 2
6 3 3
7 4 2
8 4 3
Dieses ist der Entwurf kam ich mit, aber wie ich bin ein einzelner Entwickler Ich fürchte, ich sehe es nicht klar.
Können Sie mir andere (bessere) Wege zeigen, die gleichen Funktionen zu erreichen?
Um zu wissen, welche Gruppe ich möchte, speichere ich die aktuelle Gruppen-ID an einem anderen Ort. Bevor ich die neue Gruppe erstelle, überprüfe ich, was die aktuelle Gruppe ist und ersetze sie. Danke für deine Antwort. –