Модели и проектирование баз данных

Пример простого внешнего ключа


. Это пример простого внешнего ключа, соответствующего простому же родительскому ключу.

Если родительский ключ составной, то ссылающийся на него внешний также составной. Например, пусть наша БД должна хранить сведения о том, какой служащий какие манипуляции с записями о поставках проделывал. Тогда схема БД может содержать фрагмент[19], показанный на рис. 2.4.

Рис. 2.4 Составной внешний ключ {S#, P#, J#}

Здесь отношение A_SPJ содержит составной внешний ключ {S#, P#, J#}, ссылающийся на первичный ключ {S#, P#, J#} отношения SPJ, и простой внешний ключ {Emp#}, ссылающийся на первичный ключ {Emp#} отношения Emp.

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

Например, пусть в нашей БД хранятся сведения о городах размещения поставщиков, деталей и изделий. Соответствующий фрагмент схемы БД показан на рис. 2.5. Здесь атрибуты отношений S, P, J, помеченные символом (FK), – внешние ключи, ссылающиеся на отношение Ct. Включать их в состав возможных (первичных) ключей отношений-потомков нет необходимости.



Рис. 2.5 Внешний ключ *.название не входит в состав первичного

ключа потомка

Замечание 8. Отношение может быть одновременно ссылочным и ссылающимся.

Так, на рис. 2.5 отношения S, P и J являются ссылочными для отношения SPJ и ссылающимися на отношение Сt.

Замечание 9. Отношение может ссылаться на себя, т.е. внешний ключ может быть потомком первичного ключа собственного отношения.

Например, в БД бюро ЗАГС может существовать отношение, показанное на рис. 2.6. Здесь атрибут номер паспорта - ссылочный ключ, а атрибут супруг.номер паспорта – ссылающийся на него внешний ключ.

Рис. 2.6 Унарная связь. Отношение ссылается на себя



Содержание раздела