Проектирование базы данных -проблемы с отношениями и FK

#database #database-design

#База данных #database-design

Вопрос:

Я создаю веб-сайт, для которого требуется база данных. Я хочу, чтобы пользователи могли

  1. Войдите на веб-сайт (поэтому необходимо сохранить данные пользователя)
  2. Поиск ресурсов
  3. Поиск электронных книг
  4. Добавление ресурсов / электронных книг в личную библиотеку

Я создал четыре таблицы User, Resources, Ebooks, Library

Таблица пользователя состоит из следующих полей

 User_ID
User_first_name
User_Last_name
Username
User_password (encrypted)
User_Email
  

Ресурсы состоят из следующих полей

 Resource_ID
Resource_Name
Resource_Category
  

Электронные книги состоят из следующих полей

 Ebook_ID
Ebook_name
Ebook_category
  

Библиотека состоит из следующих полей

 Library_ID
User_ID
  

Я борюсь с отношениями и FKS. Я создал отношения между пользователем и библиотекой, поскольку у 1 пользователя будет 1 библиотека, однако я хочу, чтобы пользователи могли добавлять столько книг / ресурсов, сколько они хотят, в свою личную библиотеку, так какими будут отношения между пользователем и ресурсами / электронной книгой?

Это может быть действительно простым решением, но я новичок в базах данных, поэтому не судите!

Заранее спасибо.

Комментарии:

1. Время прочитать опубликованный академический учебник по информационному моделированию и дизайну баз данных. (Руководства по языкам и инструментам для записи и использования проектов не являются учебниками по информационному моделированию и проектированию баз данных.) Задайте вопрос о том, что вы застряли после этого. PS Нет ни одного «отношения» между / по каким-либо конкретным вещам. Таблица представляет отношение (корабль) / ассоциации между вещами. Вам нужно рассказать нам, какие из них вас интересуют. Например, «у пользователя [user_Id] есть ресурс [resource_id] в их библиотеке»? PS Может быть, вы застряли в повторном моделировании книг как (под) типов ресурсов?

Ответ №1:

Из вопроса я понимаю / предполагаю, что ресурс / электронная книга может находиться во многих библиотеках, а библиотека может содержать много ресурсов / электронных книг (многие ко многим)

Следовательно, мы можем создать таблицу сопоставления следующим образом:

 ResourceLibraryMap
----------------
resource_id
library_id

EbookLibraryMap
-------------
ebook_id
library_id
  

Таким образом, мы создали связь many_to_many между библиотечными ресурсами и библиотечными электронными книгами.
Следовательно, у пользователя будет много ресурсов / электронных книг через ResourceLibraryMap / EbookLibraryMap соответственно

Комментарии:

1. Да, ваше понимание правильное, я считаю, что это решит мою проблему. Большое вам спасибо.