опциональность (обязательное, необязательное) и участие (полное, частичное) — одно и то же?

Как я знаю, необязательность означает минимальную мощность отношения, которая обозначается как необязательная к необязательной, обязательная к необязательной, обязательная к обязательной.

А участие обозначено как жирной линией, так и обычной линией.

В Интернете некоторые называют участие зависимостью сущности от отношений, которые также выглядят как идентифицирующие и неидентифицирующие отношения.

а некоторые называют это минимальной кардинальностью

Каковы правильные определения этих отношений и в чем разница.


person Upeksha    schedule 26.06.2016    source источник


Ответы (1)


Начнем с определений и примеров каждого из понятий:

Полное и частичное участие:

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

Полная и частичная связь

Medicine полностью участвует в отношениях Produce, а это означает, что Medicine не может существовать, если Produced не связано с Laboratory. Напротив, Laboratory может существовать без Producing Medicine - Laboratory частично участвует в отношениях Produce.

Обязательные и необязательные роли:

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

Обязательные и необязательные объекты

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

В приведенном выше примере Patient может Purchase Medicine с Prescription или без него. Purchase не может существовать без Patient и Medicine, но Prescription является необязательным (в целом, хотя может потребоваться в определенных случаях).

Выявление взаимосвязи/слабой сущности:

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

Выявление отношений/слабых сущностей

В этом примере Prescription содержит LineItems, которые идентифицируются ключом Prescription и номером строки. Другими словами, таблица LineItems будет иметь составной ключ (Prescription_ID, Line_Number).

Примеры неидентифицирующих отношений см. в предыдущих примерах. Хотя Medicine полностью участвует в отношениях Produce, у него есть собственная идентичность (например, суррогатный ключ, хотя я его не указывал). Обратите внимание, что суррогатные ключи всегда подразумевают обычные сущности.

Обязательное/факультативное участие в сравнении с полным/частичным участием

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

Обязательное частичное участие: См. выше: Laboratory может существовать без производства лекарств, но Medicine не может быть Produced без Laboratory.

Обязательное полное участие: См. выше: Medicine не может существовать, не будучи Produced, а Laboratory не может Produce чего-то неопределенного.

Необязательное частичное участие: см. выше: Prescription может существовать, не будучи Purchased, а Purchase может существовать без Prescription.

Это оставляет необязательное полное участие, о котором мне пришлось немного подумать, чтобы найти пример:

Необязательное общее участие

Некоторые Patients Die неизвестного Cause, но Cause смерти не может существовать без Patient Dying ее.

Полное/частичное участие в сравнении с идентифицирующими/неидентифицирующими отношениями

Как я уже говорил, наборы слабых сущностей всегда полностью участвуют в своих идентифицирующих отношениях. См. выше: LineItem должен быть Contained в Prescription, от этого зависит его идентичность и существование. Частичное участие в идентифицирующих отношениях невозможно.

Полное участие не подразумевает идентифицирующих отношений — Medicine не может существовать, не будучи Produced Laboratory, но Medicine идентифицируется своими собственными атрибутами.

Частичное участие в неидентифицирующих отношениях очень распространено. Например, Medicine может существовать, не будучи Purchased, а Medicine идентифицируется своими собственными атрибутами.

Обязательные/необязательные и идентифицирующие/неидентифицирующие отношения

Для отношений необычно иметь менее двух обязательных ролей. Отношения идентификации являются бинарными отношениями, поэтому родительская и дочерняя роли будут обязательными — отношение Contain между Prescription и LineItem не может существовать без обеих сущностей.

Необязательные роли обычно встречаются только в тройственных и высших отношениях (хотя см. пример пациентов, умирающих от причин), и не участвуют в идентификации. Альтернативой необязательной роли является отношение на отношении:

Ассоциативный объект

Превратив Purchase в ассоциативный объект, мы можем заставить его участвовать в отношениях Fill с Prescription. Чтобы сохранить ту же семантику, что и выше, я указал, что Purchase может только Fill один Prescription.

Физическое моделирование

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

Примеры физических моделей

Однако обычно денормализуют таблицы с одними и теми же первичными ключами, что означает, что отношения «один ко многим» объединяются с таблицей сущностей на стороне многих:

Денормализованные умершие отношения

Отношение физически представлено в виде двух или более ключей сущностей в таблице. В этом случае ключи сущности — patient_id и cause_of_death_id — оба находятся в таблице Patient. Многие люди думают, что линия внешнего ключа представляет связь, но это происходит из-за того, что модель сущность-связь смешивается со старой сетевой моделью данных.

Это ключевой момент — чтобы понять различные виды отношений и ограничения на отношения, важно понять, какие отношения являются первыми. Отношения в ER — это ассоциации между ключами, а не между таблицами. Связь может иметь любое количество ролей разных наборов сущностей, в то время как ограничения внешнего ключа накладывают ограничение подмножества между двумя столбцами одного набора сущностей. Теперь, вооружившись этим знанием, прочитайте еще раз весь мой ответ. ;)

Надеюсь, это поможет. Не стесняйтесь задавать вопросы.

person reaanb    schedule 26.06.2016
comment
означает ли это, что все идентифицирующие отношения полностью участвуют в отношениях? и может ли быть полное и частичное участие в неидентифицирующих отношениях? - person Upeksha; 26.06.2016
comment
Да, слабые сущности всегда полностью участвуют в своих идентифицирующих отношениях, и возможно полное или частичное участие в неидентифицирующих отношениях. - person reaanb; 26.06.2016
comment
Сущность не может существовать без участия в отношениях, значит, это слабая сущность, верно? я имею в виду, могут ли быть неидентифицирующие отношения с полным участием.. можете ли вы привести мне пример.. это слишком запутанно.. - person Upeksha; 26.06.2016
comment
Рассмотрим схему медицинской помощи с наборами участников и зависимых сущностей. Оба могут иметь свои собственные суррогатные ключи, поэтому они являются обычными (не слабыми) объектами. Между членами и зависимыми существует отношение 1 к нулю или более (не идентифицирующее отношение, поскольку оба типа сущностей имеют свою собственную идентичность). Хотя члены могут существовать независимо, они не будут регистрировать иждивенцев без главного члена, поэтому иждивенцы должны полностью участвовать в отношениях. - person reaanb; 26.06.2016
comment
но разве это не то, что мы называем факультативностью... что опять-таки является полным и частичным участием...? - person Upeksha; 26.06.2016
comment
В приведенном выше примере роль члена в отношении является обязательной — каждый экземпляр отношения должен включать члена. Однако члены могут существовать без иждивенцев и, следовательно, не полностью участвовать в отношениях. - person reaanb; 26.06.2016
comment
Зависимая роль также обязательна, в то время как иждивенцы участвуют полностью, поэтому эти две концепции не совпадают. - person reaanb; 26.06.2016
comment
См. stackoverflow.com/questions/38178564/ для примера - person reaanb; 04.07.2016
comment
Извините за беспокойство.. но я не понимаю.. можете ли вы описать вышеприведенное со всеми шестью возможностями.. (полное, частичное, обязательное, необязательное, идентифицирующее, неидентифицирующее) - person Upeksha; 06.07.2016
comment
если сущность полностью участвует в отношениях, означает ли это, что она всегда обязательна? - person Upeksha; 06.07.2016
comment
а в примере на stackoverflow.com/questions/38178564/ как показать обязательное частичное участие? я имею в виду, если необязательность показана пунктирной линией, полное участие показано двойными линиями, а частичное участие показано обычной линией... как показать их вместе? - person Upeksha; 06.07.2016
comment
Я переписал и расширил свой ответ примерами. Надеюсь это поможет. - person reaanb; 06.07.2016
comment
Я не могу отблагодарить вас за эту помощь .. Я, наконец, ясно понял концепции .. :) Большое вам спасибо за усилия, которые вы приложили к этому. - person Upeksha; 15.07.2016
comment
Медицина полностью участвует в отношениях производства, а это означает, что медицина не может существовать, если она не производится лабораторией. Это не так. (Или, по крайней мере, неясно, если вы имеете в виду, что кортеж не может существовать.) Полное участие не подразумевает существования. Здесь вы имеете в виду, что лекарство не может существовать, если оно не производится лабораторией, таким образом лекарство полностью участвует в отношениях производства. Вы могли бы привести дополнительный пример, независимый от существования, например, общее участие типов лекарств, расфасованных во флаконы. - person philipxy; 26.09.2017