【问题标题】:Database Design-struggling with relationships and FKs数据库设计——在关系和 FK 中苦苦挣扎
【发布时间】:2019-04-09 15:09:10
【问题描述】:

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

  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 个图书馆,但是,我希望用户能够向他们的个人图书馆添加尽可能多的书籍/资源,那么用户和图书馆之间的关系是什么?资源/电子书是?

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

提前致谢。

【问题讨论】:

  • 是时候阅读一本已出版的关于信息建模和数据库设计的学术教科书了。 (记录和使用设计的语言和工具手册不是信息建模和数据库设计的教科书。)问一个关于被卡在后面的问题。 PS 在任何特定事物之间/关于任何特定事物都没有“关系”。表表示事物之间的关系(船)/关联。您需要告诉我们您对哪些感兴趣。例如“用户 [user_Id] 在他们的库中有资源 [resource_id]”? PS您是否可能将重新建模书籍作为(子)类型的资源?

标签: database database-design


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 是的,你的理解是正确的,我相信这会解决我的问题。非常感谢。
猜你喜欢
  • 2012-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多