Documentation PostgreSQL 8.0.25 | ||||
---|---|---|---|---|
Précédent | Arrière rapide | Chapitre 3. Fonctionnalités avancées | Avance rapide | Suivant |
Souvenez-vous des tables temps
et
villes
du Chapitre 2.
Considérez le problème suivant : vous voulez vous assurer que personne
n'insère de lignes dans la table temps
qui ne
correspondraient pas à une entrée dans la table
villes
. Ceci maintient l'intégrité
référentielle de vos données. Dans les systèmes de bases de
données simples, ceci serait implémenté (si possible) en vérifiant en
premier lieu que la table villes
dispose bien d'un
enregistrement correspondant, puis en insérant ou en empêchant l'insertion
du nouvel enregistrement dans temps
. Cette approche
présente un certain nombre de problèmes et n'est pas très pratique, donc
PostgreSQL peut s'en charger pour vous.
La nouvelle déclaration des tables ressemblerait à ceci :
CREATE TABLE villes ( ville varchar(80) primary key, emplacement point ); CREATE TABLE temps ( ville varchar(80) references villes, temp_haute int, temp_basse int, prcp real, date date );
Maintenant, essayons d'insérer un enregistrement non valide :
INSERT INTO temps VALUES ('Berkeley', 45, 53, 0.0, '1994-11-28');
ERROR: insert or update on table "temps" violates foreign key constraint "temps_ville_fkey" DETAIL: Key (ville)=(Berkeley) is not present in table "villes".
Le comportement des clés secondaires peut être précisé très finement pour votre application. Nous n'irons pas plus loin que cet exemple simple dans ce tutoriel mais référez-vous simplement au Chapitre 5 pour plus d'informations. Utiliser correctement les clés secondaires améliore la qualité de vos applications de bases de données, donc vous êtes fortement encouragé à les connaître.
Précédent | Sommaire | Suivant |
Vues | Niveau supérieur | Transactions |