Глава 1. Введение в базы данных и SQL
некоторые города имеют более одного аэропорта. Сразу в качестве примера вспоми-
нается Москва с ее аэропортами Домодедово, Шереметьево и Внуково. Добавим еще
одну важную деталь: каждый аэропорт характеризуется географическими координа-
тами — долготой и широтой, а также часовым поясом.
Формируются маршруты перелетов между городами. Конечно, каждый такой марш-
рут требует указания не только города, но и аэропорта, поскольку, как мы уже сказа-
ли, в городе может быть и более одного аэропорта. В качестве упрощения реальности
мы решим, что маршруты не будут иметь промежуточных посадок, т. е. у них будет
только аэропорт отправления и аэропорт назначения. Каждый маршрут имеет ше-
стизначный номер, включающий цифры и буквы латинского алфавита.
На основе перечня маршрутов формируется расписание полетов (или рейсов). В рас-
писании указывается плановое время отправления и плановое время прибытия,
а также тип самолета, выполняющего этот рейс.
При фактическом выполнении рейса возникает необходимость в учете дополнитель-
ных сведений, а именно: фактического времени отправления и фактического време-
ни прибытия, а также статуса рейса. Статус рейса может принимать ряд значений:
– Scheduled (за месяц открывается возможность бронирования);
– On Time (за сутки открывается регистрация);
– Delayed (рейс задержан);
– Departed (вылетел);
– Arrived (прибыл);
– Cancelled (отменен).
Теперь обратимся к пассажирам. Полет начинается с бронирования авиабилета. В на-
стоящее время общепринятой практикой является оформление электронных биле-
тов. Каждый такой билет имеет уникальный номер, состоящий из 13 цифр. В рамках
одной процедуры бронирования может быть оформлено несколько билетов, но каж-
дая такая процедура имеет уникальный шестизначный номер (шифр) бронирования,
состоящий из заглавных букв латинского алфавита и цифр. Кроме того, для каждой
процедуры бронирования записывается дата бронирования и рассчитывается общая
стоимость оформленных билетов.
В каждый билет, кроме его тринадцатизначного номера, записывается идентифика-
тор пассажира, а также его имя и фамилия (в латинской транскрипции) и контактные
данные. В качестве идентификатора пассажира используется номер документа, удо-
стоверяющего личность. Конечно, пассажир может сменить свой документ, а иной
20
1.4. Описание предметной области и учебной базы данных
раз даже фамилию и имя, за время, прошедшее между бронированием билетов в раз-
ные дни, поэтому невозможно наверняка сказать, что какие-то конкретные билеты
были оформлены на одного и того же пассажира.
В каждый электронный билет может быть вписано более одного перелета. Специа-
листы называют эти записи о перелетах сегментами. В качестве примера наличия
нескольких сегментов можно привести такой: Красноярск — Москва, Москва — Ана-
па, Анапа — Москва, Москва — Красноярск. При этом возможно в рамках одного
бронирования оформить несколько билетов на различных пассажиров. Для каждо-
го перелета указывается номер рейса, аэропорты отправления и назначения, время
вылета и время прибытия, а также стоимость перелета. Кроме того, указывается и так
называемый класс обслуживания: экономический, бизнес и др.
Когда пассажир прибывает в аэропорт отправления и проходит регистрацию билета,
оформляется так называемый посадочный талон. Этот талон связан с авиабилетом:
в талоне указывается такой же номер, который имеет электронный авиабилет дан-
ного пассажира. Кроме того, в талоне указывается номер рейса и номер места в са-
молете. Указывается также и номер посадочного талона — последовательный номер,
присваиваемый в процессе регистрации билетов на данный рейс.
Напомним, что каждому креслу в салоне самолета соответствует конкретный класс
обслуживания. Данная информация учитывается при регистрации билетов и оформ-
лении посадочных талонов. Если, например, пассажир приобрел билет с экономиче-
ским классом обслуживания, то в его посадочном талоне будет указан номер места
в салоне экономического класса, но не в салоне бизнес-класса.
Следуя приведенному описанию предметной области, можно спроектировать мо-
дельную базу данных, предназначенную для изучения языка SQL. Поскольку наше
учебное пособие в первую очередь предназначено для изучения языка SQL, а не для
овладения искусством проектирования баз данных, то мы приведем лишь диаграмму
схемы данных, на которой показаны сущности, выделенные в предметной области,
а также их связи и атрибуты. Конкретные же типы данных, первичные и внешние
ключи, а также ограничения, наложенные на атрибуты и таблицы, мы покажем уже
в последующих главах в процессе рассмотрения команд SQL, предназначенных для
физического создания таблиц в базе данных.
Приведенную ниже схему можно найти на сайте компании Postgres Professional по
адресам, указанным в начале этого раздела.
21
|