【问题标题】:Product database with multiple attributes and not lots of database tables具有多个属性且数据库表不多的产品数据库
【发布时间】:2020-07-12 00:14:34
【问题描述】:

我已经开始为地板产品创建数据库,我在这里提出问题是因为我未能找到允许产品具有诸如颜色、材料、尺寸、价格等“属性”的架构设计/模板类型,例如每米等,我最初的设计最终得到了上述每个属性的数据库表,我知道这不是最好的,甚至不是正确的方法。

有没有办法在没有大量表格的情况下实现这一目标?我怀疑它可以用一两个表来完成,但我无法考虑关系,因此我未能搜索设计或模板。

巴里

【问题讨论】:

  • 每个产品有一定数量的属性,还是会有不同数量的属性?
  • 理想的变化,主要是我猜是由于不同类型的地板。

标签: sql database database-design


【解决方案1】:

最简单的方法是将属性保存在products 表中的单独列中。如果特定产品没有属性,则值为NULL

有时这种方法是不够的,通常是出于以下两个原因之一:

  • 有很多属性,它们属于不同的组。
  • 您需要按需添加新属性。

在这种情况下,你基本上有两种选择:

  • 将属性存储在实体-属性-值表 (EAV) 中。这基本上有三列,产品、属性名称和值。这可以方便灵活,但一个缺点是“值”列在 SQL 表中只有一种类型。
  • 使用“灵活”的存储机制(例如 JSON 或 XML)存储属性。

我有时会使用混合方法,其中我有一个带有主要属性的 products 表。然后有一个 JSON 列用于更灵活/特定的属性。

【讨论】:

    【解决方案2】:

    由于您将拥有不同数量的属性,因此我会为产品制作一个表格,并为具有多对一关系的属性制作另一个表格 [一个产品具有多个属性]。

    ProductId,
    ProductName,
    ProductDescription,
    etc
    
    AttributeId,
    ProductId,
    AttributeName,
    AttributeValue,
    etc
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多