СМЫСЛ ВНЕШНЕГО И РОДИТЕЛЬСКОГО КЛЮЧЕЙ
Когда поле - является
внешним ключом, оно определеным образом связано с таблицей на которую он ссылается. Вы,
фактически, говорите - "
каждое значение в этом поле ( внешнем ключе ) непосредственно привязано к значению в другом
поле ( родительском
ключе )." Каждое значение ( каждая строка ) внешнего ключа должно недвусмысленно ссылаться к
одному и только этому
значению (строке) родительского ключа. Если это так, то фактически ваша система, как
говорится, будет в состоянии
справочной целостности. Вы можете увидеть это на примере. Внешний ключ snum в таблице Заказчиков
имеет значение
1001 для строк Hoffman и Clemens. Предположим что мы имели две строки в таблице Продавцов со
значением в поле snum =
1001. Как мы узнаем, к которому из двух продавцов были назначены заказчики Hoffman и Clemens ?
Аналогично, если нет
никаких таких строк в таблице Продавцов, мы получим Hoffman и Clemens назначенными к продавцу
которого не
существует! Понятно, что каждое значение во внешнем ключе должно быть представлено один, и
только один раз, в
родительском ключе. Фактически, данное значение внешнего ключа может ссылаться только к
одному значению
родительского ключа не предполагая обратной возможности: т.е. любое число внешних ключей
может ссылать к
единственному значению родительского ключа. Вы можете увидеть это в типовых таблицах наших
примеров. И Hoffman и
Clemens назначены к Peel, так что оба их значения внешнего ключа совпадают с одним и тем же
родительским ключом, что
очень хорошо. Значение внешнего ключа должно ссылаться только к одному значению родительского
ключа, зато значение
родительского ключа может ссылаться с помощью любого колличества значений внешнего ключа.