Muszę przechowywać dane, takie jak artykuły, w bazie danych mysql, a jeśli artykuł jest modyfikowany, muszę również zachować starą wersję, aby umożliwić jej przywrócenie. Znalazłem kilka podobnych pytań i postów na ten temat, ale nie jestem pewien, które rozwiązanie jest najlepsze, aby rozwiązać problem.Najlepsza praktyka dla systemu przetwarzania danych mysql
Oto podstawowej tabeli "artykuły" dla lepszego zrozumienia:
artykułów (id, nazwa, tekst)
Dla mnie istnieją dwa różne podejścia do tego:
Approach 1
Zapisz dane i każdą wersję artykułu w tabeli "artykuły" i dodaj kolumny "wersja" i "status". W wersji i przechowuję zwiększany numer wersji artykułu. Aktywna artykuł dostaje "status" 1 i innym "status" 2.
Pro:
tylko jeden stół jest potrzebny
Nowa wersja jest wkładka nowe dane i tylko uaktualnienie „stan” -column starego jednego
Con
- Bardzo duże stoły (może wolniej zapytań ???)
Approach 2
dodać pole "Wersja" do "art" i przechowywać tylko aktywne dane do tabeli " artykuły ". Stare wersje danych są przechowywane/przenoszone do nowej tabeli "articles_versioned".
Pro:
- Tylko rzeczywista ważne dane w tabeli "artykułów"
Con
- Dublication tabel
So. Czy zapomniałem dobry aproach? Jak radzić sobie z powiązanymi danymi w innych tabelach (np. Obrazy itp.)?
Nazywa się to zwykle "zmianą przechwytywania danych" (CDC). Google dla niego: http://www.google.com/search?aq = f & gcx = w & sourceid = chrome & ie = UTF-8 & q = mysql + change + data + capture & safe = active – duffymo
Nie musisz nawet aktualizować poprzedniego statusu, wybierz najwyższy identyfikator dla tego konkretnego artykułu. – Anigel
Status jest, jeśli chcę aby powrócić do poprzedniej wersji – bernhardh