2013-05-28 63 views
2

假设我想创建一个数据库来存储顾客对餐厅的评论。关于客户评论的关系数据库设计

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

现在我们假设我也有一张表格,称为'评论',用于评估'质量'表格中上述各项质量的评分。

这造成了一个困境:“评论”表中的列数取决于“质量”表上的行数。如果我们在“质量”表中添加要评分的新质量,我们需要在“评价”表格中创建相应的列,以便用户对此质量进行评分。

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

谢谢。

回答

3

你说得对,你需要一个被评论的餐厅支持的每个质量的列。如果“品质”是动态的,那么最好也要使相关的评分动态化。因此,不要将评分作为评论的专栏,您最好将其保持为将评分映射到每个评价质量的行。

我可能会去这样的事情:

   restquality (m:n) 
       |n |n 
       |1 | 
user  restaurant | 
|1  |1   |1 
|  |n  quality 
+----n-review  |1 
      |1  | 
      |n  |n 
     reviewquality (m:n) 
  • 用户可以查看许多餐馆
  • 一家餐馆可能有很多的素质和质量可应用于多个餐厅(AM :通过restquality管理的关系)。
  • 评论“评论”一家特定的餐厅,每个品质的评分都与该餐厅相关的特质相关。这是通过审查质量进行管理的:该审查将此分数评分为该质量(其中父母评论引用餐厅)。

重要模式:

  • 回顾:reviewid(PK),用户ID,restid,总结
  • reviewquality:reviewqualityid(PK),reviewid,qualityid,得分
  • restquality:restqualityid(PK ),restaurantid,qualityid

希望这会有所帮助。

+0

非常清晰的解释 - 非常感谢。在ASCII图上也做得很好! –