Mam relacyjny model bazy danych pod aplikację do faktur. Temat zbadałem dość intensywnie.
Problemem jest możliwość wygenerowania faktury już wystawionej, a której relacje uległy zmianie (np. adres zamawiającego, nr konta wystawiającego fakturę).
Rozważam:
- dodanie dodatkowych relacji np. tabela client dostaje tabelę client_data, tabela z fakturą przechowuje klucz do client_data - sporo relacji, sporo joinów w zapytaniach
- kopiowanie wartości do rekordu faktury, faktura ma stan na dany moment i nara (dość częste w przykładowych modelach, najczęściej kopiują price i tax value) - takie trochę na odwal
- inne pomysły nie zasługują na wzmiankę.
Myślę, że to strasznie oklepany problem, ale większość akademickich (i Stack Overflow'owych) przykładów modelów baz danych pod taki system zdaje się w ogóle to zagadnienie ignorować.
Jakieś sprawdzone w bojach pomysły? :)
Najbardziej pasujący wątek na SO, wpadł mi teraz:
http://stackoverflow.com/questions/2954233/invoice-invoice-lines-how-do-you-store-customer-address-information
Zaakceptowana odpowiedź proponuje relacje. Ciekawa dyskusja w komentarzach o tym, czy faktura nie powinna być jednak niezmienialna.