web-dev-qa-db-fra.com

Quand devrions-nous utiliser des entités faibles lors de la modélisation d'une base de données?

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: enter image description here

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?

12
Songo

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é.

10
Ed Hastings

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.

1
jgauffin