Задание. Для таблицы title_authors определите два внешних ключа: идентификаторы названия и автора. Установите связи с таблицами АВТОРЫ и ИЗДАНИЯ. Определите первичный ключ.
Примечание. Если в предложении REFERENCES внешний ключ связан с первичным ключом родительской таблицы, можно не указывать имя столбца.
Примечание. Внешний ключ может ссылаться на столбец в той же таблице (самообъединение).
Примечание. Предложение ON UPDATE действие, задает действие, которое выполняется в случае обновления ключа, который связан с ключами в других таблицах. Действие задается одной из фраз:
- CASCADE – замена значений внешних ключей в соответствии с новым значением первичного ключа;
- SET NULL – замена значений внешних ключей на NULL;
- SET DEFAULT – замена значений внешних ключей значениями по умолчанию;
- NO ACTION – выдает ошибку для внешнего ключа (по умолчанию).
Примечание. Предложение ON DELETE действие, задает действие, которое выполняется в случае обновления ключа, который связан с ключами в других таблицах. Действие задается одной из фраз:
- CASCADE – удаление строк, которые содержат значения внешних ключей, соответствующие удаленному первичному ключу;
- SET NULL – замена значений внешних ключей на NULL;
- SET DEFAULT – замена значений внешних ключей значениями по умолчанию;
- NO ACTION – выдает ошибку для внешнего ключа (по умолчанию).
Ограничение устанавливает, что столбец не содержит повторяющихся значений. Простое ограничение уникальности устанавливается для одного столбца. Сложное – ограничивает уникальность комбинации значений из нескольких столбцов и определяется как ограничение таблицы.
CREATE TABLE authors
(au_id CHAR(3) NOT NULL PRIMARY KEY,
au_fname VARCHAR(15) NOT NULL,
au_lname VARCHAR(15) NOT NULL,
phone VARCHAR(12) NULL,
address VARCHAR(20) NULL,
city VARCHAR(15) NULL,
state CHAR(2) NULL,
zip CHAR(5) NULL,
contract SMALLINT NOT NULL
CONSRAINT royalties_ title_id_fk FOREING KEY (title_id) REFERENCES title(title_id));
Внешний ключ может указывать на уникальный столбец. Вместо ограпничения уникальности можно определить уникальный индекс.
Ограничение на значение позволяет контролировать максимальное или минимальное значение (диапазон значений), исключения. Условие, которое контролируется, задается в виде логического выражения. Ограничение на значение может относиться к конкретному столбцу либо являться ограничением таблицы, поскольку учитывает данные из нескольких столбцов. Для записи ограничения используется предложение CHECK (условие).
В случае нескольких ограничений следует убедиться, что они не противоречат друг другу.
CREATE TABLE title
(title_id CHAR(3) NOT NULL PRIMARY KEY,
title_name VARCHAR(40) NOT NULL CHECH (title_name <>’ ‘),
type VARCHAR(10) NOT NULL
CONSRAINT type_chk CHECK (type in (‘biology’, ‘children’, ‘computer’, ‘history’, ‘psychology’),
pub_id CHAR(3) NOT NULL REFERENCES publishers(pub_id),
pages INTEGER NULL CHECH (pages >0),
price DECIMAL(5,2) NULL CHECH (price >0.00 AND price<150.00),
sales INTEGER NULL CHECH (sales >=0),
pubdate DATE NULL,
contract SMALLINT NOT NULL)
CONSRAINT t_id_chk CHECK (Mid(title_id,1,1) = ‘t’ AND CInt(Mid(title_id,2,2) BETWEEN 0 AND 99),
;
Некоторые СУБД не поддерживают ограничения столбца, но контролируют ограничение таблицы.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.