Учебно-практическое пособие москва 2017 ббк


CREATE TABLE boarding_passes



Pdf көрінісі
бет83/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   79   80   81   82   83   84   85   86   ...   243
Байланысты:
Язык SQL. Базовый курс

CREATE TABLE boarding_passes
( ticket_no
char( 13 ) NOT NULL,
-- Номер билета
flight_id
integer NOT NULL,
-- Идентификатор рейса
boarding_no integer NOT NULL,
-- Номер посадочного талона
seat_no
varchar( 4 ) NOT NULL, -- Номер места
PRIMARY KEY ( ticket_no, flight_id ),
UNIQUE ( flight_id, boarding_no ),
UNIQUE ( flight_id, seat_no ),
FOREIGN KEY ( ticket_no, flight_id )
REFERENCES ticket_flights ( ticket_no, flight_id )
);
Вы можете, как и раньше, посмотреть описание таблицы:
\d boarding_passes
В процессе создания таблиц между ними образовывались связи за счет внешних клю-
чей. Эти связи в описании таблицы можно увидеть, образно говоря, с двух сторон:
таблицы, на которые ссылается данная таблица, указываются во фразе «Ограничения
внешнего ключа», а таблицы, которые ссылаются на данную таблицу, указываются во
фразе «Ссылки извне». Например:
\d tickets
...
Ограничения внешнего ключа:
"tickets_book_ref_fkey" FOREIGN KEY (book_ref)
REFERENCES bookings(book_ref)
Ссылки извне:
TABLE "ticket_flights"
CONSTRAINT "ticket_flights_ticket_no_fkey"
FOREIGN KEY (ticket_no)
REFERENCES tickets(ticket_no)
86


Наше рассмотрение команд для определения данных было бы неполным без такой
важной команды, как DROP TABLE. Поскольку у вас есть файл demo_small.sql, то вос-
создать таблицы базы данных будет совсем нетрудно, поэтому вы можете смело вы-
полнять команды удаления таблиц. Давайте сначала попытаемся удалить таблицу
aircrafts:
DROP TABLE aircrafts;
Казалось бы, не должно быть никаких проблем, но в результате СУБД выдает сооб-
щение об ошибке:
ОШИБКА: удалить объект таблица aircrafts нельзя, так как от него зависят
другие объекты
,

ПОДРОБНОСТИ: ограничение flights_aircraft_code_fkey в отношении таблица
flights зависит от объекта таблица aircrafts
,

ограничение seats_aircraft_code_fkey в отношении таблица
seats зависит от объекта таблица aircrafts
,

ПОДСКАЗКА: Для удаления зависимых объектов используйте DROP ... CASCADE.
Дело в том, что таблица «Самолеты» (aircrafts) является ссылочной для таблиц «Рей-
сы» (flights) и «Места» (seats), что и отражено в сообщении. Выполнив команду
\d flights
мы увидим внешний ключ, ссылающийся на таблицу «Самолеты» (aircrafts). В сооб-
щении содержится также и подсказка, рекомендующая в команду DROP TABLE доба-
вить фразу CASCADE, означающую каскадное удаление зависимых объектов. Давайте
так и сделаем:


Достарыңызбен бөлісу:
1   ...   79   80   81   82   83   84   85   86   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет