Отношения сущностей - может ли слабая сущность участвовать в отношениях «один ко многим» как «один» - PullRequest
2 голосов
/ 17 марта 2010

Со следующей структурой отношений сущностей я пытаюсь выяснить, действительны ли отношения между сущностями LOAN и ITEM?

Слабый объект LOAN использует частичный ключ 'loan_dateLeant' и первичные ключи от CUSTOMER и ITEM для формирования первичного ключа LOAN. Однако у КРЕДИТА есть отношения «один ко многим» с ПУНКТОМ, поскольку кредит может состоять из более чем одной позиции. Но, безусловно, это означает, что если заимствовано более одного элемента, то запись ссуды будет иметь два значения item_id для части ее первичного ключа?

alt text

Ответы [ 2 ]

3 голосов
/ 17 марта 2010

Вы правы, это недопустимо - вы не можете использовать отношение ко многим в качестве определяющей части первичного ключа. Вместо этого вы можете подумать о добавлении уникального loan_id, который вы делаете частью своего первичного ключа, вместо элементов, которые содержит ссуда; затем один кредит определяется его клиентом и идентификатором кредита (или клиентом, датой и идентификатором кредита).

Если это не сработает, сделайте date_leant полем datetime и увеличивайте его точность до тех пор, пока вы не сможете (в рамках ограничений вашей системы) получить два займа одновременно - насколько вероятно это если один клиент совершает два отдельных займа в течение миллисекунд друг от друга?

Обратите внимание, что это не мешает сущности КРЕДИТА участвовать в отношениях как "один"; это просто означает, что вы не можете определить слабую сущность, используя «многие».

0 голосов
/ 11 марта 2011

На самом деле, вы можете сделать это.

Помните, что первичный ключ LOAN будет зависеть только от даты + идентификатор клиента. До тех пор, пока в отношении «может сделать» максимальная мощность равна «1» (т. Е. Кредит относится только к одному клиенту), с первичным ключом все в порядке с LOAN.

Таблица ITEM вместо этого примет (единственный) идентификатор ссуды (customerID + date) в качестве внешнего ключа в ITEM. На первичный ключ LOAN это моделирование не повлияет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...