Все это немного абстрактно - и я не уверен, что вы скопировали каждую часть оригинала.
"Слабая сущность" - это сущность, которая не может существовать вне контекста другого. Классическими примерами являются "order_lines" в системе закупок, которые имеют смысл только в контексте таблицы "orders".
Слабый набор сущностей может участвовать в отношениях, отличных от идентифицирующих отношений. Например, платежный субъект может участвовать в отношениях с набором учетных записей, идентифицируя счет, с которого был произведен платеж.
Это означает, что в то время как слабый субъект должен иметь «идентифицирующие» отношения(в приведенном выше примере order_line должен иметь отношение order_id к своей базовой таблице), он также может быть связан с другими объектами, например, «ставкой НДС» в примере строк заказа. Ставка НДС - not_identifying_ - вы не можете ссылаться на строку заказа как «эту одну строку в заказе со ставкой НДС 15%».
Слабый набор сущностей может участвовать как владелец в идентифицирующих отношениях сдругой слабый набор сущностей. набор сущностей.
Это означает, что слабая сущность может быть «родителем» другой слабой сущности - другая сущность не имеет смысла вне родителя. Например, в нашей системе закупок может быть таблица с именем «order_line_discounts», которая фиксирует скидки, применяемые к каждой строке заказа. Эти скидки не имеют смысла без строки заказа, а строка заказа не имеет смысла без заказа.
Также возможно иметь набор слабых объектов с более чем одной идентификацией. Затем конкретный слабый объект будет идентифицироваться комбинацией объектов, по одному из каждого набора идентифицирующих объектов. Первичный ключ набора слабых объектов будет состоять из объединения первичных ключей наборов идентифицирующих объектов плюс дискриминатор набора слабых объектов.
Это означает, что слабому объекту может потребоваться большечем один родитель, чтобы иметь смысл. Если это происходит, первичный ключ состоит из внешних ключей для всех родителей, плюс (при необходимости) дополнительный дискриминатор для уникальной идентификации этой комбинации. В нашей системе закупок order_line
является слабой сущностью, связанной с orders
, но также и с products
. Заказ может содержать более одной строки для продукта, поэтому «дискриминатор» позволит вам однозначно идентифицировать каждую строку заказа.