首页 > 解决方案 > 数据库设计——在关系和 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

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

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

提前致谢。

标签: databasedatabase-design

解决方案


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

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

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

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

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


推荐阅读