Bonjour,
Je termine un logiciel de facturation avec bons de livraison et factures. Ce travail est fait avec DELPHI 7 et Firebird.
Or, je me pose une question concernant les clés étrangères.
J’ai trois tables TB_LIG, TB_BON et TB_FACT, TB_BON et relié à TB_FACT par une clé étrangère, c'est-à-dire :
TB_LIG(PK_LIG, FK_BON, Autres)
TB_BON(PK_BON, FK_FACT, Autres)
TB_FACT(PK_FACT, DATE_FACT, NO_FACT, Autres)
Aucun souci avec la liaison TB_LIG et TB_BON
Par contre, lorsque le bon est émis, je ne connais pas le n° de la facture. Je suis obligé de mettre la clé étrangère FK_FACT à 0 ou NULL. C’est seulement au moment de la facturation que la clé étrangère sera reliée à la facture émise.
Or, la mise à zéro d’une clé étrangère fait que j’aurai des lignes orphelines dans la table TB_BON jusqu’à l’émission de la facture.
Je voudrais savoir :
- Cette approche est-elle la bonne ? Sinon, comment la modifier.
- La traduction en SQL pour éviter que des bons de livraison ne soient jamais facturés.
- Le contrôle des bons en attente de facturation doit-il se faire dans le programme et non dans la base de données ?
Mon MCD et MPL font bien état d’une situation de clé étrangère à zéro ou NULL lorsque le bon est attente de facturation.
J’espère qu’une âme charitable pourra m’enlever mes doutes et me donner des conseils judicieux.
Partager