Хотя в приведенном примере имена внешнего и родительского ключей
совпадают , они не обязательно должны быть одинаковыми , хотя часто их
сознательно задают одинаковыми , чтобы соединение было более наглядным.
4.6.2. Составные внешние ключи
На практике внешний ключ не обязательно может состоять только из
одного поля. Подобно первичному ключу, внешний ключ может состоять из
любого числа полей . Внешний ключ и родительский ключ , на который он
ссылается, конечно же, должны быть определены на одинаковом множестве
полей (по количеству полей , типам полей и порядку следования полей ).
Внешние ключи, состоящие из одного поля – применяемые в типовых
таблицах настоящего издания, наиболее часты на практике. Чтобы сохранить
простоту обсуждения, будем говорить о внешнем ключе, как об одиночном
столбце, хотя все, что будет излагаться о поле, которое является внешним
ключом, справедливо и для составных внешних ключей , определенных на
группе полей .
4.6.3. Смысл внешнего и родительского ключей
Когда поле является внешним ключом, оно определенным образом
связано с таблицей , на которую этот ключ ссылается. Каждое значение в
этом поле (внешнем ключе) непосредственно привязано к конкретному
значению в другом поле (родительском ключе). Значения родительского
ключа должны быть уникальными , так он одновременно является ключом
отношения. Значения внешнего ключа не обязательно должны быть
уникальными , то есть в отношении может быть любое число строк с
одинаковыми значениями атрибутов , являющихся внешним ключом. При
этом строки, содержащие одинаковые значения внешнего ключа должны
обязательно ссылаться на конкретное, присутствующее в данный момент в
таблице, значение родительского ключа. Кроме того , ни в одной строке
таблицы не должно быть значений внешнего ключа, для которых в текущий
момент отсутствуют соответствующие значения родительского ключа.
Другими словами не должно быть так называемых “висячих” ссылок