我遇到一些困难与很多每个产品不同属性的设计数据库。
这里的情况:每个产品应该属于一个类别,每个类别都有不同的属性集。
E.g:
从什么I understood,这将是最好的,以避免EAV和带班表继承进行。
这一观察,我会为出发点:
如果我有一个单一的属性进行设置,我会在attribute_id
表使用products
外键和收工,但我可能有50多个属性集(因此50+表)。
很抱歉的愚蠢的问题,但特别是我无法理解的是选择不同的类别时,我如何分配设置不同的属性。谢谢阅读。
是CTI仍然有效的方法?
我认为,如果类别的数量都在十的顺序和百分之不是,那么是的。
我怎么能分配设置为一个产品正确的属性?
你可以添加到每个类别行属性的相应表的表名,并为每个属性表,该行的ID将相应产品的ID(这样就可以将它定义为对产品表的外键)。
在几乎所有情况下,它是“错误”的有55台具有相同的架构。使其成为1台是更好的。但随后你进入所谓的“实体 - 属性 - 值”的噩梦。
挑几个“属性”,你通常需要搜索上。把其余的为JSON字符串中的单个列。 More details
您的架构是不是很EAV。这是一个有趣的变体;它代表什么?我不认为我已经看到了这作为替代EAV。我还没有这是否取代了一系列问题,EAV有一组不同的问题发表意见。或者,也许这是更好。
你会使用什么客户端语言?你需要把category.name
到attr_laptop
为了SELECT ... from attr_laptop ...
这意味着动态创建查询。 (这是大多数客户端语言很容易的。这也是可能的,虽然有点笨拙,在存储程序。)