Wir verwenden ein Produkt eines Drittanbieters, um die Mitgliedschaft in unserem Sportzentrum zu verwalten. Wir haben verschiedene Arten der Mitgliedschaft (zB Junior, Student, Mitarbeiter, Community) und mehrere Mitgliedsstatus (zB Jährlich, Aktiv, Inaktiv, Suspendiert). Leider erfasst das Produkt nur den aktuellen Mitgliedschaftsstatus und -status eines Mitglieds. Ich möchte in der Lage sein, zu verfolgen, wie sich Art und Status unserer Mitglieder im Laufe der Zeit verändert haben.Datenbankentwurf, um Informationen einer Person zu halten, die sich mit der Zeit ändern?
Gegenwärtig haben wir Zugriff auf das Datenbankdesign des Produkts. Es läuft auf SQL Server und wir führen regelmäßig eigene SQL-Abfragen für die Produkttabellen durch, um eigene Tabellen zu erstellen. Wir verknüpfen dann unsere Tabellen mit Pivot-Tabellen in Excel, um Diagramme zu erstellen. Daher sind wir mit Datenbankdesign und SQL vertraut. Wir sind jedoch fest, wie wir dieses Problem am besten angehen können.
Das Produkt registriert die Mitgliedschaftskäufe eines Mitglieds und deren Start- und Ablaufdatum. Wir können also durch diese Daten arbeiten, um zu jedem Zeitpunkt den Typ und Status eines Mitglieds zu bestimmen. Wenn Sie zum Beispiel am 1. Januar 2007 eine Junior-Mitgliedschaft gekauft haben und diese am 31. Dezember 2007 abgelaufen ist und dann am 1. Juni 2008 eine Studentenmitgliedschaft gekauft hat, können wir sehen, dass ihr Status von aktiv zu inaktiv zu aktiv geändert wurde 1. Juni 2008 und 1. Juni 2008) und ihre Art ging von Junior zu Student (am 1. Juni 2008).
Im Wesentlichen möchten wir die Typ- und Statuseigenschaften eines Mitglieds in temporal properties oder effectivities a-la Fowler (oder etwas anderes, das mit der Zeit variiert) verwandeln.
Unsere Frage (endlich :) - angesichts der oben genannten: Welche Datenbanktabellen-Design würden Sie empfehlen, um diese Mitglied Informationen zu halten. Ich stelle mir vor, dass es eine Spalte für MemberID haben würde, damit wir in die bestehende Member-Tabelle einsteigen können. Außerdem müssen der Status und Typ eines Mitglieds sowie der Zeitraum, für den sie aufbewahrt wurden, gespeichert werden. Wir möchten in der Lage sein, problemlos Abfragen für diese Tabelle (n) zu schreiben, um zu bestimmen, wie viele Mitglieder jedes Typs und Status wir zu einem bestimmten Zeitpunkt hatten.
UPDATE 2009-08-25: Wurden seitwärts verfolgt und hatten noch keine Chance, die vorgeschlagenen Lösungen auszuprobieren. Ich hoffe, dass ich das bald tun werde und eine Antwort basierend auf den Ergebnissen auswählen werde.
Verwandte Frage zu Zeitreihen Datenmodell: http://stackoverflow.com/questions/4083464/design-database-related-to-time-attribute/ – Vadzim