La tabella di TESTATA è quella che contiene i dati generali che, nel tuo caso, mi pare possa essere più o meno come la tabella IMPEGNATIVA.
In sostanza, dovresti avere due tabelle:
IMPEGNATIVE_TESTATA
- IDImpegnativa (PK)
- altri campi generali
IMPEGNATIVE_RIGHE
- IDRiga (PK)
- IDImpegnativa (FK di IMPEGNATIVE_TESTATA)
- altri campi della righe
La prima verrà alimentata dalle varie anagrafiche (Medici, Assistiti, ecc.)
La seconda va alimentata dalla tabella Prestazioni (anche se è limitativo, ma questo è un'altro discorso che non c'entra).
Come vedi, non ho inserito nessuna relazione se non quella che lega le righe alla testata: IDImpegnativa.
Ecco cosa si intende per 'storico'.
Se, invece, vuoi relazionare altre tabelle anagrafiche, allora sei costretto anche a gestire a parte lo storico di queste ultime.
Facciamo un esempio pratico di un banalissimo trasferimento di indirizzo:
La Struttura XYZ era locata in via Roma fino al 12 fino al 31/05/2016; dal 01/06/2016 si è trasferita in via Torino, 22.
Nell'anagrafica struttura tu dovrai registrare tale modifica, giustamente.
Ma se vai a ristampare un'impegnativa del 30/05/2016 risulterà che la struttura risiede in via Torino, 22.
Lo stesso dicasi per il Medico, o l'Assistito, ecc.
Per evitare questi problemi vi sono diverse soluzioni, più o meno complesse:
a1) inserisci tutti i dati anagrafici nella tabella di TESTATA
a2) oppure mantieni i dati anagrafici in una ulteriore tabella, relazionata con l'IDImpegnativa
c) gestisci lo storico di ogni tabella anagrafica (in una tabella a parte) utilizzando i campi per le date di validità: DataInizio e DataFine.
Ricorda che i nomi delle tabelle vanno sempre definiti al plurale, quindi Ambulatori, Medici, Prestazioni, ecc.