Связи в реляционных базах данных

В БД отношения могут быть связаны друг с другом. Например, в БД Факультет отношение Студенты (НомерЗачетнойКнижки, Фамилия, Имя, Отчество, КодГруппы) связано с отношением Группы (КодГруппы, Специальность, Курс). Значение поля КодГруппы в отношении Студенты допустимо только в том случае, если такое значение имеется в качестве значения первичного ключа отношения Группы. В этом случае поле КодГруппы в отношении Студенты является внешним ключом, ссылающимся на первичный ключ – КодГруппы отношения Группы (см. рис. 14).

 
 

 


Значение внешнего ключа является ссылкой к записи, содержащей соответствующее значение первичного ключа. Отношение, содержащее внешний ключ, называется ссылающимся (подчиненным), аотношение, содержащее объект ссылки (первичный ключ) – ссылочным (главным).

 

Внешние ключи реализуют следующие три типа связей между двумя отношениями.

1. Один-к-одному: каждой записи первого отношения соответствует не более одной записи второго отношения, а каждой записи второго отношения – не более одной записи первого отношения. Например – см. рис. 15.

2. Один-ко-многим: каждой записи ссылочного (главного) отношения соответствует ноль, одна или несколько записей ссылающегося (подчиненного) отношения, а каждой записи ссылающегося (подчиненного) отношения соответствует только одна запись ссылочного (главного) отношения. Пример – см. рис. 14.

3. Многие-ко-многим: каждой записи первого отношения соответствует ноль, одна или несколько записей второго отношения, и каждой записи второго отношения соответствует ноль, одна или несколько записей первого отношения. В реляционной модели данных такая связь напрямую не реализуется – она может быть смоделирована разбиением на две связи типа один-ко-многим: вводится дополнительное отношение, в качестве полей которого задаются первичные ключи связываемых отношений. Причем в этом дополнительном отношении первичный ключ будет составным, включающим оба первичных ключа. Пример – см. рис. 16.