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


fare_conditions varchar( 10 ) NOT NULL



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

fare_conditions varchar( 10 ) NOT NULL,
-- Класс обслуживания
amount
numeric( 10, 2 ) NOT NULL, -- Стоимость перелета
CHECK ( amount >= 0 ),
CHECK ( fare_conditions IN ( 'Economy', 'Comfort', 'Business' ) ),
PRIMARY KEY ( ticket_no, flight_id ),
FOREIGN KEY ( flight_id )
REFERENCES flights ( flight_id ),
FOREIGN KEY ( ticket_no )
REFERENCES tickets ( ticket_no )
);
Последняя таблица нашей базы — это
«Посадочные талоны» (boarding_passes)
. Все
атрибуты, представленные в ней, за исключением атрибута «Номер посадочного та-
лона» (boarding_no), вам уже известны из других таблиц. А номер посадочного тало-
на — это просто целое число, порядковый номер пассажира при регистрации билетов
на конкретный рейс, поэтому тип данных выбирается integer.
85


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


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




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

    Басты бет