Il s'agit essentiellement d'une question sur les entités faibles. Quand devrions-nous les utiliser? Comment devraient-ils être modélisés?
Quelle est la principale différence entre les entités normales et les entités faibles? Les entités faibles correspondent-elles à des objets de valeur lors de la conception pilotée par domaine?
Pour aider à garder la question sur le sujet, voici un exemple tiré de Wikipedia que les gens peuvent utiliser pour répondre à cette question:
Dans cet exemple, a OrderItem
été modélisé comme une entité faible, mais je ne comprends pas pourquoi il ne peut pas être modélisé comme une entité normale.
Une autre question est de savoir si si je veux suivre l'historique des commandes (c'est-à-dire les changements dans son état), serait-ce une entité normale ou faible?
OrderItem
dépendOrder
car aucun neorderItems
peut exister sans appartenir à unorder
, mais je ne vois pas pourquoi je ne peux pas utiliserItemLineNumber
pour identifier uniquement un article?! En fait, je pourrais simplement faireItemLineNumber
une génération automatiqueint
pour assurer l'unicité et utiliser une clé étrangèreorderID
pour lier les deux entités ensemble?!Un
OrderItem
ne peut exister sans une commande ou un produit. Par conséquent, il est faible car ses dépendances le contrôlent.Si vous supprimez par exemple la commande, vous n'avez aucun moyen de savoir où l'article doit être expédié. Ou si vous retirez le produit, vous ne savez pas quoi expédier.
la source
Selon ma compréhension dans le diagramme ci-dessus, ils ont inclus les deux entités / tableaux au lieu d'un, c'est-à-dire les commandes et le poste de commande, de sorte que l'accès aux informations devient facile lorsque deux entités sont conçues. Et le poste de commande dépend de l'entité des commandes, il est donc considéré comme une entité faible. parce que la caractéristique d'une entité faible est qu'elle dépend d'une autre entité. Supposons que si vous n'incluez pas d'entité d'article de commande, comment pourrez-vous connaître le prix, la remise de l'article de commande. et comme l'a dit jgauffin Si vous supprimez par exemple la commande, vous n'avez aucun moyen de savoir où l'article doit être expédié. Ou si vous retirez le produit, vous ne savez pas quoi expédier.
Le diagramme ER doit être conçu en fonction des besoins de l'entreprise.
la source
Voir, une commande a de nombreux articles de commande (attribut à plusieurs valeurs). Ainsi, selon la règle, nous créons une table séparée.
Maintenant, disons que 2 clients ont la même commande. Par exemple, les deux achètent l'iPhone au même prix, remise, même date, etc. Donc, idéalement, il devrait y avoir deux tuples exacts pour la commande de l'iPhone en relation d'ordre. Mais selon la contrainte d'une relation, tous les tuples doivent être uniques. Permet donc de relier deux commandes au même problème item_line_number.no jusqu'à maintenant. Considérons maintenant l'un des annulations du client. Est-ce que l'iPhone est en ordre? Le tuple item_line_number sera également supprimé. Désormais, les autres clients qui ont acheté un iPhone sont également supprimés en raison de la correspondance M: 1. Donc, finalement, la base de données est incohérente. C'est pourquoi nous utilisons une clé de descripteur qui sera commandée. Ainsi, la suppression d'un iPhone commandé ne provoque pas de corruption de la base de données.
la source