CITForum Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети ОС Hardware

Учебник PostgreSQL 7.3.3

Всемирная группа разрабочиков PostgreSQL
Copyright © 1996-2002 by Всемирная Группа Разработчиков PostgreSQL
Перевёл с английского Виктор Вислобоков

Преамбула
1. Что такое PostgreSQL?
2. Краткая история PostgreSQL
2.1. Проект POSTGRES департамента Беркли
2.2. Postgres95
2.3. PostgreSQL
3. О чем эта книга
4. Обзор ресурсов документации
5. Терминология и нотация
6. Руководство по отправке сообщений об ошибках
6.1. Идентификация ошибок
6.2. Что нужно сообщить
6.3. Куда отправлять сообщения об ошибках
1. Первые шаги
1.1. Установка
1.2. Фундаментальные основы архитектуры
1.3. Создание базы данных
1.4. Доступ к базе данных
2. Язык SQL
2.1. Введение
2.2. Концепции
2.3. Создание новой таблицы
2.4. Заполнение таблицы записями
2.5. Запросы к таблицам
2.6. Объединения таблиц (Join)
2.7. Агрегатные функции
2.8. Обновление данных в таблицах
2.9. Удаление данных из таблиц
3. Расширенные возможности
3.1. Введение
3.2. Представления (Views)
3.3. Внешние ключи (Foreign Keys)
3.4. Транзакции
3.5. Наследование
3.6. Заключение
Библиография

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 Правильное использование внешних ключей существенно увеличивает качество ваших приложений по работе с базами данных, так что мы очень рекомендуем вам научиться пользоваться ими.

Далее

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети ОС Hardware

CITForum © 1997–2025