Задать вопрос
@Sushkov
">alert("yohoho")

Идентифицирующая или неидентифицирующая связь?

Не могу понять, что когда использовать. Прочитал, что идентифицирующая связь преобразует дочернюю сущность в зависимую. Но ведь можно сделать неидентифицирующую связь и все равно ключ будет в дочерней сущности. В чем смысл?
  • Вопрос задан
  • 28318 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Смысл в том, что при идентифицирующей связи внешний ключ в дочерний сущности также становится частью первичного ключа. В этом и смысл фразы "зависимая сущность" - т.к. внешний ключ есть часть первичного, то сущность просто не может существовать без указания значения внешнего ключа.

Хороший пример - сущность "элемент заказа" (OrderItem). Не может быть элемента заказа без самого заказа. Поэтому идентифицирующая связь из отношения "заказ" (Order) отлично тут подойдет. Если у заказа первичный ключ Id, то первичный ключом OrderItem будет, к примеру, такая пара: (OrderId, Number), где OrderId - внешний ключ в таблицу заказов, добавленный идентифицирующей связью, а Number - номер элемента заказа (строки в чеке, если так понятнее), позволяющий иметь несколько заказанных товаров в одном заказе.

Неидентифицирующая связь, соответственно, НЕ добавляет колонки внешнего ключа в первичный ключ. Соответственно, значение внешнего ключа при неидентифицирующей связи может быть как NULL, так и NOT NULL.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы