Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экзамен БД.docx
Скачиваний:
7
Добавлен:
20.04.2019
Размер:
240.87 Кб
Скачать

Создание первичного ключа

Для создания первичного ключа используется следующий синтаксис:

 

ALTER TABLE имя_таблицы ADD CONSTRAINT имя_ограничения

PRIMARY KEY(список_полей);

 

Например, для создания первичного ключа таблицы Dealers можно выполнить следующую команду:

ALTER TABLE Dealers ADD CONSTRAINT Dealers_pk

RIMARY KEY(D_id);

Если создаваемый первичный ключ является составным, то есть состоит из нескольких атрибутов, атрибуты перечисляются через запятую.

Создание уникального ключа

Для создания уникального ключа используется следующий синтаксис:

ALTER TABLE имя_таблицы ADD CONSTRAINT имя_ограничения

UNIQUE(список_полей);

Например, для создания уникального ключа в таблице Dealers, гарантирующего уникальность значений в атрибуте Name, можно выполнить следующую команду:

ALTER TABLE Dealers ADD CONSTRAINT Dealers_Name_uk

UNIQUE (Name);

Создание домена

Для создания домена используется следующий синтаксис:

ALTER TABLE имя_таблицы ADD CONSTRAINT имя_ограничения

CHECK(условное_выражение);

При наличии домена в таблице, каждый раз при изменении или добавлении значений в атрибуты, затрагиваемые условным выражением, СУБД будет проверять новое значение атрибутов на удовлетворение указанному выражению. Новое значение будет присвоено атрибуту только в том случае, если значение удовлетворяет указанному условию. При составлении условных выражений можно использовать логические операции >, <, >=, <=, <>, =, функции IN (проверка вхождения в множество), BETWEEN (проверка вхождения в диапазон), LIKE (проверка на удовлетворению шаблону). Кроме того, несколько условных выражений можно комбинировать при помощи логических операторов AND, OR и NOT.

ALTER TABLE Dealers ADD CONSTRAINT Dealers_Procent_check

CHECK(Procent >= 0);

Создание внешнего ключа

Для добавления внешнего ключа используется следующий синтаксис:

ALTER TABLE имя_подчиненной_таблицы

ADD CONSTRAINT имя_ограничения

FOREIGN KEY(список_полей_подчиненной_таблицы)

REFERENCES имя_главной_таблицы(список_полей_главной_таблицы)

[ON UPDATE CASCADE | SET NULL | SET DEFAULT | NO ACTION]

[ON UPDATE CASCADE | SET NULL | SET DEFAULT | NO ACTION];

Параметры ON UPDATE и ON DELETE указываются при необходимости осуществлять каскадные действия при, соответственно, изменении или удалении значений атрибутов первичного ключа главной таблицы. При попытке изменения значения атрибута, входящего в состав первичного ключа, или удаления строки, на которую ссылаются строки из подчиненных таблиц, СУБД принимает решение либо о выполнении одного из каскадных действий, либо о запрещении SQL-оператора, изменяющего или удаляющего строку в главной таблице.

Если параметры ON UPDATE или ON DELETE равны NO ACTION или они не указаны совсем, СУБД запретит выполнение SQL-оператора, нарушающего ссылочную целостность.

Если после параметров ON UPDATE или ON DELETE стоит значение CASCADE, то произойдет каскадное изменение или удаление строк в подчиненных таблицах. Иными словами, при удалении строки из главной таблицы, будут удалены все строки в подчиненных таблицах, которые ссылались на удаляемую строку. При изменении значения первичного ключа главной таблицы и наличии параметра ON UPDATE со значением CASCADE все значения внешних ключей, ссылающихся на изменяемый атрибут, также изменят свое значение.

Использовать значение CASCADE параметров ON UPDATE и ON DELETE следует с особой осторожностью, поскольку одна ошибочная команда, например, удаления строки в одной из таблиц может повлечь за собой необратимые последствия, которые могут привести к полной неработоспособности приложений базы данных. Если все-таки необходимо выполнять каскадное изменение или удаление данных в подчиненных таблицах, рекомендуется, по возможности, реализовывать это посредством хранимых процедур.

Указание значения SET NULL для параметров ON UPDATE или ON DELETE приведет к тому, что значения атрибутов внешних ключей, ссылающихся на изменяемое значение первичного ключа, установится в NULL.

Указание значения SET DEFAULT для параметров ON UPDATE или ON DELETE приведет к тому, что значения атрибутов внешних ключей, ссылающихся на изменяемое значение первичного ключа, примут значение по умолчанию, заданное при создании таблицы.

Пример создания внешнего ключа, связывающего таблицы Managers и Dealers можно выполнить следующую команду:

ALTER TABLE Managers ADD CONSTRAINT Managers_Dealers_fk

FOREIGN KEY(D_id) REFERENCES Dealers(D_id);