ВВЕДЕНИЕ В СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ




Синтаксис ограничений стандарта SQL - часть 3


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

Ограничение NOT NULL. Ограничение NOT NULL столбца не допускает появления в столбце NULL-значений.

Ссылочная спецификация. Ссылочная спецификация определяет характеристики внешнего ключа таблицы.

Предложение MATCH {FULL | PARTIAL}. Предложение MATCH FULL требует полного совпадения значений внешнего и первичного ключей. Предложение MATCH PARTIAL допускает частичное совпадение значений внешнего и первичного ключей. Предложение MATCH может быть также пропущенным. Для случая MATCH PARTIAL в дочерней таблице могут появиться строки, имеющие значения внешнего ключа, неуникально совпадающие со значениями родительского ключа. Т.е. одна строка дочерней таблицы может иметь неуникальные ссылки не несколько строк родительской таблицы. Это очень сильно отличается от реляционной модели данных, и это отличие провоцируется допущением NULL-значений. Чтобы рассмотреть различные варианты совпадений внешнего и родительского ключей, рассмотрим следующий пример.

Пример 17. Пусть имеется две таблицы:

X

Y

1 Aa
1 Bb
2 Cc
2 Dd
3 Ee
3 Ff

Таблица 4 таблица A (Родительская)

Z

X

Y

1 1 Aa
2 1 Null
3 Null Cc
4 Null Null
5 4 Gg

Таблица 5 Таблица B (Дочерняя)

Таблица A имеет первичный ключ (X, Y). Таблица B имеет первичный ключ Z, и внешний ключ (X, Y), ссылающийся на первичный ключ таблицы A. Различные варианты совпадения строк дочерней таблицы B со строками родительской таблицы A приведены ниже:

MATCH отсутствует

MATCH FULL

MATCH PARTIAL

Колонки X и Y таблицы B допускают null-значения Колонки X и Y таблицы B не допускают null-значений
1 строка - допустима, совпадает с 1 строкой таблицы A.

2 строка - допустима, не совпадает ни с чем.

3 строка - допустима, не совпадает ни с чем.

4 строка - допустима, не совпадает ни с чем.

5 строка - не допустима.

1 строка - допустима, совпадает с 1 строкой таблицы A.

2 строка - не допустима.

3 строка - не допустима.

4 строка - не допустима.

5 строка - не допустима.

1 строка - допустима, совпадает с 1 строкой таблицы A.

2 строка - не допустима.

3 строка - не допустима.

4 строка - допустима, не совпадает ни с чем.

5 строка - не допустима.

1 строка - допустима, совпадает с 1 строкой таблицы A.

2 строка - не допустима.

3 строка - не допустима.

4 строка - не допустима.

5 строка - не допустима.

1 строка - допустима, совпадает с 1 строкой таблицы A.

2 строка - допустима, неуникально совпадает с 1 и 2 строками таблицы A.

3 строка - допустима, уникально совпадает с 3 строкой таблицы A.

4 строка - допустима, не совпадает ни с чем.

5 строка - не допустима.

1 строка - допустима, совпадает с 1 строкой таблицы A.

2 строка - не допустима.

3 строка - не допустима.

4 строка - не допустима.

5 строка - не допустима.

<


Содержание  Назад  Вперед