Sto lavorando alla creazione di un'applicazione aziendale per la mia azienda e faccio fatica a scegliere il design di database più appropriato per una situazione particolare. Diciamo che ho le seguenti entità:
Approvazione
- Id
- Stato
- ...
ApprovalComment
- Id
- ApprovalId
- Commento
Ordine
- Id
- ...
Fattura
- Id
- ...
Ovviamente potrebbero esserci più tipi di approvazioni e più oggetti che richiedono approvazioni. Quale sarebbe la più appropriata delle seguenti opzioni per progettare le tabelle:
OPZIONE 1
Avere una tabella di approvazioni con chiavi esterne nulle:
approvazioni
- Id PK
- Stato
- OrderId FK NULL
- InvoiceId FK NULL
ApprovalComments
- Id PK
- Approvazione ID FK
- Commento
In questo caso dovrei aggiungere una colonna per ogni oggetto che necessita di un'approvazione
OPZIONE 2
Avere una tabella Approvazioni padre con campi comuni e una tabella figlio per ogni oggetto che necessita di un'approvazione:
approvazioni
- Id PK
- Stato
ApprovalComments
- Id PK
- Approvazione ID FK
- Commento
OrderApprovals
- Approvazione ID PK FK
- OrderId FK
InvoiceApprovals
- Approvazione ID PK FK
- InvoiceId FK
OPZIONE 3
Avere una tabella di approvazioni per ogni oggetto:
OrderApprovals
- Id PK
- OrderId FK
- Stato
OrderApprovalComments
- Id PK
- OrderApprovalId FK
- Commento
InvoiceApprovals
- Id PK
- InvoiceId FK
- Stato
InvoiceApprovalComments
- Id PK
- InvoiceApprovalId FK
- Commento
So che sono tutte soluzioni valide, ma non riesco a decidere quale sarebbe la migliore per l'aggiunta di diversi tipi di approvazioni in futuro. qualche idea?