Отношения в модели ER
Я изучаю моделирование ER о системах баз данных. Моя проблема в том, что существует сущность с именем books, enitity с именем user, и я хочу создать отношение заимствований между пользователем и книгой с датой выпуска атрибута. Я смоделировал это, как описано, но было отмечено, что заимствования не могут быть отношениями, потому что один и тот же пользователь может одолжить книгу дважды. Кто-нибудь может мне объяснить, что это такое, поскольку я использую данные о проблемах в качестве атрибута, чтобы записи в отношении заимствований не сталкивались, так как я буду использовать PK в качестве идентификатора пользователя,bookid и даты выпуска. Как я могу смоделировать это точно? Я немного запутался в этом.
2 ответа
В модели ER отношения сущностей состоят из атрибутов одного набора сущностей, в котором PK идентифицирует только один набор сущностей. Отношения отношений имеют составной PK, который представляет два или более наборов сущностей.
Ваш вопрос использует составной ПК, который представляет два набора сущностей (userid
а также bookid
) и набор значений (issue date
). Строго говоря, это ни отношение сущности, ни отношение отношения. Это комбинация отношения отношения (два ключа сущности) и набора слабых сущностей (issue date
функции, аналогичные слабому ключу). Если мы хотим быть креативными, мы можем назвать это слабыми отношениями.
Если бы я был вынужден нарисовать диаграмму ER для этого, я мог бы представить это так:
Модель ER не является полной логической моделью (в отличие от реляционной модели), и есть некоторые ситуации, которые не обрабатываются хорошо или вовсе. Это одна из тех ситуаций.
Согласно описанию, Пользователь и Книга являются сущностями.
Один пользователь может одолжить экземпляр книги. Аналогично, один пользователь может заимствовать несколько экземпляров книги, будь то один или несколько экземпляров.
Таким образом, каждая транзакция между пользователем и книгой имеет дату выпуска. Ни у пользователя, ни у книги нет даты выпуска.
Здесь отношения между Пользователем и Книгой являются Многими ко Многим.
Таблица Мост - этоТранзакция. Мы можем назвать это как Заем также в соответствии с вашими интересами.
Теперь у пользователя есть одна-много транзакций. Каждая книга имеет одну-много транзакций.
Каждая транзакция представляет собой комбинацию пользователя и книги.
Примечание. Поскольку каждый пользователь может иметь одну и ту же книгу несколько раз и в один и тот же день.Таким образом, у нас может быть составной первичный ключ user_id, book_id и Issue_timestamp, поскольку существует вероятность избыточности даты выпуска в той же комбинации.