• 12 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 5/15/23

Mettez en relation plusieurs tables avec des clés étrangères

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

Au chapitre précédent, vous avez vu comment identifier les lignes de vos tables.

Mais votre base ne contient pas qu'une table, et il arrive que 2 tables contiennent des informations qui sont liées entre elles.

Par exemple, votre table  sommier est en lien avec la table  matelas  , car chaque sommier est associé au matelas avec lequel il sera assemblé !

Pour lier des tables entre elles, on a créé le concept de clé étrangère.

Voici ce que cela donne pour les tables  sommier et  matelas  :

La clé étrangère de la colonne matelas sert à lier les tables Sommier et Matelas
Une clé étrangère sert à lier deux tables ensemble

Vous voyez qu'il y a une colonne dans  sommier qui contient des identifiants de matelas. C'est comme cela que l'on sait que le sommier S40 va être assemblé avec le matelas M1.

Ici, la clé étrangère n'est composée que d'une colonne ( matelas_fk ), car la clé primaire de la table matelas  ne contient qu'une colonne ( id_matelas  ). Mais si la clé primaire contient deux colonnes, alors il faut une clé étrangère à deux colonnes !

À vous de jouer

Contexte

Vous commencez à vous familiariser avec votre base de données des Panama Papers. Vous y voyez 2 tables qui semblent être liées : la table entity  et la table address  . Si elles sont liées, il y a probablement une clé étrangère quelque part. La repérer vous aidera ensuite à chercher plus efficacement et de manière plus cohérente dans vos données.

Consignes

Repérez la clé étrangère, déterminez de combien de colonnes elle est composée, et trouvez la clé primaire qu'elle référence :

Table entity :

La table entity
La table entity

Table address :

La table address et ses lignes et colonnes
La table address

Vérifiez votre travail

La clé étrangère est composée d'une seule colonne :  id_address  de la table  entity  . Elle référence la clé primaire de  address  , qui est la colonne  id_address  . En effet, les valeurs dans la colonne  entity.id_address semblent être des identifiants. Ces identifiants se retrouvent dans la colonne  address.id_address  . Vu le nom de cette colonne (“id_address”), il est très probable qu'elle soit la clé primaire artificielle de la table address.

Créez du lien entre vos tables

Maintenant que vous savez reconnaître une clé étrangère, on va voir comment implémenter ce concept en SQL.

Vous avez déjà vu le code permettant de créer la table entity. Mais la clé étrangère n'était pas indiquée. Pour spécifier la clé étrangère entre  entity et  address  , il faut ajouter ce bout de code lors de la création de la table  entity  :

FOREIGN KEY ( <colonnes clés étrangères> ) REFERENCES <table référencée> ( <clé primaire de la table référencée> )

Ce qui donne :

CREATE TABLE entity2 (
	id INTEGER,
	name TEXT NOT NULL,
	jurisdiction TEXT,
	jurisdiction_description TEXT,
	incorporation_date DATE,
	status TEXT,
	service_provider TEXT,
	id_address INTEGER,
	source TEXT,
	note TEXT,
	end_date DATE,
	url TEXT,
	lifetime INTEGER,
	PRIMARY KEY(id),
	FOREIGN KEY (id_address) REFERENCES address (id_address)
)

Supprimez ensuite  entity2  avec  DROP TABLE entity2  .

En résumé

  • Une clé étrangère est un groupe de colonnes d'une table, qui fait référence à la clé primaire d'une autre table, afin de modéliser le lien entre les lignes de ces deux tables.

  • Une clé étrangère peut être composée d'une ou plusieurs colonnes.

  • Une clé étrangère se dit en anglais foreign key (FK).

  • En SQL, une clé étrangère peut se définir lors de la création de la table, en écrivant  FOREIGN KEY ( <colonnes clés étrangères> ) REFERENCES <table référencée> ( <clé primaire de la table référencée> )

Maintenant que vous savez utiliser les clés étrangères, nous allons voir dans le prochain chapitre comment identifier les différents types d'associations entre vos tables.

Example of certificate of achievement
Example of certificate of achievement