Question

J'ai un problème, ce que j'attends est très courant, mais je ne suis pas sûr de quoi rechercher, comme cela peut être expliqué de différentes manières.

Je concevons une structure de base de données pour la gestion des factures, des produits, des prix, des devises, etc.

Je suis capable de gérer les prix et les noms des produits (ceux-ci devraient changer de temps en temps).

sur les factures, les produits sont ajoutés par quantité, avec réduction, TVA, licornes, écureuils, etc., puis le total de la facture est calculé.

Maintenant, lorsqu'un prix est mis à jour dans la table des produits, la facture n'est pas censée changer. Il doit rester le même pour toujours.

Lorsque vous pensez à cela, cela semble que la liste des produits est une liste d'objets de type de classe, qui décrivent à quoi ressemble un produit. Ou nous pourrions appeler cela un "modèle" ou "base" ou "abstrait", en fonction de l'abstraction que nous pensons.

Les produits ajoutés à la facture sont des "instances", "implémentations", "enfants", "enregistrements de versions" ou ce que nous les appelions.

Comment puis-je structurer cela dans la base de données? Je pourrais les diviser en deux tables différentes "abstractproduct" et "produit", mais ils auraient le plus (éventuellement tous) de leurs colonnes en commun. À cet égard, il semblerait approprié de les maintenir dans la même table. Mais alors j'aurais besoin d'une colonne supplémentaire pour signifier s'il s'agit de "classe" ou "instance". C'est bien aussi. Cela pourrait également être une entreprise d'origine pour la classe, elle a été créée à partir de (ou null pour les classes).

J'ai essayé différentes approches, mais tout semble avoir des mises en garde ennuyeuses.

Est-ce un motif connu? Comment appelle-t-on ceci? Y a-t-il de meilleures pratiques pour résoudre ce problème?

Était-ce utile?

La solution

C'est un motif bien connu.Si vous souhaitez une documentation étendue sur ce sujet, recherchez sur «Base de données temporelle».

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top