Внешние ключи

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

Определение. Пусть R2 – отношение, тогда внешний ключ FK (Foreign Key) в отношении R2 – это подмножество множества атрибутов R2, такое, что:

o cуществует отношение R1 (R1 и R2 не обязательно различны) с потенциальным ключом CK (Candidate Key);

o всегда каждое значение FK в текущем значении R2 или является null-значением или совпадает со значением CK некоторого кортежа в текущем значении R1.

o структурно — тип данных поля должен совпадать с типом данных первичного ключа родительской таблицы (R1);

o содержательно — значения внешнего ключа должны быть только такими, какие имеются в качестве значений первичного ключа родительской таблицы (R1).

Свойства внешнего ключа:

В рассмотренном выше примере (п.9.2) родительской является таблица Students с ключевым полем Student_ID, а дочерней — Marks с точно также поименованным полем Student_ID. По свойствам поле Student_ID таблицы Students исключает повторение значений кода студентов, иначе говоря, каждый студент имеет уникальный код. В дочерней таблице Marks поле Student_ID допускает повторения, что означает: каждый студент может иметь несколько оценок (т.к. оценки студенту выставляются по разным предметам). Однако, значения кодов студентов в таблице Marks должны быть только такими, какие имеются в таблице Students. Тогда мы можем создать схему данных на двух таблицах (рис. 9.4).

Рис.9.4. Схема данных отношений Students и Marks

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

Рис.9.5. Виды ключей


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: