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?
14 réponses
-
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 dePerson
. Puisque nous voulons supporter des numéros de téléphone multiples , nous faisons une deuxième tablePhoneNumbers
, dont la clé primaire inclut leperson_id
référençant la tablePerson
.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 dePhoneNumbers
). -
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 deStates.state
.Person
est une table pour enfants en ce qui concerneStates
. Mais une ligne dansPerson
n'est pas identifiée par son attributstate
. C'est-à-dire:state
ne fait pas partie de la clé primaire dePerson
.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
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.
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...
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!!!
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
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 :(
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.
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.
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é.
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.
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.
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é.
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
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