Que sont les clés étrangères dans les bases de données SQL ?

Que sont les clés étrangères dans les bases de données SQL ?

Les clés étrangères permettent aux administrateurs de base de données d'identifier facilement les différentes connexions qui existent au sein d'un système de gestion de base de données SQL.





SQL effectue des opérations mathématiques sur les données au sein d'un système de gestion de base de données. Ces bases de données contiennent différentes tables qui stockent chacune des données sur une entité spécifique. Si vous avez une base de données de location de voitures, une entité (ou une table) dans cette base de données sera les clients (qui stockeront toutes les données personnelles sur chaque client).





Ces tables de base de données contiennent des lignes et des colonnes, où chaque ligne héberge un enregistrement et chaque colonne contient des données spécifiques aux attributs.





Dans un système de gestion de base de données, chaque enregistrement (ou ligne) doit être unique.

Clés primaires

Bien que la stipulation soit que chaque enregistrement d'une table doit être distinct, ce n'est pas toujours le cas. En continuant avec l'exemple de la base de données de location de voitures, si la base de données contient deux clients qui portent chacun le nom de John Brown, on pourrait s'attendre à ce qu'un John Brown retourne une Mercedes-Benz qu'il n'a pas louée.



La création d'une clé primaire atténuera ce risque. Dans un système de gestion de base de données SQL, une clé primaire est un identifiant unique qui distingue un enregistrement d'un autre.

comment ajouter un homebrew sur wii

Par conséquent, chaque enregistrement dans un système de gestion de base de données SQL doit avoir une clé primaire.





Utilisation de clés primaires dans une base de données

Pour inclure des clés primaires dans un système de gestion de base de données utilisant SQL, vous pouvez simplement l'ajouter en tant qu'attribut normal lors de la création d'une nouvelle table. Ainsi, la table des clients contiendra quatre attributs (ou colonnes) :

  • CarOwnerID (qui stockera la clé primaire)
  • Prénom
  • Nom de famille
  • Numéro de téléphone

En rapport: Comment créer une table en SQL





Désormais, chaque fiche client qui entre dans la base de données aura un numéro d'identification unique, ainsi qu'un prénom, un nom et un numéro de téléphone. Le numéro de téléphone n'est pas assez unique pour être une clé primaire, car bien qu'il soit unique à une personne à la fois, une personne peut facilement changer son numéro, ce qui signifie qu'il appartiendrait désormais à quelqu'un d'autre.

Un enregistrement avec un exemple de clé primaire

/* creates a new record in the customers table */
INSERT INTO Customers VALUES
('0004',
'John',
'Brown',
'111-999-5555');

Le code SQL ci-dessus ajoutera un nouvel enregistrement au préexistant Les clients table. Le tableau ci-dessous montre la nouvelle table des clients avec les deux enregistrements John Brown.

La clé étrangère

Maintenant, vous disposez de clés primaires qui distinguent de manière unique un locataire de voiture d'un autre. Le seul problème est que, dans la base de données, il n'y a pas de lien réel entre chaque John Brown et la voiture qu'il loue.

Par conséquent, la possibilité de faire une erreur existe toujours. C'est là que les clés étrangères entrent en jeu. L'utilisation d'une clé primaire pour résoudre le problème d'ambiguïté de propriété n'est réalisable que si la clé primaire sert également de clé étrangère.

Qu'est-ce qu'une clé étrangère ?

Dans un système de gestion de base de données SQL, une clé étrangère est un identifiant unique ou une combinaison d'identifiants uniques qui connectent deux ou plusieurs tables dans une base de données.

Des quatre systèmes de gestion de base de données SQL existants, le système de gestion de base de données relationnelle est le plus populaire. Lorsque vous décidez quelle table d'une base de données relationnelle doit avoir une clé étrangère, vous devez d'abord identifier quelle table est le sujet et quel est l'objet dans leur relation.

Pour revenir à la base de données de location de voitures, pour connecter chaque client à la bonne voiture, vous devrez comprendre qu'un client (le sujet) loue une voiture (l'objet). Par conséquent, la clé étrangère doit se trouver dans la table des voitures.

Le code SQL qui génère une table avec une clé étrangère est légèrement différent de la norme.

Exemple de création d'une table avec une clé étrangère

/* creates a new cars table in the car rental database */
CREATE TABLE Cars
(
LicenseNumber varchar(30) NOT NULL PRIMARY KEY,
CarType varchar(30) NOT NULL,
CustomerID varchar(30) FOREIGN KEY REFERENCES Customers(CustomerID)
);

Comme vous pouvez le voir dans le code ci-dessus, une clé étrangère doit être explicitement identifiée en tant que telle, avec une référence à la clé primaire qui est connectée à la nouvelle table.

comment faire battre un piège dans garageband

En rapport: L'aide-mémoire des commandes SQL essentielles pour les débutants

Pour ajouter un enregistrement à la nouvelle table, vous devez vous assurer que la valeur du champ de clé étrangère correspond à la valeur du champ de clé primaire de la table d'origine.

Exemple d'ajout d'un enregistrement avec une clé étrangère

/* creates a new record in the cars table */
INSERT INTO Cars VALUES
('100012',
'Mercedes-Benz',
'0004');

Le code ci-dessus crée un nouvel enregistrement dans le nouveau Voitures table, produisant le résultat suivant.

Tableau des voitures

À partir du tableau ci-dessus, vous pouvez identifier le bon John Brown qui loue une Mercedes-Benz par la clé étrangère dans l'enregistrement.

Clés étrangères avancées

Il existe deux autres façons d'utiliser une clé étrangère dans une base de données.

Si vous revenez sur la définition d'une clé étrangère ci-dessus, vous constaterez qu'elle indique qu'une clé étrangère peut être un identifiant unique ou une combinaison d'identifiants uniques.

En revenant à l'exemple de la base de données de location de voitures, vous verrez que la création d'un nouvel enregistrement (de la même voiture) chaque fois qu'un client loue cette voiture, va à l'encontre de l'objectif de la Voitures table. Si les voitures sont à vendre et sont vendues une seule fois à un seul client, la base de données existante est parfaite ; mais étant donné que les voitures sont des locations, il existe une meilleure façon de représenter ces données.

Clés composites

Une clé composite a deux ou plusieurs identifiants uniques. Dans une base de données relationnelle, il y aura des cas où l'utilisation d'une seule clé étrangère ne représentera pas suffisamment les relations qui existent au sein de cette base de données.

Dans l'exemple de location de voiture, l'approche la plus pratique consiste à créer une nouvelle table qui stocke les détails de la location. Pour que les informations du tableau de location de voitures soient utiles, elles doivent être connectées à la fois aux tableaux de voitures et de clients.

Création d'une table avec des clés étrangères composites

/* creates a CarRental table in the car rental database */
CREATE TABLE CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar(30) NOT NULL FOREIGN KEY REFERENCES Cars(LicenseNumber),
CustomerID varchar(30) NOT NULL FOREIGN KEY REFERENCES Customers(CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);

Le code ci-dessus décrit un point important ; bien qu'une table dans une base de données SQL puisse avoir plusieurs clés étrangères, elle ne peut avoir qu'une seule clé primaire. En effet, il ne devrait y avoir qu'un seul moyen d'identifier un enregistrement.

Il est nécessaire de combiner les trois attributs de la table pour avoir une clé unique. Un client peut louer plus d'une voiture le même jour (donc N ° de client et DateLoué n'est pas une bonne combinaison) plusieurs clients peuvent également louer la même voiture le même jour (donc Numéro de licence et DateLoué n'est pas une bonne combinaison).

Cependant, la création d'une clé composite qui indique quel client, quelle voiture et quel jour fait une excellente clé unique. Cette clé unique représente à la fois une clé étrangère composite et une clé primaire composite.

comment obtenir plus de récompenses d'opinion google

Clés primaires étrangères

Oh oui, les clés primaires étrangères sortent. Bien qu'il n'y ait pas de nom officiel pour cela, une clé étrangère peut également être une clé primaire dans la même table. Cela se produit lorsque vous créez une nouvelle table qui contient des données spécialisées sur une entité existante (ou un enregistrement dans une autre table).

Supposons que Fred (qui travaille pour l'entreprise de location de voitures) se trouve dans la base de données de l'entreprise sous la table des employés. Après quelques années, il devient superviseur et s'ajoute à la table des superviseurs.

Fred est toujours un employé et aura toujours le même numéro d'identification. Ainsi, l'identifiant de l'employé de Fred est maintenant dans la table du superviseur en tant que clé étrangère qui deviendra également une clé primaire dans cette table (car cela n'a aucun sens de créer un nouveau numéro d'identification pour Fred maintenant qu'il est superviseur).

Vous pouvez maintenant identifier les clés étrangères dans les bases de données SQL

Les clés étrangères connectent différentes tables au sein d'une base de données SQL. À partir de cet article, vous pouvez voir ce qu'est une clé étrangère, comment elle fonctionne et pourquoi il est important de les avoir dans une base de données. Vous comprenez également les formes basiques, et encore plus complexes, des clés étrangères.

Si vous pensez que les clés étrangères sont intéressantes, vous allez passer une journée sur le terrain lorsque vous commencerez à utiliser les opérations de projet et de sélection pour interroger vos bases de données SQL.

Partager Partager Tweeter E-mail Apprenez à utiliser les opérations de projet et de sélection dans SQL

Familiarisez-vous avec les bases de données relationnelles SQL en comprenant les opérations de projet et de sélection avec ces exemples.

Lire la suite
Rubriques connexes
  • La programmation
  • La programmation
  • SQL
  • base de données
A propos de l'auteur Kadeisha Kean(21 articles publiés)

Kadeisha Kean est un développeur de logiciels Full-Stack et un rédacteur technique/technologique. Elle a la capacité distincte de simplifier certains des concepts technologiques les plus complexes; produire du matériel qui peut être facilement compris par tout novice en technologie. Elle est passionnée par l'écriture, le développement de logiciels intéressants et les voyages à travers le monde (à travers des documentaires).

Plus de Kadeisha Kean

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner