Daniel Częstki senior php developer
Temat: Integralność danych na bazie.
Zastanawiam się jak powinna wyglądać prawidłowo zaprohektowana baza danych aby zachować jej integralność.Weźmy taki przykładowy problem.
Najłatwiej na przykładzie więc niech to będzie system np. bilingowy.
Mamy klienta, który kupuje jakieś usługi, na które system wystawia faktury.
Usluga łaczy sie kluczem z klientem, a faktura z uslugą.
Prawidłowo zaprojektowana baza powinna być jednak niezależna od takich informacji jak np.
- klient zmienia dane adresowe
- klient rezygnuje z uslugi.
Jezeli bedziemy laczyc te tabele kluczami, to okaze sie ze np. w momencie zmiany danych adresowych klienta pociagnie za sobą zmianę wszystkich danych na fakturach - rowniez tych wystawionych w przeszlosci.
Aby temu zapobiec, do tabeli zawierajacej faktury, w momencie jej tworzenia kopiujemy bieżące dane klienta. W tym momencie zmiana danych klienta nie pociągnie za sobą zmiany danych w starych fakturach.
Jakie są wasze doświadczenia w tym aspekcie projektowania aplikacji ? Chodzi mi o zachowanie integralnosci danych i budowania odpowiednich powiązań pomiedzy tabelami ?