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

问题描述 投票:5回答:2

我遇到一些困难与很多每个产品不同属性的设计数据库。

这里的情况:每个产品应该属于一个类别,每个类别都有不同的属性集。

E.g:

  • 产品IGAL 7S→智能手机类→属性attr_phone
  • 产品UberLaptop→类别笔记本和笔记本电脑→属性ATTR笔记本电脑

从什么I understood,这将是最好的,以避免EAV和带班表继承进行。

这一观察,我会为出发点:

Starting design


如果我有一个单一的属性进行设置,我会在attribute_id表使用products外键和收工,但我可能有50多个属性集(因此50+表)。

  1. 是CTI仍然有效的方法?
  2. 我怎么能分配设置为一个产品正确的属性?

很抱歉的愚蠢的问题,但特别是我无法理解的是选择不同的类别时,我如何分配设置不同的属性。谢谢阅读。

mysql database-design relational-database database-schema
2个回答
1
投票

是CTI仍然有效的方法?

我认为,如果类别的数量都在十的顺序和百分之不是,那么是的。

我怎么能分配设置为一个产品正确的属性?

你可以添加到每个类别行属性的相应表的表名,并为每个属性表,该行的ID将相应产品的ID(这样就可以将它定义为对产品表的外键)。


0
投票

在几乎所有情况下,它是“错误”的有55台具有相同的架构。使其成为1台是更好的。但随后你进入所谓的“实体 - 属性 - 值”的噩梦。

挑几个“属性”,你通常需要搜索上。把其余的为JSON字符串中的单个列。 More details

您的架构是不是很EAV。这是一个有趣的变体;它代表什么?我不认为我已经看到了这作为替代EAV。我还没有这是否取代了一系列问题,EAV有一组不同的问题发表意见。或者,也许这是更好。

你会使用什么客户端语言?你需要把category.nameattr_laptop为了SELECT ... from attr_laptop ...这意味着动态创建查询。 (这是大多数客户端语言很容易的。这也是可能的,虽然有点笨拙,在存储程序。)

© www.soinside.com 2019 - 2024. All rights reserved.