2

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

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

现在假设我还有一个名为“评论”的个人评论表,它为“质量”表中的每个上述质量分配评级。

这带来了一个难题:“评论”表中的列数取决于“质量”表中的行数。如果我们在“质量”表中添加要评分的新质量,我们需要在“评论”表中创建相应的列,以便用户可以对该质量进行评分。

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

谢谢。

4

1 回答 1

3

你解释的方式是对的,你需要一个由被审查的餐厅支持的质量列。如果“质量”是动态的,那么最好也使相关的评分动态化。因此,与其将分数保留为评论的列,不如将它们保留为将分数映射到评论的每个质量的行。

我可能会这样做:

             restquality (m:n)
                |n    |n
                |1    |
user     restaurant   |
 |1       |1          |1
 |        |n       quality
 +----n-review      |1
           |1       |
           |n       |n
        reviewquality (m:n)
  • 用户可能会评论许多餐馆
  • 一家餐厅可能有许多品质,并且一种品质可以应用于不止一家餐厅(am:n 关系通过 restquality 管理)。
  • 评论“评论”特定餐厅,并针对与该餐厅相关的质量给出每种质量的分数。这是通过 reviewquality 管理的:此评论将此评分赋予此质量(父评论引用餐厅)。

重要架构:

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

希望这可以帮助。

于 2013-05-28T10:29:41.640 回答