我目前正在为电子商务平台的产品部分设计数据库结构。它需要以这样一种方式设计,即可以销售具有无限数量不同属性的无限数量的不同类型的产品。
例如,笔记本电脑的属性可以是 RAM、屏幕尺寸、重量等。一本书的属性可以是 Author、ISBN、Publisher 等。
似乎 EAV 结构是最合适的。
- 选择一个产品
- 产品属于属性集
- 属性集包含属性 x 和 y
- 属性 x 是数据类型 datetime(存储在 attribute_values_datetime 中的值)
- 属性 y 是数据类型 int(值存储在 attribute_values_int 中)
- 每个属性定义表示类型(即,x 具有列类型 -> 日期类型)
假设上述情况,我是否可以将选择加入 attribute_values_datetime 表以获得正确的数据,而无需获取结果集并在该表已知的情况下构建第二个查询?构造这种类型的查询是否会对性能产生很大影响,或者下面的查询是否更合适(尽管功能较少)
- 选择一个产品
- 产品属于属性集
- 属性集包含属性 x 和 y
- 属性 x 是数据类型 datetime,但在 attribute_values 中存储为 TEXT
- 属性 y 是数据类型 int 但在属性值中存储为 TEXT