首页 文章

MySQL数据库具有产品,产品类别和不同属性

提问于
浏览
5

我在设计一个每个产品有很多不同属性的数据库时遇到了一些困难 .

这是情况:每个 product 应属于 category ,每个类别都有一组不同的 attributes .

例如 . :

  • 产品 iGal 7S →类别 Smartphones →属性 attr_phone

  • 产品 UberLaptop →类别 Notebooks & Laptops →属性 attr_laptop

I understood开始,最好避免使用EAV并继续进行类表继承 .

根据这一观察,我将以起点为出发点:

Starting design


如果我有一个属性集,我会在 products 表中使用 attribute_id 外键并将其称为一天,但我可能会设置 50+ 属性(因此 50+ 表) .

  • Is CTI still valid as approach?

  • How could I assign the correct attributes set to a product?

抱歉这个愚蠢的问题,但特别是我不明白如何在选择其他类别时分配不同的属性集 . 谢谢阅读 .

2 回答

  • 0

    CTI仍然有效吗?

    我认为,如果类别的数量是十分之一,而不是百分之一,那么是的 .

    我如何为产品分配正确的属性集?

    您可以向每个类别行添加相应的属性表的表名,并且对于每个属性表,该行的id将是相应产品的id(以便您可以将其定义为products表的外键) ) .

  • 1

    在几乎所有情况下,拥有55个具有相同模式的表是“错误的” . 使它成为一张 table 更好 . 但随后它会让你进入一个名为“实体 - 属性 - Value ”的梦魇 .

    选择一些你通常需要搜索的"attributes" . 将其余部分放入单个列中的JSON字符串中 . More details

    您的架构不是EAV . 这是一个有趣的变种;它代表什么?我认为我不认为这是EAV的替代品 . 我还不知道这是否取代了EAV对一系列不同问题的问题 . 或者它可能更好 .

    您将使用哪种客户端语言?您需要将 category.name 转换为 attr_laptop 才能 SELECT ... from attr_laptop ... 这意味着动态创建查询 . (在大多数客户端语言中这很容易 . 虽然有点笨拙,但在存储例程中也是可能的 . )

相关问题