najlepiej opiszę na przykładzie:
powiedzmy mamy tabelę faktury (id, id_kontrahenta, ...) oraz tabelę kontrahenci (id, nazwa, adres, nip ... )
dopisując nową fakturę korzystamy oczywiście z tabeli kontrahentów.
Teraz problem: jak rozwiązać kwestię zmiany danych kontrahenta, tak aby na już wystawionych dokumentach pozostały stare dane? Można oczywiście zdublować wszystkie kolumny tabeli kontrahenci w tabeli faktury (i, z tego co wiem, często tak się robi) ale to takie mało relacyjne rozwiązanie ... Inny pomysł to dodanie kolumny Arch enum('N','T'), ale przy bardziej skomplikowanych zależnościach trochę się wszystko gmatwa ...
Czy jest do tego jakieś wsparcie we frameworkach albo wzorce, które by pomogły nad tym bardziej zapanować?