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

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

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

Я создал четыре таблицы Пользователь, Ресурсы, Электронные книги, Библиотека

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

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

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

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

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

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

philipxy 08.04.2019 18:12
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
1
1
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

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

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

Tomi 09.04.2019 12:17

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