![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 76 Pomógł: 19 Dołączył: 19.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
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ć? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Chyba najbardziej elegancko jest zrobić taką strukturę:
Kod kontrahent: [id, kod, aktywny, ...] kontrahent_dane: [id, kontrahent_id, imie, nazwisko, ...] faktura: [id, kontrahend_dane_id, ...] Ostatni wpis w tabeli kontrahent_dane to aktualne dane kontrahenta, a w fakturach łączysz faktury nie z kontrahentami, a właśnie z kontrahent_dane. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 20:12 |