CREATE TABLE seats
(
aircraft_code
char( 3 )
NOT NULL,
seat_no
varchar( 4 ) NOT NULL,
fare_conditions varchar( 10 ) NOT NULL,
CHECK
( fare_conditions IN ( 'Economy', 'Comfort', 'Business' )
),
PRIMARY KEY ( aircraft_code, seat_no ),
FOREIGN KEY ( aircraft_code )
REFERENCES aircrafts (aircraft_code )
ON DELETE CASCADE
);
Для того чтобы посмотреть, какая получилась таблица, введите команду
\d seats
43
Глава 3. Основные операции с таблицами
Таблица "public.seats"
Колонка
| Тип
| Модификаторы
-----------------+-----------------------+--------------
aircraft_code
| character(3)
| NOT NULL
seat_no
| character varying(4) | NOT NULL
fare_conditions | character varying(10) | NOT NULL
Индексы:
"seats_pkey" PRIMARY KEY, btree (aircraft_code, seat_no)
Ограничения-проверки:
"seats_fare_conditions_check" CHECK (fare_conditions::text = ANY
(ARRAY['Economy'::character varying, 'Comfort'::character varying,
'Business'::character varying]::text[]))
Ограничения внешнего ключа:
"seats_aircraft_code_fkey" FOREIGN KEY (aircraft_code)
REFERENCES aircrafts(aircraft_code) ON DELETE CASCADE
Вы видите, что тип данных char имеет также и полное название — character,
а тип данных varchar — character varying. Первичный ключ здесь составной —
(aircraft_code, seat_no). Ограничение CHECK, накладываемое на значения атри-
бута fare_conditions, представлено в более сложной форме, чем это было сделано
при создании таблицы. Двойные символы «::» означают операцию приведения типа.
Это аналогично такой же операции в других языках программирования. Ключевое
слово ARRAY говорит о том, что список допустимых значений представлен в виде
массива. Массивы присутствуют в PostgreSQL, и их использование в ряде ситуаций
позволяет, например, упростить схему базы данных. Более подробно о них мы будем
говорить в главе 4.
Принципиально новым по сравнению с рассмотренной выше таблицей «Самоле-
ты» является наличие ограничения внешнего ключа. Это ограничение имеет имя
seats_aircraft_code_fkey, сгенерированное самой СУБД, поскольку мы не пред-
ложили в команде CREATE TABLE никакого своего имени для этого ограничения, хотя,
в принципе, имели право это сделать, если бы захотели.
Для просмотра всех таблиц, имеющихся в вашей базе данных, выполните команду
\d
Список отношений
Схема |
Имя
|
Тип
| Владелец
--------+-----------+---------+----------
public | aircrafts | таблица | postgres
public | seats
| таблица | postgres
(2 строки)
44
|