Différences de clé primaire et étrangère (expliquées visuellement)

Classé dans : Articles | 0

Cet article vous apprendra la différence entre une clé primaire et une clé étrangère. Cet article vous apprendra également pourquoi ces deux clés sont importantes lorsqu’il s’agit de la maintenance d’une structure de base de données relationnelle.

Tous les exemples de cette leçon sont basés sur Microsoft SQL Server Management Studio et la base de données AdventureWorks2012. Vous pouvez commencer à utiliser ces outils gratuits en utilisant mon Guide pour commencer à utiliser SQL Server.

Quelle est la différence entre une Clé Primaire et une Clé Étrangère?,

avant de creuser la différence, explorons d’abord les caractéristiques clés primaires et étrangères. Commençons par en apprendre davantage sur les clés primaires.

clés primaires

pour qu’une table soit considérée comme une table relationnelle, elle doit avoir une clé primaire.

la clé primaire est constituée d’une ou plusieurs colonnes dont les données sont utilisées pour identifier de manière unique chaque ligne du tableau. Vous pouvez les considérer comme une adresse. Si les lignes d’un tableau étaient des boîtes aux lettres, la clé primaire serait la liste des adresses postales.,

Lorsque la clé primaire est composée de plusieurs colonnes, les données de chaque colonne est utilisée pour déterminer si une ligne est unique.

pour être une clé primaire, plusieurs conditions doivent être vraies. Tout d’abord, comme nous l’avons mentionné, les colonnes doivent être uniques. Pour clarifier, nous faisons référence aux données dans les lignes, pas aux noms de colonne eux-mêmes. De plus, aucune valeur dans les colonnes ne peut être vide ou nulle.

lors de la définition d’une table, vous spécifiez la clé primaire. Une table n’a qu’une seule clé primaire et sa définition est obligatoire.

La clé primaire de chaque table est stockée dans un index., L’index est utilisé pour appliquer l’exigence d’unicité. Il permet également aux valeurs de clé étrangère de se référer facilement aux valeurs de clé primaire correspondantes, comme nous l’apprendrons dans la section suivante.

les Clés Étrangères

Une clé étrangère est un ensemble d’une ou plusieurs colonnes dans une table qui fait référence à la clé primaire d’une autre table. Il n’y a pas de code spécial, de configurations ou de définitions de table que vous devez placer pour « désigner” officiellement une clé étrangère.

dans le diagramme ci-dessous, regardez le tableau SalesOrderHeader. La colonne SalesOrderHeader.,CurrencyRateID est une clé étrangère car elle est liée au CurrencyRate.CurrencyRateID. Cette colonne CurrencyRate.CurrencyRateID est la clé primaire de la table CurrencyRate.

Exemple de Clé Étrangère

les Clés Étrangères dans le Cadre de Primaires

Regarde le schéma suivant. Quelle colonne est la clé étrangère?

Valeur de Clé Étrangère Qui fait Partie de PK

Si vous avez dit que c’était PersonPhone.,BusinessEntityID alors vous avez raison. La raison pour laquelle il s’agit d’une clé étrangère est qu’elle fait référence à une clé primaire, Person.BusinessEntityID, sur l’autre table.

par coïncidence, PersonPhone.BusinessEntityID n’est pas seulement une clé étrangère, mais fait également partie de la clé primaire de PersonPhone. La clé primaire de la table PersonPhone est la combinaison de BusinessEntityID, PhoneNumber et PhoneNumberTypeID.

je suis d’accord c’est déroutant, mais il est permis, et pas une mauvaise pratique.

Contrairement aux clés primaires, clés étrangères peuvent contenir des doublons. En outre, il est correct pour eux de contenir des valeurs NULL.,

Les index ne sont pas automatiquement créés pour les clés étrangères; cependant, en tant que DBA, vous pouvez les définir.

Une table peut contenir plus d’une clé étrangère. Dans le tableau PersonPhone pouvez-vous trouver l’autre clé étrangère (voir la réponse à la fin de l’article)?

Trouver des Clés Primaires et Étrangères dans l’Explorateur d’Objets

Lorsque vous utilisez SSMS, vous trouverez toutes sortes d’informations utiles dans l’explorateur d’objets. Vous n’avez pas à creuser profondément pour trouver les clés primaires. Lorsque vous affichez les colonnes d’une table, mais que vous cliquez sur le dossier colonnes, les colonnes de clé primaire ont des clés Or à côté d’elles.,

recherche de clés primaires et étrangères dans L’Explorateur D’objets

de plus, si l’une des clés étrangères est définie dans des contraintes de clés étrangères, que nous allons apprendre dans la section suivante, alors après eux. Ceux-ci sont encerclés en vert dans le diagramme ci-dessus.

contraintes de clé étrangère

certains systèmes de gestion de base de données, tels que SQL Server, vous permettent de configurer des contraintes de clé étrangère. Ceux-ci aident à imposer l’intégrité référentielle., Dans leur forme la plus simple, une contrainte de clé étrangère vous empêche de saisir des valeurs qui ne se trouvent pas dans la clé primaire de la table associée.

en utilisant le premier diagramme comme exemple, vous ne pouvez pas entrer le SalesOrderHeader.CurrencyRateID s’il n’existe pas déjà dans la table CurrencyRate.

ces contraintes entrent en vigueur de plusieurs façons:

  1. elles vous empêchent de changer la valeur de la clé étrangère en une valeur qui n’existe pas dans la clé primaire de la table associée.
  2. ils vous empêchent de supprimer une ligne de la table de clés primaires. Cela vous empêche de créer des enregistrements orphelins., Les dossiers orphelins sont décrits comme des  » dossiers d’enfants sans parents. »
  3. ils vous empêchent d’ajouter une valeur de clé étrangère qui n’existe pas dans la clé primaire.

En résumé, les contraintes imposent la relation entre les tables de clés primaire et étrangère.

comparaison des clés primaires aux clés étrangères

pour résumer, voici une comparaison des clés primaires aux clés étrangères

réponse à la Question: plus tôt, nous vous avons demandé d’identifier l’autre clé étrangère dans la table PersonPhone. La bonne réponse est PhoneNumberTypeID.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *