Учебное пособие Санкт-Петербург «бхв-петербург»


CREATE TABLE boarding_passes



Pdf көрінісі
бет90/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   86   87   88   89   90   91   92   93   ...   256
sql osnovi yazika

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)
Наше рассмотрение команд для определения данных было бы неполным без такой
важной команды, как DROP TABLE. Поскольку у вас есть файл demo_small.sql, то вос-
создать таблицы базы данных будет совсем нетрудно, поэтому вы можете смело вы-
полнять команды удаления таблиц.
Давайте сначала попытаемся удалить таблицу aircrafts:
DROP TABLE aircrafts;
115


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


Достарыңызбен бөлісу:
1   ...   86   87   88   89   90   91   92   93   ...   256




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

    Басты бет