Przeczytałem kilka pytań na temat SO (takich jak this one) w odniesieniu do wersjonowania danych w bazie danych.Baza danych - wersja danych
Podobały mi się niektóre z sugestii, które zostały wymienione. Mam najdłużej potrzebny (potrzebny) przegląd wielu moich stołów, ale nigdy się do tego nie zbliżyłem. Będąc programistą, który ma za sobą tylko prostą pracę z bazami danych, zastanawiałem się, jak można to zrobić.
Nie proszę o rzeczywiste rozwiązanie w składni SQL. W końcu mogę to sobie wyobrazić (lub wysłać pocztą SO, gdy nadejdzie czas). Po prostu proszę ludzi, aby komentowali, w jaki sposób zamierzają to zrobić, a wszelkie potencjalne problemy z wydajnością mogą wystąpić, gdybym "poprawił" setki milionów rekordów. Lub inne sugestie, o ile opiera się na przykładzie poniżej.
Biorąc prosty przykład:
Person
------------------------------------------------
ID UINT NOT NULL,
PersonID UINT NOT NULL,
Name VARCHAR(200) NOT NULL,
DOB DATE NOT NULL,
Email VARCHAR(100) NOT NULL
Audit
------------------------------------------------
ID UINT NOT NULL,
UserID UINT NOT NULL, -- Who
TableName VARCHAR(50) NOT NULL, -- What
OldRecID UINT NOT NULL, -- Where
NewRecID UINT NOT NULL,
AffectedOn DATE NOT NULL, -- When
Comment VARCHAR(500) NOT NULL -- Why
Nie jestem pewien, w jaki sposób można by połączyć tabelę Audytu do innych tabel (takich jak osoby) jeżeli TableName jest ciągiem?
Ponadto, zakładając, że mam trzy GUI do wypełnienia:
- pełny zapis dla osoby konkretnym identyfikatorze
- widoku tabeli wykaz wszystkich osób (wg ID)
- widok pokazujący każdą osobę z informacjami o ich zmianach pod każdym wpisem (liczba poprawek na osobę, daty korekt, komentarze do wersji itp.) uporządkowanymi według najnowszych wersji.
Aby zrealizować 1 i 2, czy byłoby lepiej zapytać o tabelę Person lub tabelę Audytu?
Czy w celu osiągnięcia 3, tak zwany ekspert bazy danych po prostu pobierze wszystkie rekordy i przekaże je oprogramowaniu do przetworzenia lub pogrupie według identyfikatora PersonID i daty wpływu? Czy jest to zwykle obsługiwane w jednym zapytaniu lub wielu?
audytu jest mało prawdopodobne, aby komentarz był używany dużo, chyba że automatycznie go zapełnisz. –