Вспомните о weather и
cities таблицах из Глава 1.2. Рассмотрим следующую задачу: необходимо гарантировать, что никто не сможет вставить в таблицу
weather строки, для которых отсутствует соответствующая запись в таблице cities table. Этот механизм называется
обеспечением ссылочная целостность ссылочной целостности
ваших данных. В упрощенных системах баз данных это реализуется (если вообще реализуется) путем предварительного обращения к таблице
cities для проверки наличия соответствующей записи, после чего выполняется вставка или отклонение новых
weather записей. Данный подход имеет ряд недостатков и крайне неудобен, поэтому
Digital Q.DataBase может выполнить эту операцию за вас.
Новое определение таблиц будет выглядеть следующим образом:
CREATE TABLE cities (
name varchar(80) primary key,
location point
);
CREATE TABLE weather (
city varchar(80) references cities(name),
temp_lo int,
temp_hi int,
prcp real,
date date
);
Теперь попробуйте вставить некорректную запись:
INSERT INTO weather VALUES ('Berkeley', 45, 53, 0.0, '1994-11-28');
ОШИБКА: вставка или обновление в таблице "weather" нарушает ограничение внешнего ключа "weather_city_fkey" ПОДРОБНОСТИ: Ключ (city)=(Berkeley) отсутствует в таблице "cities".
Поведение внешних ключей может быть тонко настроено под нужды вашего приложения. В рамках данного руководства мы ограничимся этим простым примером; для получения более подробной информации рекомендуем обратиться к Глава 2.2 за более подробной информацией. Грамотное использование внешних ключей определенно повысит качество ваших приложений баз данных, поэтому настоятельно рекомендуется изучить принципы их работы.