CREATE TABLE favorite_food >
(person_id SMALLINT UNSIGNED, >
food VARCHAR(20), >
CONSTRAINT pk_favorite_food PRIMARY KEY (person_id, food), >
CONSTRAINT fk_person_id FOREIGN KEY (person_id) >
REFERENCES person (person_id) >
) ;
Query OK, 0 rows affected (0.10 sec)
Это очень похоже на выражение
create
table
для таблицы
person
, за не
сколькими исключениями:
• Поскольку у человека может быть несколько любимых блюд (что
и стало причиной создания данной таблицы), одного столбца
per
son_id
для обеспечения уникальности в таблице недостаточно. По
этому первичный ключ данной таблицы состоит из двух столбцов:
person_id
и
food
.
• Таблица
favorite_food
содержит другой тип ограничения –
ограниче ние внешнего ключа (
foreignkey constraint ). Оно ограничивает зна
чения столбца
person_id
таблицы
favorite_food
, позволяя ему вклю
чать только те значения, которые есть в таблице
person
. При таком
ограничении не получится включить в таблицу
favorite_food
строку,
показывающую, что
person_id
27
любит пиццу, если в таблице
person
нет строки со значением
27
для
person_id
.
Если при создании таблицы ограничение внешнего ключа не
было указано, его можно добавить позже с помощью оператора
alter table
(изменить таблицу).
После выполнения выражения
create
table
по команде
describe
будет
выведено следующее:
42 Глава 2. Создание и заполнение базы данных
mysql>