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



Pdf көрінісі
бет31/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   27   28   29   30   31   32   33   34   ...   256
sql osnovi yazika

Описание атрибута
Имя атрибута
Тип данных
Тип 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), поскольку этот атрибут
присутствует и в таблице «Самолеты».
Значения атрибута «Номер места» (seat_no) состоят из числовой части, обозначаю-
щей номер ряда кресел в салоне самолета, и латинской буквы, обозначающей пози-
цию в ряду, начиная с буквы A. Например: 10A, 21D, 17F и т. д. В качестве типа данных
для этого атрибута выберем varchar(4). Этот тип позволяет хранить любые симво-
лы. В скобках указана предельная длина символьной строки, которую можно ввести
в поле такого типа.
Значения атрибута «Класс обслуживания» (fare_conditions) могут выбираться из
ограниченного списка значений. Проверка на соответствие вводимых значений это-
му списку будет обеспечиваться с помощью ограничения CHECK. Также выбираем тип
данных varchar. Все допустимые значения имеют различные длины, но мы ориен-
тируемся на самое длинное значение.
Значения всех атрибутов каждой строки данной таблицы не должны быть неопреде-
ленными, поэтому на них накладывается ограничение NOT NULL.
В качестве первичного ключа выбрана комбинация атрибутов «Код самолета, IATA»
и «Номер места» — это составной ключ. Таким образом, первичный ключ будет есте-
ственным
. Как уже было сказано выше, это означает, что и в реальной предметной
42


Глава 3. Основные операции с таблицами
области существуют такие понятия, как код самолета и номер места, и эти понятия
используются на практике.
В этой таблице используется внешний ключ. Предложение FOREIGN KEY создает
ограничение ссылочной целостности. В качестве внешнего ключа служит атрибут
«Код самолета» (aircraft_code). Он ссылается на одноименный атрибут в табли-
це «Самолеты» (aircrafts). Таблица «Места» называется ссылающейся (referencing),
а таблица «Самолеты» — ссылочной (referenced).
Поскольку номера мест привязаны к модели самолета, то в случае удаления из таб-
лицы «Самолеты» какой-либо строки с конкретным кодом самолета необходимо уда-
лить также и из таблицы «Места» все строки, в которых значение атрибута «Код са-
молета» такое же. Коротко говоря, если в базе данных нет информации о какой-либо
модели самолета, то не может быть и информации о компоновке салона, т. е. о рас-
пределении мест по классам обслуживания для этой модели.
Поэтому в предложении для определения внешнего ключа появляется важное допол-
нение: ON DELETE CASCADE. Это означает, что при удалении какой-либо строки из
таблицы «Самолеты» удаление строк из таблицы «Места», связанных с этой строкой
по внешнему ключу, берет на себя СУБД, избавляя программиста от этой заботы. По-
добные действия, которые выполняет сама СУБД, называются каскадным удалением.
Таким образом, внешний ключ служит для связи таблиц между собой.
Итак, команда для создания нашей второй таблицы «Места» такова:


Достарыңызбен бөлісу:
1   ...   27   28   29   30   31   32   33   34   ...   256




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

    Басты бет