Ссылочная целостность. Если в отношении существует внешний ключ, то либо знаечение внешнего ключа должно соответствовать значению потенцеального ключа некоторого кортежа в его

Если в отношении существует внешний ключ, то либо знаечение внешнего ключа должно соответствовать значению потенцеального ключа некоторого кортежа в его базовом отношении, либо этот внешний ключ должен состоять из значения null полностью.

Ссылочная ценность - если поле внешнего ключа содержит некоторое значение, то оно обязательно должно ссылаться на существующую допустимую строку в родительской таблице.

Стандарт ISO предусматривает механизм определения внешних ключей: в операторах create table(создать) и alter table(изменить) предусматривается конструкция foreign key, тогда система отклоняет выполнение любых операторов insert или update, если с их помощью предпринимается попытка создать в дочерней таблице значение внешнего ключа, несоответствующее ни одному потенциальному ключу родительской таблице.

Действия системы выполняемые при поступлении операторов update или delete, которые содержит попытку обновить или удалить значение потенциального ключа в родительской таблице (если ему соответствуют какие то строки дочерней таблицы), зависят от принятых правил поддержки ссылочной ценности. Эти правила явно указываются в конструкции foreign key.

В SQL предусмотрены 4 варианта допустимых действий:

1) каскадное удаление (cascade) — удаление строки из родительской таблицы, сопровождается автоматическим удалением всех ссылающихся на нее сторк дочерней таблицы, дальше эта операция повторяется рекурсивно (каскадно) для всех ниже лежащих таблиц иерархии.

2) Set null (более мягкий) — выполняется удаление строки из родительской таблицы, а во внешние ключи всех ссылающихся на нее строк дочерней таблицы заносится null. Этот вариант пременим только в том случае если в определении столбца внешнего ключа отсутствует ключевое слово not null.

3) Set default (значение по умолчанию) — выполняется удаление строки из родительской таблицы, а во внешние ключи всех ссылающихся на нее строк дочерней таблицы заносится предопределенное значение по умолчанию. Варинта применим тогда, когда в определении столбца внешнего ключа присутствует ключевое слово default и значение по default задано.

4) NO ACTION — операция удаления строки из родительской таблицы отвергается и пользователю посылается уведомление об ошибке.

Те же правила применяются в SQL если значение потенциального ключа в родительской таблице обновляется.

Для реализации ссылочной ценности удобно исмользовать механизм триггеров.

Ограничения для доменов: Каждый столбец имеет собственный домен (некоторый набор допустимых значений).

Стандарт ISO предусматривает два механизма определения доменов (это естественно происходит при создании таблицы и при изменении таблицы):

1) create table:CHECK (search Condition)

2) можно отдельно использовать оператор CREATE DOMAIN, каждому создаваемому домену присваивается: имя, тип данных (data type), и могут быть другие необязательные значения.

Удаление домена можно произвести с помощью DROP DOMAIN. Домен может быть удален каскадно.

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

Корпаративные ограничения целостности — это дополнительные правила поддержки целостности данных, определяемые пользователями или администраторами базы данных для конкретного бизнес процесса.

Стандарт ISO позволяет создать деловой регламент двумя вариантами:

1. в операторках create table и alter table пишется CHECK и ключевое слово UNIQUE.

2. CREATE ASSERTION

Обобщение целостности:

1) обязательность наличия данных указывается с помощью ключевого слова NOT NULL

2) Ограничение для доменов, задаются либо с помощью конструкции CHECK либо посредством создания соответствующего домена с момощью CRATE DOMAIN.

3) Первичные ключи определяются с помощью конструкции primary key, альтернативные ключи описываются с помощью комбинации ключевых слов not null и unique, внешние ключи описываются с помощью foreign key.

4) Корпоративное ограницение то есть бизнес предприятие задаются с помощью конструкции check и unique или с помощью create assertion.

5) Существуют 4 типа реализации ссылочной ценности: каскадное удаление, подстановка значения null, подставление значения по умолчанию или предупреждение о такой операции.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: