Обратите внимание, что эта таблица имеет связь с таблицей «Перелеты»
(ticket_flights) типа 1:1. Это объясняется тем, что пассажир, купивший билет на
конкретный рейс, при регистрации получает только один посадочный талон. Конеч-
но, если пассажир на регистрацию не явился, он не получает талона. Поэтому число
строк в таблице «Посадочные талоны» может в общем случае оказаться меньше
числа строк в таблице «Перелеты». Логично ожидать, что первичные ключи у этих
двух таблиц будут одинаковыми: они включают атрибуты «Номер билета» (ticket_no)
и «Идентификатор рейса» (flight_id). Поскольку таблица «Перелеты» все же является
главной в этой связке таблиц, то в таблице «Посадочные талоны» создается внешний
ключ, ссылающийся на нее. А поскольку тип связи между таблицами — 1:1, то
внешний ключ совпадает с первичным ключом.
Известно, что номер конкретного места в самолете пассажир получает при регистра-
ции билета, а не при его бронировании, поэтому атрибут «Номер места» (seat_no) на-
ходится в таблице «Посадочные талоны», а не в таблице «Перелеты». Нельзя допу-
стить, чтобы на одно место в салоне были направлены два и более пассажиров, по-
этому создается уникальный ключ с атрибутами «Идентификатор рейса» (flight_id) и
«Номер места» (seat_no). Еще один уникальный ключ призван гарантировать несов-
падение номеров посадочных талонов на данном рейсе, он включает атрибуты
«Идентификатор рейса» (flight_id) и «Номер посадочного талона» (boarding_no).
Достарыңызбен бөлісу: