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.