Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 9075-93 Информационная технология (ИТ). Язык баз данных SQL с расширением целостности

     6.7 <определение ограничения на ссылки>


Функция

Задает ограничения на ссылки.

Формат

<определение ограничения на ссылки> : : =

FOREIGN KEY (<обращающиеся столбцы>)

<спецификация ссылок>

<спецификация ссылок> : : =

REFERENCES <таблица и столбцы, к которым обращаются>

<обращающиеся столбцы> : : =

<перечень столбцов ссылок>

<таблица и столбцы, к которым обращаются> : : =

<имя таблицы> [(<перечень столбцов ссылок>)]

<перечень столбцов ссылок> : : =

<имя столбца> [{, <имя столбца>} ...]


Правила синтаксиса

1) Пусть "обращающаяся таблица" означает содержательную таблицу. Пусть "таблица, к которой обращаются", означает таблицу, идентифицированную <именем таблицы> в <таблице и столбцах, к которым обращаются>. Пусть "обращающиеся столбцы" означают столбцы, идентифицированные <перечнем столбцов ссылок> в <обращающихся столбцах>.

2) Возможны следующие варианты:

а) Если <таблица и столбцы, к которым обращаются> задает <имя столбца> или <перечень столбцов ссылок>, то это <имя столбца> или <перечень столбцов ссылок> должны быть идентичными <списку уникальных столбцов> в <определении ограничения уникальности> таблицы, к которой обращаются. Пусть "столбцы, к которым обращаются", обозначают столбцы, идентифицированные этим <именем столбца> или <перечнем столбца ссылок>.

b) Если <таблица и столбец, к которым обращаются> не задают <имя столбца> или <перечень столбцов ссылок>, то <определение таблицы> для таблицы, к которой обращаются, будет содержать <определение ограничения уникальности>, которое задает PRIMARY KEY. Пусть "столбцы, к которым обращаются" обозначают столбцы, идентифицированные <перечнем уникальных столбцов> в этом <определении ограничения уникальности>.

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

Примечание - "Применимые <привилегии>" для <имени таблицы> определены в 6.10 "<определение привилегий>".

4) Таблица, к которой обращаются, должна быть базовой.

5) Каждый обращающийся столбец должен идентифицировать столбец обращающейся таблицы, и одно и то же имя столбца не должно идентифицироваться более одного раза. Каждый столбец, к которому обращаются, должен идентифицировать столбец таблицы, к которой обращаются, и одно и то же имя столбца не должно идентифицироваться более одного раза.

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

Общие правила

1) Обращающаяся таблица и таблица, к которой обращаются, удовлетворяют <определению ограничения на ссылки>, если и только если для каждой строки в обращающейся таблице либо:

a) все обращающиеся столбцы в строке содержат ненулевые значения, и в таблице, к которой обращаются, существует строка такая, что для каждого обращающегося столбца значение обращающегося столбца равно значению соответствующего столбца, к которому обращаются;

или

b) какой-то обращающийся столбец в строке содержит нулевое значение.