如何在db中存储产品的修改?

时间:2011-11-12 12:25:28

标签: database database-design entity-attribute-value

任何人都可以解释,修改后的产品如何存储在数据库中 例如:

  • USB闪存

    • 的2Gb
      • 红色(价格9,90,可用10)
      • 黑色(价格9,90,可用4)
      • 白色(价格9,90,可用30)
    • 的4Gb
      • 红色(价格15,90,可用5)
      • 黑色(价格15,90,可用1)
    • 的8Gb
      • 红色(价格20,90,可用10)
  • Car Chevrolet Cruze

    • ouear 2010

      • 变速箱'手动',发动机'汽油1.8L',颜色'灰色',价格:20k,可用:10
      • 变速箱'手动',发动机'汽油1.8L',颜色'灰色'
      • 变速箱'汽车',发动机'disel 2.0L',颜色'白色'
    • 2011年

      • 变速箱'手动',发动机'汽油1.6L',颜色'红色'
      • 变速箱'手动',发动机'汽油1.6L',颜色'黑色'
      • 变速箱'汽车',发动机'disel 2.0L',颜色'白色' 等

任何产品都可能对许多功能进行了许多修改。 如何将其存储在关系数据库中? EAV?

1 个答案:

答案 0 :(得分:2)

嗯,如果不知道你要对数据做什么,就很难解决问题。

但是假设您想要覆盖无限产品类型和功能的世界,最好的可能是拥有一个完全通用的“类型 - 值”表。

所以:

表:产品(所有常见产品功能)

表:FEATURE(姓名,评论等)

表:FEATURE-PER-PRODUCT(fk到产品,fk到功能,功能值,日期修改)

您可以使用强类型值和功能类型来增强每个产品的功能。

您还可以考虑不使用功能表,只在每个产品的功能中使用一个字符串

<强>更新 我会在产品中寻找最少量的数据,并将许多功能分开。您可以随时从三个功能重新组合(闪烁2gb红色),但另一种方式更难。权衡是更多的数据和更大的查询,但具有合适的索引,也许一些具有可以处理的聚簇索引的视图

所以我的建议是产品是Flash USB,颜色和千兆字节是功能