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



Pdf көрінісі
бет28/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   24   25   26   27   28   29   30   31   ...   243
Байланысты:
Язык SQL. Базовый курс

Описание атрибута
Имя атрибута
Тип данных
Тип PostgreSQL
Ограничения
Код самолета, IATA
aircraft_code
Символьный
char( 3 )
NOT NULL
Номер места
seat_no
Символьный
varchar( 4 )
NOT NULL
Класс обслуживания
fare_conditions
Символьный
varchar( 10 )
NOT NULL
Значения из списка:
Economy,
Comfort,
Business
Для атрибута «Код самолета, IATA» был выбран тип char(3), поскольку этот атрибут
присутствует и в таблице «Самолеты» (aircrafts). Значения атрибута «Номер места»
(seat_no) состоят из числовой части, обозначающей номер ряда кресел в салоне са-
молета, и латинской буквы, обозначающей позицию в ряду, начиная с буквы «A». На-
пример: 10A, 21D, 17F и т. д. В качестве типа данных для этого атрибута выберем
varchar(4). Этот тип позволяет хранить любые символы. В скобках указана предель-
ная длина символьной строки, которую можно ввести в поле такого типа. Значения
атрибута «Класс обслуживания» (fare_conditions) могут выбираться из ограниченно-
го списка значений. Проверка на соответствие вводимых значений этому списку бу-
дет обеспечиваться с помощью ограничения CHECK. Также выбираем тип данных
varchar. Все допустимые значения имеют различные длины, но мы ориентируемся
на самое длинное значение.
Значения всех атрибутов каждой строки данной таблицы не должны быть не опреде-
ленными, поэтому на них накладывается ограничение NOT NULL.
В качестве первичного ключа выбрана комбинация атрибутов «Код самолета, IATA»
и «Номер места» — это составной ключ. Таким образом, первичный ключ будет
есте-
ственным
. Как уже было сказано выше, это означает, что и в реальной предметной
области существуют такие понятия, как код самолета и номер места, и эти понятия
используются на практике.
В этой таблице используется
внешний ключ
. Предложение FOREIGN KEY создает
ограничение ссылочной целостности. В качестве внешнего ключа служит атрибут
«Код самолета» (aircraft_code). Он ссылается на одноименный атрибут в таблице «Са-
молеты» (aircrafts). Таблица «Места» называется ссылающейся (referencing), а таблица
«Самолеты» — ссылочной (referenced). Поскольку номера мест привязаны к модели
самолета, то в случае удаления из таблицы «Самолеты» какой-либо строки с конкрет-
ным кодом самолета необходимо удалить также и из таблицы «Места» все строки,
в которых значение атрибута «Код самолета» такой же. Коротко говоря, если в базе
данных нет информации о какой-либо модели самолета, то не может быть и инфор-
мации о компоновке салона, т. е. о распределении мест по классам обслуживания для
этой модели. Поэтому в предложении для определения внешнего ключа появляется
важное дополнение: ON DELETE CASCADE. Это означает, что при удалении какой-
либо строки из таблицы «Самолеты» удаление строк из таблицы «Места», связанных
с этой строкой по внешнему ключу, берет на себя СУБД, избавляя программиста от
этой заботы. Подобные действия, которые выполняет сама СУБД, называются кас-
кадным удалением. Таким образом, внешний ключ служит для связи таблиц между
собой.
Итак, команда для создания нашей второй таблицы «Места» такова:


Достарыңызбен бөлісу:
1   ...   24   25   26   27   28   29   30   31   ...   243




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

    Басты бет