Отношения сущностей - Может ли слабая сущность участвовать в отношениях "один ко многим" в качестве "единого"

StackOverflow https://stackoverflow.com/questions/2464094

Вопрос

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

Слабый объект LOAN использует частичный ключ 'loan_dateLeant' и первичные ключи от CUSTOMER и ITEM для формирования первичного ключа LOANs.Однако ССУДА имеет отношение "один ко многим" с товаром, поскольку ссуда может состоять из более чем одного товара.Но, конечно, это означает, что если предоставлено более одного элемента, то запись о предоставлении кредита будет иметь два значения item_id для части ее первичного ключа?

alt text

Это было полезно?

Решение

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

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

Обратите внимание, что это не мешает организации-ЗАЕМЩИКУ принимать участие в отношениях в качестве "единого";это просто означает, что вы не можете определить слабую сущность, используя "много".

Другие советы

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

Помните, что первичный ключ КРЕДИТА будет зависеть только от даты + идентификатора клиента.Пока существует максимальная мощность "1" для отношения "могу сделать" (т. Е. кредит связан только с 1 клиентом), у вас все в порядке с первичным ключом с помощью LOAN.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top