Używamy produktów innych firm do zarządzania członkostwem w naszym centrum sportowym. Mamy kilka rodzajów członkostwa (np. Junior, student, personel, społeczność) i kilka statusów członkostwa (np. Roczny, aktywny, nieaktywny, zawieszony). Niestety produkt rejestruje tylko bieżący typ członkostwa i status członka. Chciałbym móc śledzić sposób, w jaki typ i status członków zmieniał się z czasem.Projektowanie bazy danych do przechowywania informacji o osobie, która zmienia się wraz z upływem czasu?
Obecnie mamy dostęp do projektu bazy danych produktu. Działa na serwerze SQL Server i regularnie uruchamiamy własne zapytania SQL względem tabel produktu, aby tworzyć własne tabele. Następnie łączymy nasze tabele z tabelami przestawnymi w programie Excel, aby tworzyć wykresy. Znamy więc projektowanie baz danych i SQL. Jednak utknęliśmy, jak najlepiej podejść do tego problemu.
Produkt rejestruje zakupy członków oraz ich daty rozpoczęcia i zakończenia. Możemy więc przeglądać te dane, aby określić typ i status członka w dowolnym momencie. Na przykład, jeśli kupili członkostwo dla nieletnich 1 stycznia 2007 r. I wygasną 31 grudnia 2007 r., A następnie kupili członkostwo dla studentów w dniu 1 czerwca 2008 r., Możemy zobaczyć ich status z aktywnego na nieaktywny do aktywnego (na styczeń 1, 2008 i 1 czerwca 2008 r., Odpowiednio) i ich typ przeszedł z juniora na studenta (1 czerwca 2008 r.).
Zasadniczo chcielibyśmy zmienić właściwości typu i statusu członka na temporal properties lub effectivities a-la Fowler (lub inną rzecz, która zmienia się wraz z upływem czasu).
Nasze pytanie (w końcu :) - biorąc pod uwagę powyższe: jaki projekt tabeli bazy danych poleciłby nam wykorzystać do przechowywania informacji o tym użytkowniku. Wyobrażam sobie, że będzie miał kolumnę dla MemberID, abyśmy mogli wprowadzić klucz do istniejącej tabeli członków. Musiałby również przechowywać status i typ członka oraz zakres dat, w jakim były przechowywane. Chcielibyśmy móc łatwo pisać zapytania w odniesieniu do tej tabeli (tabel), aby określić, ilu członków każdego rodzaju i statusu mieliśmy w danym momencie.
AKTUALIZACJA 2009-08-25: Zostały poboczne i nie miały jeszcze okazji wypróbować proponowanych rozwiązań. Mam nadzieję, że zrobię to wkrótce i wybiorę odpowiedź na podstawie wyników.
Powiązane pytanie dotyczące modelu danych szeregów czasowych: http://stackoverflow.com/questions/4083464/design-database-relating-to-time-attribute/ – Vadzim