Глава 3. Основные операции с таблицами В первой колонке выведенной таблицы указана так называемая схема базы данных —
public. Мы уже говорили, что схема — это обособленный до некоторой степени раз-
дел базы данных. По умолчанию все объекты создаются в схеме public. В третьей
колонке указан тип — «таблица». Кроме таблиц могут быть еще и представления.
В последней колонке указано имя пользователя, являющегося владельцем таблицы.
Как правило, это пользователь, создавший таблицу.
Давайте сразу же проделаем эксперимент, позволяющий показать работу внешнего
ключа. Выполните следующую команду для ввода данных в таблицу «Места»:
INSERT INTO seats VALUES ( '123', '1A', 'Business' ); СУБД ответит так:
ОШИБКА: INSERT или UPDATE в таблице "seats" нарушает ограничение внешнего
ключа "seats_aircraft_code_fkey"
ПОДРОБНОСТИ: Ключ (aircraft_code)=(123) отсутствует в таблице "aircrafts"
Это совершенно логично: если в таблице «Самолеты», на которую ссылается таблица
«Места», нет описания самолета с кодом самолета 123, то добавлять информацию
о номерах кресел для такого — несуществующего — самолета не имеет смысла. Так
действует поддержка правил ссылочной целостности со стороны СУБД. Программист
избавлен от необходимости отслеживать и обеспечивать «вручную» соблюдение этих
правил.
Теперь нужно заполнить данными таблицу «Места». Для каждой модели самолетов
введите только несколько строк, при этом предусмотрите записи для классов обслу-
живания Business и Economy. С помощью одной команды INSERT можно ввести
сразу несколько строк:
INSERT INTO seats VALUES ( 'SU9', '1A', 'Business' ), ( 'SU9', '1B', 'Business' ), ( 'SU9', '10A', 'Economy' ), ( 'SU9', '10B', 'Economy' ), ( 'SU9', '10F', 'Economy' ), ( 'SU9', '20F', 'Economy' ); Затем измените значение атрибута aircraft_code на другое, например, 773, и по-
вторите команду INSERT. Так придется поступить со всеми моделями самолетов.
Таблица «Места» заполнена необходимыми данными. Теперь решим еще одну зада-
чу. Предположим, что нам нужно получить информацию о количестве мест в салонах
45