Mam tabelę nadrzędną oraz kilka podrzędnych, które po stronie kodu tworzą jakieś obiekty biznesowe z kolekcjami innych obiektów biznesowych etc.
Może przykład:
Zamówienie
Id
OfertaId
Cena
Kupujący
Id
ZamówienieId
Imię
Nazwisko
AdresId (kilku klientów może mieć ten sam adres, pewnie w 99% przypadków tak będzie)
Adresy
Id
Ulica
Kod
Miasto
DokumentyZamówienia
Id
ZamówienieId
Nazwa
Oświadczenia
ZamówienieId
OświadczenieId
Oczywiście w rzeczywistości każda tabela to jeszcze kilka kolumn, no jest kilka tabel więcej.
Zamówienie (na pewnym etapie) może zostać zmienione. Można dodać/usunąć kupujących, zmienić adresy, dodać dokumenty, zaznaczyć więcej oświadczeń, ...
Dla celów audytowych oraz na użytek klienta potrzeba zachować historię zmian i móc ją udostępnić (wyświetlić).
Jak widać tabel jest kilka, więc to trochę utrudnia trzymanie pełnej historii. Mam kilka pomysłów, ale jestem ciekaw czy macie jakieś ciekawe sugestie jak podejść do tego.
Wszystkie modyfikacje będą wykonywane przez kontrolowaną przeze mnie DAL (java), więc triggery nie są konieczne, raczej nawet wolałbym ich nie używać.
Zamówienie (czyli nasz główny/nadrzędny obiekt) może zmienić typ oferty oraz cenę. Bez problemu można dodać potrzebne kolumny techniczne.