【问题标题】:Database design with limited number of values per row每行的值数量有限的数据库设计
【发布时间】:2015-07-06 18:28:28
【问题描述】:

我正在寻找设计数据库的最佳实践。

我有一个表“product_reviews”,其中包含以下列的产品评论: revID、revName、revText、revDate

现在我想在产品评论中添加优点和缺点。一条产品评论最多可以有 5 个优点和 5 个缺点。

最佳做法是什么? 要将 10 列(revPro1、revPro2 等)添加到我现有的 product_reviews 表或创建一个新的单独表来保存这些优缺点?

【问题讨论】:

  • 单独的表。从您的帖子中,我解释说产品通常会有不同的优缺点 [不会总是使用 10 个可能的字段] 会导致大量空值。此外,访问将非常难看,因为您必须有条件地检查每个 pro1、pro2 等,而不是 join 上的 where 子句..
  • 再添加两张表:一张用于 Pros,一张用于 Cons,外键为 Product_review.ID。您可以通过软件代码控制的每个产品评论的最大优缺点数。

标签: mysql database-design


【解决方案1】:

根据规范化规则,您必须创建单独的表。此外,我建议在表格中记录每个优点/缺点,而不是包含“pro1”、“pro2”等列的表格,这也是关于规范化的。

从实际的角度来看,让我们假设稍后您需要在每次审核中获得更多的优点/缺点。使用这种方法,您无需更改数据库结构(一段时间后可能会非常困难)。另一个例子可能是对优点/缺点应用一些文本限制 - 你必须只将它应用到 1 列,而不是 10...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 2011-03-18
    相关资源
    最近更新 更多