数据库设计-与关系和 FK 作斗争

标签 database database-design

我正在建立一个需要数据库的网站。我希望用户能够

  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

我正在与人际关系和 FK 作斗争。我在用户和图书馆之间建立了一种关系,因为 1 个用户将拥有 1 个图书馆,但是,我希望用户能够向他们的个人图书馆添加尽可能多的书籍/资源,那么用户和图书馆之间的关系是什么资源/电子书是什么?

这可能是一个非常简单的解决方案,但我是数据库的新手,所以不要评判!

提前致谢。

最佳答案

从问题中,我理解/假设一个资源/电子书可以在许多图书馆中,一个图书馆可以包含许多资源/电子书(多对多)

因此我们可以创建映射表如下:

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

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

通过这种方式,我们在图书馆资源和图书馆电子书之间创建了多对多关系。 因此,用户将分别通过 ResourceLibraryMap/EbookLibraryMap 拥有许多资源/电子书

关于数据库设计-与关系和 FK 作斗争,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55575448/

相关文章:

mysql - 库存数据库 : Merging Perpetual and Periodic inventory system

mysql - 是否可以向 mysql 中的字段添加额外的列?

java - 如何在 JPA 中定义多态性

database - 具有复杂数据库结构中条件的 Hibernate 查询

c# - 一个库支持多个数据库

php - 使用 PHP 检查 MySQL 数据库是否为空

mysql - 在 MySQL 中检索上周的所有日期

database - 一个简单的问题,在多对多关系中,哪个表应该有另一个表的外键

database - Oracle 索引勉强加速聚合计算

database - Windows 8 Metro 风格应用程序是否支持 SQL Server CE 本地数据库?