Muszę skonfigurować funkcję historii w projekcie, aby śledzić wcześniejsze zmiany.
Powiedzmy, że mam teraz dwie tabele:
NOTES TABLE (id, userid, submissionid, message)
SUBMISSIONS TABLE (id, name, userid, filepath)
Przykład: Mam wiersz w notatkach, a użytkownik chce zmienić wiadomość. Chcę śledzić jego stan przed zmianą i po zmianie.
Jakie byłoby najlepsze podejście do konfigurowania kolumny w każdej z tych tabel, która powie, czy element jest „stary”. 0 jeśli aktywne LUB 1 jeśli usunięte / niewidoczne.
Chcę również utworzyć AUDIT TRAIL
tabelę history ( ), która zawiera id
stan poprzedni, stan id
nowy, do której tabeli odnoszą się te identyfikatory?
mysql
database-design
audit
Schwarz
źródło
źródło
Odpowiedzi:
Proszę zobaczyć
http://www.codeproject.com/Articles/105768/Audit-Trail-Tracing-Data-Changes-in-Database
To bardzo dobra lektura na temat podejść do utworzenia ścieżki audytu w projekcie bazy danych. Ścieżki audytu są niezbędne do wdrożenia bazy danych. Zawsze powinna być widoczna akcja użytkowników bazy danych w systemie.
Możemy śledzić, które wiersze zostały zmienione w naszym systemie PTA (punkt w czasie), dodając niektóre standardowe kolumny PTA (punkt w czasie) do wszystkich tabel zainteresowania PTA.
Proponuję następujące:
źródło
Podczas projektowania możliwości kontroli wersji w danych istnieje kilka minimalnych (jak sądzę) wymagań:
Oto slajdy prezentacji, które kilka razy zrobiłem na targach technicznych. Obejmuje to, w jaki sposób można wykonać wszystkie powyższe czynności. A oto dokument, który bardziej szczegółowo. Muszę przeprosić za dokument - jest to praca w toku i nie wszystkie sekcje zostały ukończone. Ale powinno to dostarczyć wszystkich informacji potrzebnych do wdrożenia czegokolwiek, od prostej wersji do pełnego dostępu na dwa okresy czasu.
źródło
This means no flag or other indicator showing which is the current version and which are "history."
, jeśli nie ma flagi ani wskaźnika, w jaki sposób odróżniamy obecną wersję od wersji historycznej? Zwłaszcza na podstawie trzeciego punktu, który sugerujesz, że powinien on znajdować się w tej samej tabeli.