客户评价的关系数据库设计

时间:2013-05-28 09:01:43

标签: database schema relational-database

假设我想创建一个数据库来存储餐馆的顾客评论。

现在假设我有一个名为' Qualities'的数据库表。餐厅具有的某些品质(例如客户服务,食品质量,氛围,物有所值等)以及每种品质的更详细描述。

现在让我们说我还有一张名为'评论'个人评论中,对“质量”中的每个上述特质进行评级。表

这造成了一个两难境地:'评论'中的列数。 table取决于' Qualities'中的行数。表。如果我们在“品质”中添加一个新的质量评级。表我们需要在'评论'中创建相应的列。表,以便用户评价此质量。

为上述问题设计关系数据库的最佳方法是什么?如果您在回答时包含数据库架构,则可能会有所帮助。

感谢。

1 个答案:

答案 0 :(得分:3)

你的解释方式是正确的,你需要一个被评论的餐厅支持的每个品质的专栏。如果“品质”是动态的,那么最好也使得相关评分也是动态的。因此,您最好将这些分数维护为将分数映射到每个质量以进行审核的行,而不是将分数保留为评论中的列。

我可能会这样做:

             restquality (m:n)
                |n    |n
                |1    |
user     restaurant   |
 |1       |1          |1
 |        |n       quality
 +----n-review      |1
           |1       |
           |n       |n
        reviewquality (m:n)
  • 用户可以查看许多餐馆
  • 餐厅可能具有许多品质,而且可以将质量应用于多个餐厅(通过重新平等管理的m:n关系)。
  • 评论“评论”某个特定的餐厅,根据与该餐厅相关的品质给出每个品质的分数。这是通过审查质量进行管理的,该审核质量包括:此评论将此分数提供给此质量(父母评论参考餐厅)。

重要架构:

  • 评论:reviewid(pk),userid,restid,summary
  • reviewquality:reviewqualityid(pk),reviewid,qualityid,score
  • restquality:restqualityid(pk),restaurantid,qualityid

希望这有帮助。