2017-08-15 64 views
0

我设计的一个项目,其中记录用户可以评级添加到任何的他们阅读,也可以增加状态他们想读什么书/读取/将读取。 所以我创建了表格:Book,User,Rating,Status,我不确定如何将所有这些信息连接在一张表中(如果可能的话)。MySQL数据库的架构设计和关系

现在,我有user_books表,其中我的外键存储到STATUS_IDrating_idbook_idUSER_ID,但我不知道这是否是这样做正确的方式。

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

  • 用户书多对多
  • 图书评级多对一
  • 书本状态多对一

enter image description here

+0

您好泰勒,我认为您的模式是好的。唯一我会考虑的是将表user_books_table中的用户评分和用户状态从不同的表中分离出来以保持灵活性 – Ben

+0

据我所知,您建议创建表f.e. User_book_details与user_rating和user_status,但是,你将如何连接该表和哪个表?用户或User_Book? –

+0

我刚刚画出了所有的模式,我认为无论用户和书籍在同一个表格中,因为无论它是评分还是状态,它们都必须以某种方式连接,以便用户 - >可以 - >费率/更改状态 - >一本书。 –

回答

0

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