【问题标题】:MySQL Database schema design and relationshipsMySQL 数据库模式设计和关系
【发布时间】:2017-08-15 10:20:14
【问题描述】:

我正在设计一个项目,其中登录的用户可以将rating添加到他们阅读的任何书籍,还可以添加状态他们想要阅读/阅读/将阅读的任何书。 所以我创建了表格:Book、User、Rating、Status,我不确定如何将所有这些信息连接到一个表格中(如果可能的话)。

现在,我有 user_books 表,我在其中存储 status_idrating_idbook_iduser_id,但我不确定这样做是否正确。

我想在我的 SpringBoot 应用程序中创建的关系:

  • 用户手册ManyToMany,
  • 图书评级ManyToOne
  • 图书状态ManyToOne

【问题讨论】:

  • 嗨,泰勒,我认为您的架构很好。我唯一想到的是将用户评分和用户状态从不同表中的表 user_books_table 中分离出来以保持灵活性
  • 据我了解,您建议创建表 f.e. User_book_details 与 user_rating 和 user_status,但是,您将如何连接该表以及与哪个表?用户还是 User_Book?
  • 我只是画了所有的模式,我认为无论什么用户和书必须在同一个表中,因为无论是评级还是状态,它们都必须以某种方式连接这样用户-> 可以-> 评价/更改状态-> 一本书。

标签: java mysql spring hibernate jpa


【解决方案1】:

看起来你想创建一个多对多的关系。逻辑上确实存在多对多关系,但是当涉及到物理模型时,您创建了一个映射表,您已经这样做了 -> user_books 表。根据映射表中的id,你可以得到这些 1)阅读“那本书”的用户数量。 2)一本书的最高评分。 3) 基于用户年龄组的书的评分(如果用户表有年龄)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    相关资源
    最近更新 更多