Je n’ai pas été en mesure de bien saisir les différences. Pouvez-vous décrire les deux concepts et utiliser des exemples du monde réel ?
Réponses
Trop de publicités?-
Une identification de la relation , c'est quand l'existence d'une ligne dans une table enfant dépend d'une ligne dans une table parent. Cela peut être source de confusion car il est pratique courante de nos jours pour créer un pseudokey pour une table d'enfant, mais de ne pas faire de la clé étrangère à la mère de l'enfant de la clé primaire. Officiellement, la "bonne" façon de faire cela est de faire de la clé étrangère de l'enfant est la clé primaire. Mais la logique de la relation, c'est que l'enfant ne peut pas exister sans les parents.
Exemple: Un
Person
a un ou plusieurs numéros de téléphone. Si ils avaient juste un numéro de téléphone, nous pourrions simplement les stocker dans une colonne d'Person
. Puisque nous voulons en charge plusieurs numéros de téléphone, nous faisons un deuxième tableauPhoneNumbers
, dont la clé primaire comprend l'person_id
référencement l'Person
table.On peut penser au numéro de téléphone(s) comme appartenant à une personne, même s'ils sont modélisés comme des attributs d'une table distincte. C'est une bonne indication que c'est une identification relation (même si nous n'avons pas littéralement comprennent
person_id
dans la clé primaire de l'PhoneNumbers
). -
Une non-identification de la relation , c'est quand la clé primaire attributs de la société mère ne doit pas devenir la clé primaire attributs de l'enfant. Un bon exemple de ceci est une table de recherche, comme une clé étrangère sur
Person.state
référencement la clé primaire de l'States.state
.Person
est une table d'enfant à l'égardStates
. Mais une ligne enPerson
n'est pas identifié par sonstate
d'attribut. I. e.state
n'est pas une partie de la clé primaire de l'Person
.Une non-identification de la relation peut être facultatif ou obligatoire, ce qui signifie que la colonne de clé étrangère permet à la valeur NULL ou n'autorise pas la valeur NULL, respectivement.
Voir aussi ma réponse à Toujours Confus au Sujet de l'Identification ou Non, l'Identification des Relations
Une relation d’identification spécifie qu’un objet enfant ne peut pas exister sans l’objet parent
Non-identifiée relations spécifie une liaison régulière entre objets, 1:1 ou 1 : n cardinalité.
Relations non signalétiques peuvent être spécifiées comme étant facultatives lorsqu’un parent n’est pas nécessaire ou obligatoire lorsqu’un parent est requise en définissant le parent cardinalité de table...
Voici une bonne description:
Les relations entre les deux entités peuvent être considérés comme étant soit "identifiant" ou "non-identification". L'identification des relations existent lorsque la clé primaire de l'entité mère est inclus dans la clé primaire de l'entité enfant. D'autre part, une non-identification de la relation existe lorsque la clé primaire de l'entité mère est incluse dans l'entité enfant mais ne faisant pas partie de l'entité enfant de la clé primaire. En outre, la non-identification de relations peuvent être classés comme étant soit "obligatoire" ou "non obligatoire". Obligatoire, la non-identification de la relation qui existe lorsque la valeur dans la table enfant ne peut pas être null. D'autre part, un non-obligatoire de la non-identification de la relation qui existe lorsque la valeur dans la table enfant peut être null.
http://www.sqlteam.com/article/database-design-and-modeling-fundamentals
Voici un exemple simple d'une identification de la relation:
Parent
------
ID (PK)
Name
Child
-----
ID (PK)
ParentID (PK, FK to Parent.ID) -- notice PK
Name
Voici un correspondant non-identification de la relation:
Parent
------
ID (PK)
Name
Child
-----
ID (PK)
ParentID (FK to Parent.ID) -- notice no PK
Name
L'identification et la Non-Identification des Relations
Une identification de la relation de l'enfant tableau ne peut pas être identifié de manière unique, sans les parents. Par exemple, vous avez cette situation à l'intersection de la table utilisée pour résoudre un plusieurs-à-plusieurs relation où l'intersection de la table de Clé Primaire est un composite de gauche et de droite (les parents) de la table de Clés Primaires. Par exemple:
Account(AccountID, AccountNum, AccountTypeID)
PersonAccount(AccountID, PersonID, Balance)
Person(PersonID, Name)
Le Compte à PersonAccount de la relation et de la Personne à PersonAccount relation à identifier parce que la ligne enfant (PersonAccount) ne peut pas exister sans avoir été défini dans le parent (Compte ou de la Personne). En d'autres termes: il n'y a pas de PersonAccount quand il n'y a pas de Personne ou quand il n'y a pas de Compte.
Une non-identification d'une relation où l'enfant peut être identifié de manière indépendante de la société mère. Par exemple (Compte - AccountType):
Account(AccountID, AccountNum, AccountTypeID)
AccountType( AccountTypeID, Code, Name, Description)
La relation entre le Compte et AccountType est la non-identification, car chaque AccountType peuvent être identifiés sans avoir à exister dans la table parent.
Vous pouvez définir le type de relation (identification/non identifier) dans le DeZign pour les Bases de données dans la relation de dialogue. Double-cliquez sur la ligne de relation dans le schéma de la fenêtre pour afficher la relation de dialogue.