bonjour,
Je suis en train de créer des tables dans une base de donnée existante.
J'ai une table "Frais" qui va stocker des frais de natures différentes :
soit des frais d'un devis, soit des frais d'une commande...
Je me pose une question sur comment organiser mes tables.
Je pense à 2 solutions :
solution 1 :
le champ TYPE_FRAIS indiquerait si le frais est de type devis ou de type commande. Et le champ CLE_ELEMENT serait la clé étrangère vers une table ou une autre selon le tupe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 [b]FRAIS[/b] CLE_INTERNE_FRAIS int TYPE_FRAIS char(1) CLE_ELEMENT int etc...
solution 2 :
le champ NOM_TABLE_LIEE indiquerait directement le nom de la table liée, càd DEVIS ou COMMANDE. Le champ NOM_CHAMP_CLE_LIE indiquerait le nom du champ qui fait lien, par exemple CLE_INTERNE_COMMANDE.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 [b]FRAIS[/b] CLE_INTERNE_FRAIS int NOM_TABLE_LIEE char(32) NOM_CHAMP_CLE_LIE char(32) CLE_ELEMENT int etc...
D'ailleurs, on pourrait mettre ces deux champs en un seul en indiquant directement NOM_TABLE.NOM_CHAMP, par exemple T_COMMANDE.CLE_INTERNE_COMMANDE.
Il y a aussi la solution de faire une table FRAIS_DEVIS et une autre table FRAIS_COMMANDE, mais bon, si on a un jour un autre type de frais, c'est moins simple à mettre en oeuvre qu'avec une table générique.
En fait, je connais la solution 1, je l'ai déjà utilisé et ça fonctionne assez bien. Mais je suis assez tenté par la solution 2, encore plus générique du fait de métadonnées dans les enregistrements.... La connaissez-vous ? Avez-vous un avis sur la question ?
merci d'avance pour vos avis
Partager