database - 数据库设计——在关系和 FK 中苦苦挣扎
问题描述
我正在建立一个需要数据库的网站。我希望用户能够
- 登录网站(因此需要保留用户详细信息)
- 搜索资源
- 搜索电子书
- 将资源/电子书添加到个人图书馆
我创建了四个表用户、资源、电子书、图书馆
用户表由以下字段组成
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
通过这种方式,我们在 library-resources 和 library-ebooks 之间创建了 many_to_many 关系。因此,用户将分别通过 ResourceLibraryMap/EbookLibraryMap 拥有许多资源/电子书
推荐阅读
- javascript - D3.extent() 抛出 TypeError :值不可迭代
- codeigniter - CodeIgniter 4 路由无法正常工作
- lua - lua:尝试索引字段“?” (零值)
- tensorflow-datasets - 当未指定steps_per_epochs时,不需要tensorflow数据集中的repeat()函数
- excel - 基于两个复选框值进行过滤
- sql - 通过更改元素进行 T-SQL 分组
- google-analytics - 跟踪登录用户与访客用户
- java - 如何以表格格式打印我的数组列表值
- excel - 不同用户的日期排序宏问题
- python - 如何解决 IndexError: list index out of range in a list of dict?