Учебник PostgreSQL 7.3.3
Всемирная группа разрабочиков PostgreSQL
Copyright © 1996-2002 by Всемирная Группа Разработчиков PostgreSQL
Перевёл с английского Виктор Вислобоков
3.3. Внешние ключи (Foreign Keys)
Посмотрите на таблицы weather и
cities из Chapter 2. На лицо следующая проблема: Вы хотите
быть уверенными, что каждая из строк в таблице
weather имеет соответствующую запись в
таблице cities. Это называется
обслуживанием ссылочной целостности ваших
данных. В простейших СУБД вам потребовалось бы реализовать
сперва просмотр таблицы cities, чтобы
проверить существование нужной записи и только затем решить
вставлять или отвергнуть вставку новых записей данных в таблицу
weather. Такое решение создает некоторые
проблемы и очень неудобно, так что
PostgreSQL может сделать это для вас.
Новое описание этих таблиц будет выглядеть так:
CREATE TABLE cities (
city varchar(80) primary key,
location point
);
CREATE TABLE weather (
city varchar(80) references cities,
temp_lo int,
temp_hi int,
prcp real,
date date
);
Теперь попытайтесь вставить неправильную запись:
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
Поведение внешних ключей может быть прекрасно использовано вашим
приложением. Мы не ограничиваемся только этим простым примером в
данном учебнике, но отсылаем вас за подробностями к PostgreSQL User's Guide
Правильное использование внешних ключей существенно увеличивает
качество ваших приложений по работе с базами данных, так что мы
очень рекомендуем вам научиться пользоваться ими.