![](/img/trans.png)
[英]MySQL database with products, products categories and different attributes
[英]database schema for products attributes
我想在类别中实现产品过滤,我对正确的数据库模式有疑问。 现在我有以下表格:
分类 :
1. id
2. category
3. description
产品 :
1. id
2. category_id
3. product
4. image
5. price
属性 :
1. id
2. attribute
Category_Attributes :
1. category_id
2. attribute_id
我的问题是我应该创建哪些表以及他们必须存储哪些列来存储不同类型的值,属性值,产品属性值等。
创建3个表是否正常:
价值观 :
1. id
2. value
Attributes_Values :
1. attribute_id
2. value_id
Products_Attributes_Values :
1. product_id
2. attribute_id
3. value_id
我在最后几桌搞砸了。 存储和过滤哪个更好?
您要实现的是实体 - 属性 - 值 (EAV)或可能的行建模解决方案。 请注意,出于各种各样的原因,这种类型的结构在很大程度上是不受欢迎的。
但是,我已经争论(例如, 这里 , 这里 , 这里和这里 )EAV是EVIL,除非它不是。 其中一个例外情况是,在产品目录中,您跟踪产品的属性以及这些属性不是那么有趣( 对您的系统而言! ),除非您需要检索这些属性并将其打印出来。产品网页或比较网格等
考虑这样的设计:
您在这样的模型中所做的是描述给定类别中的产品应该具有哪些属性,这些属性可能具有哪些值,然后每个特定产品对每个属性具有哪些值。
这种设计确实具有EAV强加的所有常见限制。 但是,如果你想问这样的问题:“哪个珠子直径为8mm?” 这非常简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.