Почему необходимо указывать идентифицирующие или не идентифицирующие отношения в ERD?

В ERD слабое/не идентифицирующее отношение - это соединение, которое соединяет два сильных объекта и обозначается пунктирной линией. Сильная/идентифицирующая связь - это связь, которая соединяет сильный объект со слабым сущностью (слабый объект - это тот, который содержит внешний ключ [FK] из связанного с ним объекта как компонент его собственного первичного ключа [PK]), и указывается сплошной линией.

Мой вопрос: И что? Почему так важно различать слабые/неидентифицирующие отношения по сравнению с сильными/идентифицирующими отношениями, которые, по мнению дизайнеров ERD, должны делать это различие с пунктирными или сплошными линиями, соответственно? Почему это так важно?

Для меня каждый элемент и соглашение в ERD должны добавлять необходимую информацию, которая либо переводится непосредственно в конструкцию базы данных (то есть, в заявлениях DDL SQL), либо, по крайней мере, объясняет важную информацию, но не обязательно очевидную (и пример этот последний случай будет называть отношения - они не переводятся в SQL, но они очень полезны для понимания ERD). Вот пример ERD для обсуждения (изменен из qaru.site/info/12743/...):

sample ERD

Я это много рассмотрел, и для меня единственная информация, которую добавляет сплошная или пунктирная линия, уже адекватно передана в следующих соглашениях:

  • Независимо от того, является ли FK частью объекта PK (PK, FK1 или PK, FK2 в образце ERD).
  • Независимо от того, является ли FK обязательным атрибутом (жирным) или необязательным атрибутом (не жирным).

Насколько я вижу, сплошная и пунктирная линия отношений не добавляет дополнительной полезной информации. Вместо того, чтобы добавлять информацию, это соглашение не является интуитивным и очень запутанным. Как один из примеров путаницы, которые они вызывают, в StackOverflow есть много повторяющихся вопросов, которые спрашивают, что это такое; вот лишь несколько примеров:

Может ли кто-нибудь объяснить мне, какая дополнительная информация добавляется в соглашение, которая не содержится в том, что FK может быть или не быть частью ПК? Я серьезно рассматриваю возможность полностью игнорировать соглашение (то есть, я хочу начать рисовать ERD со всеми сплошными линиями), но я был бы очень признателен, если бы кто-то мог указать на что-то важное, что я пропускаю.

Ответ 1

Соглашение, используемое в диаграммах модели ER, заключается в том, что атрибуты ссылок (внешний ключ) вообще не отображаются, если они не являются частью первичного ключа. Если требуются ссылки на атрибуты, они должны подразумеваться наличием линии отношений. Соответственно, стандартная или общепринятая ER-запись для атрибутов внешнего ключа отсутствует, даже если они являются частью первичного ключа. Случай, когда ссылки на атрибуты необходимы для идентификации экземпляров объекта, часто вызывается на диаграммах ER, используя линию пунктирных отношений. Предполагается, что мотивация здесь заключается в том, что "первичные" ключевые атрибуты считаются обязательными и значимыми, поэтому их зависимость от других вещей также значительна.

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