Clés étrangères

Rappelez les tables weather et cities the chapter called Le langage SQL. Considérons le problème suivant : vous voulez être sûr que personne ne peut insérer des lignes dans la table weather qui ne soient pas appariées avec les entrées de la table cities. Ceci est appelé maintenir l'intégrité référentielle de vos données. Dans les bases de données simples ça peut être réalisé en regardant dans la table cities et vérifier si un enregistrement apparié existe,ensuite insérer ou rejeter les nouveaux enregistrements weather. Cette approche pose certains problèmes et n'est pas pratique, mais PostgreSQL peut faire ça pour vous.

La nouvelle déclaration des tables ressemblera à ça :

CREATE TABLE cities (
	name		varchar(80) primary key,
	location	point
);

CREATE TABLE weather (
	city		varchar(80) references weather,
	temp_lo		int,
	temp_hi		int,
	prcp		real,
	date		date
);
Maintenant essayez d'entrer un enregistrement invalide :
INSERT INTO weather VALUES ('Berkeley', 45, 53, 0.0, '1994-11-28');
ERROR:  <unnamed> referential integrity violation - key referenced from weather not found in cities

Le comportement des clés étrangères peut être accordé finement. Nous n'irons pas au-delà de ce simple exemple dans ce tutoriel, mais référez vous au Manuel de référence pour plus d'information. Faire un bon usage de clé étrangères améliorera définitivement la qualité de votre base, ainsi nous vous encourageons vivement à vous documenter sur ce sujet.