Являются ли факультативность (обязательная, необязательная) и участие (общая, частичная) одинаковыми?
Как я знаю, необязательность означает минимальное количество отношений, которые обозначаются как необязательные для необязательных, обязательные для необязательных, обязательные для обязательных.
И участие обозначается как жирная линия и нормальная линия.
В Интернете некоторые называют участие как зависимость сущности от отношений, которые также выглядят как идентифицирующие и неидентифицирующие отношения.
а некоторые называют это минимальным количеством элементов
Каковы правильные определения этих отношений и в чем разница..
1 ответ
Давайте начнем с определений и примеров каждого из понятий:
Полное и частичное участие:
Общее участие (обозначено двойной или толстой линией связи) означает, что все сущности в наборе сущностей должны участвовать в отношениях. Частичное участие (обозначено одной тонкой линией) означает, что в наборе сущностей могут быть сущности, которые не участвуют в отношениях.
Medicine
полностью участвует в Produce
отношения, означающие, что Medicine
не может существовать, если Produced
по Laboratory
, В отличие от Laboratory
может существовать без Producing
Medicine
- Laboratory
частично участвует в Produce
relationsip.
Обязательные и необязательные роли:
В отношениях роли могут быть необязательными или обязательными. Это влияет на то, может ли экземпляр отношения существовать без сущности в данной роли. Обязательные роли обозначены сплошной линией связи, необязательные роли обозначены пунктирной линией.
Роли не часто обсуждаются в руководствах по базам данных, но они являются важной концепцией. Рассмотрим брак - это отношения с двумя обязательными ролями, заполненными одним и тем же набором сущностей. В большинстве отношений наборы сущностей также определяют роли, но когда набор сущностей появляется несколько раз в одной взаимосвязи, мы различаем их в разных ролях.
В приведенном выше примере Patient
Можно Purchase
Medicine
с или без Prescription
, Purchase
не может существовать без Patient
а также Medicine
, но Prescription
не является обязательным (в целом, хотя это может потребоваться в определенных случаях).
Выявление отношений / слабой сущности:
Слабая сущность - это сущность, которая не может быть идентифицирована своими собственными атрибутами и поэтому имеет ключ другой сущности как часть своего собственного. Идентифицирующая связь - это связь между слабой сущностью и ее родительской сущностью. И идентифицирующая связь, и слабая сущность обозначены двойными границами. Слабые наборы сущностей обязательно должны полностью участвовать в их идентифицирующих отношениях.
В этом примере Prescription
содержит LineItems
которые определены Prescription
ключ и номер строки. Другими словами, LineItems
таблица будет иметь составной ключ (Prescription_ID, Line_Number)
,
Примеры неидентифицирующих отношений см. В предыдущих примерах. В то время как Medicine
полностью участвует в Produce
отношения, у него есть своя собственная идентичность (например, суррогатный ключ, хотя я не указал это). Обратите внимание, что суррогатные ключи всегда подразумевают обычные объекты.
Обязательно / необязательно против общего / частичного участия
Обязательные или необязательные роли указывают, требуется ли определенная роль (с соответствующим набором сущностей) для существования отношения. Полное или частичное участие указывает, необходимы ли определенные отношения для существования организации.
Обязательное частичное участие: см. Выше: A Laboratory
может существовать без производства каких-либо лекарств, но Medicine
не может быть Produced
без Laboratory
,
Обязательное общее участие: см. Выше: Medicine
не может существовать без Produced
и Laboratory
не может Produce
что-то не указано.
Дополнительное частичное участие: см. Выше: A 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 - это ассоциации между ключами, а не между таблицами. Отношение может иметь любое количество ролей различных наборов сущностей, в то время как ограничения внешнего ключа обеспечивают ограничение поднабора между двумя столбцами одного набора сущностей. Теперь, вооружившись этим знанием, прочитайте весь мой ответ еще раз.;)
Надеюсь, это поможет. Не стесняйтесь задавать вопросы.