web-dev-qa-db-fra.com

ERD: "plusieurs" vs "zéro ou plusieurs" / "un ou plusieurs" notation crowfoot?

Contexte
J'ai vu cette figure décrivant les différentes notations crowfoot utilisées dans ERD: enter image description here
Je ne parviens pas à trouver la différence entre la notation "plusieurs" et le "zéro ou plusieurs". Cependant, j'ai pu trouver un exemple ( voir en bas à gauche pour la notation "plusieurs") :
enter image description here ( source )


Question
Quand utiliser la notation "plusieurs" et quelle est la différence entre cette notation et la notation "zéro ou plusieurs" et "un ou plusieurs".

11
KingBoomie

Les 2 premières relations, One et Many, ont un non spécifié inférieur lié. Ainsi, lorsque vous les utilisez, vous laissez une ambiguïté quant à leur caractère obligatoire ou facultatif.

Cette ambiguïté est utile en modélisation, afin de faire face à une ou plusieurs des circonstances suivantes:

  • la borne inférieure peut être temporairement indéfinie, par exemple pendant la phase de conception, lorsque toutes les règles métier ne sont pas encore claires.
  • la borne inférieure n'est pas pertinente, par exemple parce que c'est une décision qui peut être prise plus tard, lors de la configuration du logiciel et conformément aux règles métier (par exemple, définition ad hoc d'une contrainte not null dans la base de données, ou exécutez paramètre de temps qui définit si le code d'application doit accepter la situation ou non.
  • pour éviter une anxiété inutile en cas de divergence entre le modèle théorique et la pratique d'application. En règle générale, c'est le cas pour votre relation shipment à item: dans la vie réelle, vous vous attendez à ce qu'un envoi contienne au moins 1 article (les gens n'aiment généralement pas envoyer vide des boites!). Donc, dans le modèle, vous vous attendez à ce que one or many. Mais de l'autre côté de votre demande, vous pourriez très bien décider de créer un envoi en deux étapes: vous créez un envoi vide dans le bureau des ventes, puis vous ajoutez les articles (avec un lecteur de code-barres dans l'atelier). L'application et la base de données doivent donc gérer les envois qui peuvent être temporairement vides.

Le dernier cas se produit beaucoup plus que ce à quoi on s'attend habituellement. Garder la borne inférieure non spécifiée, a donc l'avantage de forcer dba et les développeurs à garder la moindre contrainte (ie 0 ou beaucoup dans la pratique d'application), sans contredire l'hypothèse théorique (ie 1 à beaucoup, car au final, aucune expédition ne part l'usine vide).

11
Christophe

Je pense que les gens les utilisent juste au moment où ils ne se soucient pas assez d'être précis.

Personnellement, j'évite complètement les deux premiers exemples de votre liste.

Pour votre exemple, je suppose - d'après le contexte - que les expéditions ont un seul et un seul expéditeur, et que les articles existent en une seule et unique expédition, et que les fournisseurs peuvent avoir de zéro à plusieurs expéditions.

4
Darien

J'utilise généralement le -< notation "plusieurs" lors de l'écriture rapide sur un tableau blanc. C'est utile parce que nous essayons juste d'esquisser une idée générale. L'imprécision est parfois utile à ce stade.

La différence entre "plusieurs" et "zéro ou plusieurs" et "un ou plusieurs" ...

  • "beaucoup" -< est en fait la même chose que "0 ou plusieurs" car nous ne pouvons pas supposer une borne inférieure non indiquée. C'est évident ou vague selon la façon dont votre équipe le comprend.

  • "zéro ou plusieurs" -0< est spécifique. Cela signifie le nombre d'entités liées> = 0.

  • "un ou plusieurs" -|< signifie le nombre d'entités liées> 0.

btw: Le "un" -|- la notation est explicite. Cela signifie exactement un et est relativement peu fréquent à utiliser. Si vous voulez écrire une version vague de "one" vous écrivez une ligne -- sans aucun symbole à la fin.

C'est un peu comme le baseball de terrain de jeu. C'est comme ça que ça se joue dans mon quartier. Existe-t-il un comité ISO pour cela? On s'en soucie vraiment?

3
joshp

Tu as demandé:

Quand utiliser plusieurs notations?

La DRE doit refléter la conception et les exigences commerciales que vous avez décidé de mettre en œuvre en tant que règles SGBDR.

À titre d'exemple tiré de la DRE que vous avez fournie, Un envoi comprend de NOMBREUS line_items. Étant donné que les deux parties sont obligatoires, cela signifie que:

1-Dans la conception physique, il y aurait FK d'ID d'expédition dans le tableau des articles.

2-Cette colonne FK ne peut pas autoriser les null. Cela rend obligatoire de référencer un envoi existant avant d'insérer un line_item dans la table Item.

3-Par conséquent, votre table d'expédition doit inclure la ligne souhaitée avant l'insertion d'un élément de campagne.

Tu as demandé:

quelle est la différence entre cette notation et la notation "zéro ou plusieurs" et "un ou plusieurs".

Votre diagramme ne fournit pas un cas facile à utiliser pour expliquer celui-ci.

Lorsque vous avez une relation un-plusieurs, cela signifie qu'un PK de la table du côté Un de la relation sera créé et jouera le rôle de FK dans le côté plusieurs de la relation. Tout comme l'exemple précédent. La différence est que lorsque vous avez "zéro ou plusieurs", il s'agit en fait de "zéro, 1 ou plusieurs", ce qui signifie que dans certaines conditions commerciales, votre application est autorisée à insérer une ligne dans la table d'expédition même si aucun élément ne fait référence à ce expédition particulière.

Contrairement au cas précédent, le FK est créé dans la table Item comme Nullable (autorise les null).

0
NoChance