Je travaille à la création d'une application métier pour mon entreprise et j'ai du mal à choisir la conception de base de données la plus appropriée pour une situation particulière. Disons que j'ai les entités suivantes:
Approbation
- Id
- Statut
- ...
ApprovalComment
- Id
- ApprovalId
- Commentaire
Ordre
- Id
- ...
Facture d'achat
- Id
- ...
Il peut évidemment y avoir plusieurs types d'approbations et plusieurs objets qui nécessitent des approbations. Quelle serait la plus appropriée des options suivantes pour concevoir les tableaux:
OPTION 1
Avoir une table d'approbations avec des clés étrangères nulles:
Approbations
- Id PK
- Statut
- OrderId FK NULL
- InvoiceId FK NULL
ApprobationComments
- Id PK
- ApprovalId FK
- Commentaire
Dans ce cas, je devrais ajouter une colonne pour chaque objet qui a besoin d'une approbation
OPTION 2
Avoir une table d'approbations parent avec des champs communs et une table enfant pour chaque objet qui a besoin d'une approbation:
Approbations
- Id PK
- Statut
ApprobationComments
- Id PK
- ApprovalId FK
- Commentaire
Approbations de commande
- ApprovalId PK FK
- OrderId FK
Approbation des factures
- ApprovalId PK FK
- InvoiceId FK
OPTION 3
Ayez une table d'approbations pour chaque objet:
Approbations de commande
- Id PK
- OrderId FK
- Statut
OrderApprovalComments
- Id PK
- OrderApprovalId FK
- Commentaire
Approbation des factures
- Id PK
- InvoiceId FK
- Statut
InvoiceApprovalComments
- Id PK
- InvoiceApprovalId FK
- Commentaire
Je sais que ce sont toutes des solutions valables, mais je ne peux pas décider laquelle serait la meilleure pour ajouter différents types d'approbations à l'avenir. Des pensées?