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, OrderItem
a é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?
Formellement, une entité "faible" a les caractéristiques suivantes.
1. It is existence-dependent on another entity, i.e.,
it cannot exist without the entity with which it has a relationship.
2. It inherits at least part of it's primary key from the entity to which
it is related.
i.e. -> A weak entity's primary key must be a composite key that includes
the primary key of the entity on which it is existence-dependent.
Je dirais que dans la pratique, vous ne feriez pas ouvertement décider pour faire de quelque chose une entité "faible" en soi; vous structureriez plutôt les données pour qu'elles soient représentatives de tout ce que vous essayez de modéliser. Si, après avoir fait cela, vous regardez une entité particulière et qu'elle a les caractéristiques d'une entité "faible", vous pouvez la documenter ou la représenter en conséquence si, pour une raison quelconque, vous ressentez le besoin de l'appeler explicitement ou pour le bien de formalité.
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.