W przypadku korzystania z bazy danych znormalizowanej zgodnie z zasadami 6NF, w jaki sposób przechowujesz dane atrybutów historycznych?6NF i dane atrybutów historycznych
powiedzmy na przykład weźmiemy this example z @PerformanceDBA ale z następującym dodatkowym wymogiem:
Musimy przechowywania danych historycznych dla wszystkich naszych produktów, powinniśmy stanie po prostu wprowadzić datę i uzyskać migawka atrybutów produktu w tym konkretnym czasie.
Bardziej praktyczny przykład:
Załóżmy dysków i procesorów z powyższym przykładzie są wirtualne, a użytkownik może zmienić pojemność dysku do woli. W jaki sposób możemy zmienić bazę danych tak, abyśmy mogli pobrać atrybuty danego dysku w dowolnym czasie w przeszłości (oczywiście po jego dacie utworzenia), jednocześnie zachowując wystarczająco szybki podgląd 5NF.
miejsca Zastanawiam
- Dodaj kolumnę timestamp „CHANGEDATE” do każdej tabeli atrybutów (Spowodowałoby to całkiem złożone zapytania z podzapytania i dołączenia do każdej tabeli atrybutów)
- Utwórz osobną tabelę historii dla każdej tabeli atrybutów (może spowodować ogromną liczbę tabel, ponieważ mamy około 70 atrybutów rozłożonych na 20 typów produktów:)
- Dodatkowo: dodać indeksowanego „aktualny” kolumny do każdej tabeli atrybutów przyspieszyć widok 5NF
Każda pomoc jest mile widziana!
Edit: wiem pojęcie czasowych baz danych, ale problemem jest to, że dla silnika bazy danych pracuję z (PostgreSQL) rozszerzenie czasowy nie jest jeszcze w pełni wdrożone. Wszelkie porady, jak to osiągnąć bez tymczasowych baz danych?
Tylko po to, aby Cię ostrzec - poszedłem drogą NIE mając tabel historii i używając dat "od" i "do" w każdym rzędzie moich "podmiotów". To był największy błąd, który popełniłem i zamienił projekt w koszmar. Zajęło to przewodnictwo osoby, którą wymieniłeś, PerformanceDBA, aby sprawić, że bym naprawdę zrozumiał, czym naprawdę jest baza danych (to znaczy nie tylko wiadro dla obiektów). Od tego czasu przepisałem projekt, stosując bardziej tradycyjne podejście (tabele/widoki historii) i jest ono lepsze pod każdym względem. W porządku, nie ma wiele argumentów, ale szczegółowe informacje wymagałyby ogromnej ilości dokumentacji. – Mark
To jest wpis, który pozwolił mi zmienić sposób, w jaki patrzę na bazy danych w ogóle (z punktu widzenia inżynierów oprogramowania, z punktu widzenia DBA): - http://stackoverflow.com/questions/4491173/historical- auditable-database - nie mówię, że nie należy robić tego, co zostało zasugerowane (używając "od" i "do" i bez tabel historii), ale dla mnie stworzyło to wielki bałagan, i nigdy nie zejdę z tym znowu droga. – Mark