Quelle est la différence entre les relations identifiantes et non identifiables?

Je n'ai pas été capable de saisir pleinement les différences. Pouvez-vous décrire les deux concepts et utiliser des exemples concrets?

715
demandé sur Robert Harvey 2009-04-18 09:04:55
la source

14 ответов

  • An identification relationship est lorsque l'existence d'une rangée dans une table d'enfant dépend d'une rangée dans une table de parent. Cela peut prêter à confusion parce qu'il est pratique courante de nos jours de créer un pseudokey pour une table enfant, mais pas faire de la clé étrangère au parent une partie de la clé primaire de l'enfant. Officiellement, la "bonne" façon de faire cela est de faire de la clé étrangère de l'enfant est la clé primaire. Mais l' relation logique est que l'enfant ne peut pas exister sans les parents.

    Exemple: Un Person a un ou plusieurs numéros de téléphone. S'ils n'avaient qu'un numéro de téléphone, nous pourrions simplement le stocker dans une colonne de Person . Puisque nous voulons supporter des numéros de téléphone multiples , nous faisons une deuxième table PhoneNumbers , dont la clé primaire inclut le person_id référençant la table Person .

    nous pouvons penser au(X) Numéro (s) de téléphone comme appartenant à une personne, même si elles sont modélisées comme attributs d'une table séparée. C'est un indice fort qu'il s'agit d'une relation d'identification (même si nous n'incluons pas littéralement person_id dans la clé primaire de PhoneNumbers ).

  • Un non-identification de la relation est lorsque la clé primaire attributs de la mère ne doit pas devenir la clé primaire attributs de l'enfant. Un bon exemple de ce est une table de recherche, telle qu'une clé étrangère sur Person.state faisant référence à la clé primaire de States.state . Person est une table pour enfants en ce qui concerne States . Mais une ligne dans Person n'est pas identifiée par son attribut state . C'est-à-dire: state ne fait pas partie de la clé primaire de Person .

    une relation non identifiable peut être facultative ou obligatoire , ce qui signifie la colonne de la clé étrangère permet respectivement nul ou non nul.


Voir aussi ma réponse à toujours confus au sujet des relations D'identification et Non-identification

958
répondu Bill Karwin 2017-05-23 15:26:36
la source

il y a une autre explication du monde réel:

Un livre appartient à un propriétaire, et un propriétaire peut posséder plusieurs livres. Mais, le livre peut exister sans que le propriétaire et la propriété de celui-ci peut changer d'un propriétaire à un autre. La relation entre un livre et son propriétaire est une relation non identifiable.

Un livre, cependant, est écrit par un auteur, et l'auteur peut avoir écrit plusieurs livres. Mais, le livre doit être écrit par un auteur - il ne peut pas exister sans un auteur. Par conséquent, la relation entre le livre et l'auteur est une relation d'identification.

829
répondu Dennis 2017-05-10 19:04:29
la source

une relation D'identification spécifie qu'un objet enfant ne peut pas existe sans l'objet parent

Non-identification des relations spécifie un régulier de l'association entre les objets, cardinalité 1:1 ou 1:n.

les relations non identifiables peuvent être spécifiées comme facultatives lorsqu'un parent n'est pas obligatoire ou obligatoire lorsqu'un parent est requis en cardinalité de la table des parents...

20
répondu CMS 2009-04-18 09:45:23
la source

la réponse de Bill est correcte, mais c'est choquant de voir que parmi toutes les autres réponses personne ne souligne l'aspect le plus significatif.

il est dit encore et encore, que dans et identifier la relation l'enfant ne peut pas exister sans le parent. (par exemple user287724 ). C'est vrai, mais complètement à côté du point. Il suffirait que la clé étrangère soit non-null , pour y parvenir. Il n'a pas besoin d'être partie de la clé primaire.

alors voici la vraie raison:

le but d'une relation d'identification est que la clé étrangère ne peut jamais changer , parce qu'elle fait partie de la clé primaire... donc identification!!!

15
répondu Daniel Dinnyes 2017-11-04 22:26:15
la source

Voici une bonne description:

les relations entre deux entités peuvent être classées comme" identifiables "ou"non identifiables". L'identification des relations existent lorsque la clé primaire de l'entité mère est inclus dans la clé primaire de l'entité enfant. Par contre, il existe une relation non identificatrice lorsque la clé primaire de l'entité mère est incluse dans l'entité enfant, mais non dans la clé primaire de l'entité enfant. Outre, les relations non identifiables peuvent être classées comme étant soit "obligatoires", soit "non obligatoires". Une relation de non-identification obligatoire existe lorsque la valeur dans la table enfant ne peut pas être nulle. Par contre, il existe une relation de non-identification non obligatoire lorsque la valeur de la table enfant peut être nulle.

http://www.sqlteam.com/article/database-design-and-modeling-fundamentals

voici un exemple simple d'une relation d'identification:

Parent
------
ID (PK)
Name

Child
-----
ID (PK)
ParentID (PK, FK to Parent.ID) -- notice PK
Name

Voici une relation correspondante non identifiable:

Parent
------
ID (PK)
Name

Child
-----
ID (PK)
ParentID (FK to Parent.ID) -- notice no PK
Name
13
répondu Andy White 2009-04-18 09:51:23
la source

comment user287724 deuxième réponse exemple du livre et de l'auteur de la relation de a obtenu 576 vote ups?!!! , comme il est dit:

un livre est cependant écrit par un auteur, et l'auteur aurait pu écrire plusieurs livres. Mais le livre doit être écrit par un auteur il ne peut pas exister sans un auteur. Par conséquent, la relation entre le livre et l'auteur est une relation d'identification.

c'est un exemple très confus et est certainement pas un exemple valide pour un identifying relationship .

je comprends enfin la différence entre les deux relations : (, alors s'il vous plaît ne me confondez pas avec ce nombre de votes ups!!


oui, un livre ne peut pas être écrit sans au moins un auteur, mais l'auteur(c'est la clé étrangère) du livre est ne pas identifier le livre dans la table des livres!

vous pouvez supprimer l'auteur (FK) de la rangée de livres et peut encore identifier la rangée de livres par un autre champ (ISBN, ID, ...etc), mais pas l'auteur du livre!!

je pense qu'un exemple valable de identifying relationship serait la relation entre (tableau des produits) et a (tableau des détails spécifiques du produit) 1:1

"
products table
+------+---------------+-------+--------+
|id(PK)|Name           |type   |amount  |
+------+---------------+-------+--------+
|0     |hp-laser-510   |printer|1000    |
+------+---------------+-------+--------+
|1     |viewsonic-10   |screen |900     |
+------+---------------+-------+--------+
|2     |canon-laser-100|printer|200     |
+------+---------------+-------+--------+

printers_details table
+--------------+------------+---------+---------+------+
|Product_ID(FK)|manufacturer|cartridge|color    |papers|
+--------------+------------+---------+---------+------+
|0             |hp          |CE210    |BLACK    |300   |
+--------------+------------+---------+---------+------+
|2             |canon       |MKJ5     |COLOR    |900   |
+--------------+------------+---------+---------+------+
* please note this is not real data

dans cet exemple le Product_ID dans la table printers_details est considéré comme un FK Références la table products.id et aussi un PK dans la table printers_details , il s'agit d'une relation d'identification parce que le Product_ID(FK) dans la table d'impression identifie la ligne à l'intérieur de la table d'enfant , nous ne pouvons pas enlever le product_id de la table d'enfant parce que nous ne pouvons pas identifier la ligne plus parce que nous avons perdu sa clé primaire

si vous voulez mettez-le en 2 lignes:

une relation d'identification est la relation lorsque le FK dans le la table enfant est considérée comme un PK (ou un identificateur) dans la table enfant tandis que fait encore référence à la table mère

un autre exemple peut être lorsque vous avez 3 tableaux (importations-produits-pays) dans une base de données sur les importations et les exportations de certains pays

le tableau import est l'enfant qui a ces champs (the product_id(FK), the country_id(FK) , the amount of the imports , the price , the units imported , the way of transport(air, sea) ) nous pouvons utiliser le (product_id, le country_id) pour identifier chaque ligne des importations "si elles sont toutes dans la même année" ici les deux colonnes peuvent composer ensemble une clé primaire dans la table enfant(importations) et y référencement des tables mères.

s'il vous plaît je suis heureux d'enfin comprendre le concept de la identifying relationship et non identifying relationship :(( , donc merci de ne pas me dire que je suis mal avec toutes ces voix ups pour un exemple complètement invalide

oui, logiquement, un livre ne peut pas être écrit sans un auteur, mais un livre peut être identifié sans que l'auteur,En fait, il ne peut pas être identifié avec l'auteur!

vous pouvez 100% supprimer l'auteur du livre ligne et ne peut toujours identifier le livre !!! , s'il vous plaît ne me dites pas que j'ai mal compris le concept :(

8
répondu Accountant م 2016-09-05 11:33:03
la source

Non-identification de la relation

une relation non identifiable signifie qu'un enfant est apparenté à un parent, mais qu'il peut être identifié par lui-même.

PERSON    ACCOUNT
======    =======
pk(id)    pk(id)
name      fk(person_id)
          balance

la relation entre le compte et la personne n'est pas identifiable.

relation D'identification

une relation d'identification signifie que le parent est nécessaire pour donner l'identité enfant. L'enfant seul qui existe à cause de parent.

Cela signifie que la clé étrangère est une clé primaire.

ITEM      LANGUAGE    ITEM_LANG
====      ========    =========
pk(id)    pk(id)      pk(fk(item_id))
name      name        pk(fk(lang_id))
                      name

la relation entre ITEM_LANG et ITEM est identifiable. Et entre ITEM_LANG et LANGUAGE aussi.

7
répondu Skarllot 2014-05-22 18:31:57
la source

la relance de l'identification signifie que l'entité enfant est totalement dépendante de l'existence de l'entité mère. Exemple table de Compte table des personnes et compte des personnes.La table de compte de personne est identifiée par l'existence de Compte et la table de personne seulement.

la relation de non-identification signifie que la table enfant n'est pas identifiée par l'existence de la table parent. exemple il y a table comme account type et account.le tableau de type de Compte n'est pas identifié avec existence d'une table de Compte.

3
répondu chanchal dixit 2011-04-01 22:47:45
la source

si vous considérez que l'élément enfant doit être supprimé lorsque le parent est supprimé, alors il s'agit d'une relation d'identification.

si l'élément enfant doit être conservé même si le parent est supprimé, il s'agit alors d'une relation non identifiable.

par exemple, j'ai une base de données de formation avec des stagiaires, des formations, des diplômes et des sessions de formation:

  • les stagiaires ont un lien d'identification avec la formation des séances de
  • les formations ont un rapport d'identification avec les sessions de formation
  • mais les stagiaires n'ont pas de lien d'identification avec les diplômes

seules les sessions de formation doivent être supprimées si l'un des stagiaires, la formation ou le diplôme correspondant est supprimé.

3
répondu Daishi 2015-04-24 10:28:47
la source

Ne attributs migrés à partir de parent à enfant identifier 1 l'enfant?

  • si Oui : l'identification-dépendance existe, la relation s'identifie et l'entité enfant est "faible".
  • si et non : la relation identification-dépendance n'existe pas, la relation n'est pas identifiable et l'entité enfant est"forte".

notez que l'identification-dépendance implique l'existence-dépendance, mais pas l'inverse. Chaque FK non nul signifie qu'un enfant ne peut exister sans parent, mais cela ne suffit pas pour que la relation s'identifie.

pour en savoir plus (et quelques exemples), consultez la section" Identifying Relationships "du ERwin Methods Guide .

je me rends compte que je suis (extrêmement) en retard à la fête, mais j'ai le sentiment que d'autres réponses ne sont pas tout à fait exactes (La définir en termes d'existence-dépendance au lieu d'identification-dépendance), ou quelque peu méandreuses. Espérons que cette réponse apporte plus de clarté...


1 le FK de l'enfant fait partie de la contrainte clé primaire ou (non-nulle) UNIQUE de l'enfant.

2
répondu Branko Dimitrijevic 2018-01-21 10:25:36
la source

le traitement des commandes en est un bon exemple. Une commande d'un client a généralement un numéro de commande qui identifie la commande, certaines données qui se produit Une fois par commande tels que la date de la commande et L'identification du client, et une série d'articles de ligne. Chaque article de ligne contient un numéro d'article qui identifie un article de ligne dans une commande, un produit commandé, la quantité de ce produit, le prix du produit, et le montant pour l'article de ligne, qui pourrait être calculé en multipliant la quantité par le prix.

le numéro qui identifie un article d'exécution ne l'identifie que dans le contexte d'une seule commande. Le premier article de chaque ordre est le numéro d'article "1". L'identité complète d'un élément de ligne est le numéro de l'élément avec le numéro de commande auquel il est partie.

la relation parent-enfant entre les commandes et les articles d'exécution est donc une relation d'identification. Un concept étroitement lié dans la modélisation ER va par le nom "subentity", où l'article de ligne est une subentity de l'ordre. En général, une sous-entité a une relation d'identité enfant-parent obligatoire avec l'entité à laquelle elle est subordonnée.

dans la conception classique de base de données, la clé primaire de la table LineItems serait (OrderNumber, ItemNumber). Certains designers d'aujourd'hui donneraient à un article un ItemID distinct, qui sert de clé primaire, et est mis en place par le SGBD. Je recommande la conception classique dans ce cas.

1
répondu Walter Mitty 2009-04-19 16:07:51
la source

disons que nous avons ces tables:

user
--------
id
name


comments
------------
comment_id
user_id
text

relation entre ces deux tableaux permettra d'identifier la relation. Parce que, les commentaires ne peuvent appartenir qu'à son propriétaire, pas à d'autres utilisateurs. exemple. Chaque utilisateur dispose de son propre commentaire, et lorsque l'utilisateur est supprimé, c'commentaires de l'utilisateur doit également être supprimé.

0
répondu Sarvar Nishonboyev 2014-08-06 16:47:38
la source

comme il est bien expliqué dans le lien ci-dessous, une relation d'identification est un peu comme une relation de type d'entité faible par rapport à sa société mère dans le modèle conceptuel ER. Les DAC de style UML pour la modélisation de données n'utilisent pas de symboles ou de concepts ER, et les types de relations sont: identifying, non-identifying et non-specific.

les identifiants sont des relations parent / enfant où l'enfant est une sorte d'entité faible (même dans le Modèle ER traditionnel sa appelé relation d'identification), qui n'a pas de véritable clé primaire par ses propres attributs et ne peut donc pas être identifiée uniquement par ses propres. Chaque accès à la table de l'enfant, sur le modèle physique, dépendra (y compris sémantiquement) de la clé primaire du parent, qui se transforme en partie ou en totalité de la clé primaire de l'enfant (également être une clé étrangère), résultant généralement en une clé composite du côté de l'enfant. Les éventuelles clés existantes de l'enfant lui - même ne sont que des pseudo-ou des partielles-clés, pas suffisantes pour identifier toute instance de ce type D'ensemble D'entités ou D'entités, sans le PK de la société mère.

Non-identification de la relation sont l'ordinaire des relations (partielle ou totale), totalement indépendant de l'entité fixe, dont les instances ne dépendent pas les uns des autres clés primaires à être identifié de manière unique, même si ils peuvent avoir besoin de clés étrangères partielle ou totale des relations, mais pas en tant que clé primaire de l'enfant. L'enfant dispose de sa propre clé primaire. The parent idem. À la fois de façon indépendante. Selon la cardinalité de la relation, le PK de l'un va comme un FK À l'autre (côté N), et si partiel, peut être nul, si total, ne doit pas être nul. Mais, dans une relation comme celle-ci, le FK ne sera jamais aussi le PK de l'enfant, comme lorsqu'une relation d'identification est le cas.

http://docwiki.embarcadero.com/ERStudioDA/XE7/en/Creating_and_Editing_Relationships

0
répondu Daniel Pinheiro 2016-02-10 08:20:14
la source

une relation d'identification est entre deux entités fortes. Une relation non identificatrice n'est pas toujours une relation entre une entité forte et une entité faible. Il peut exister une situation où un enfant lui-même a une clé primaire, mais l'existence de son entité peut dépendre de son entité mère.

Par exemple : une relation entre un vendeur et un livre où un livre est vendu par un vendeur peut exister lorsque le vendeur peut avoir sa propre clé primaire, mais son entité n'est créé que lors de la vente d'un livre

référence basée sur Bill Karwin

0
répondu sp1rs 2016-05-13 02:24:28
la source

Autres questions sur database database-design data-modeling