设计电子商务应用程序 - 复杂的EAV

时间:2012-12-05 05:27:22

标签: sql database entity-attribute-value

我正在尝试为电子商务项目设计数据库。

当前模型是类别(对自己有外键)和产品(有一个类别的fk)。我现在想要实现的是自定义属性。

基本上,我希望能够动态指定给定类别的属性。例如,在“监视器”类别中,我希望能够指定此类别中的产品具有“解决方案”属性。请注意,这是我想要动态执行的操作 - 我不想在任何属性中进行硬编码。显而易见的解决方案是使用EAV。然而...

当用户导航到给定类别时,我需要能够让他们根据自定义属性进行指定和过滤。换句话说,我想让用户导航到监视器类别并指定他们只想看到具有'resolution'='1080p'的监视器。嗯,这是它变得复杂的地方。我需要知道,仅基于一个类别,可用的属性(如“分辨率”),以及它们具有的可能值(如“1080p”)。

我不能为我的生活找到一个合适的模型......任何人都能指出我正确的方向吗?

注意:我目前正在使用MySQL,但我肯定对其他选项持开放态度。例如,我知道NoSQL dbs提供了N个用户定义文件的能力(因为你只是存储任意数据),所以如果MySQL甚至SQL完全不能提供1)相当优雅和2)合理有效的解决方案,我完全是愿意考虑其他技术。

1 个答案:

答案 0 :(得分:1)

您可以尝试创建一个包含FK字段的表,另一个字段添加到自定义选项名称,另一个字段创建自定义选项值,如下所示:

id = 1;
category_id = 1; // FK
custom_option = "resolution";
custom_value = "1080p";

id = 2;
category_id = 1;
custom_option = "touch sensitive";
custom_value = "0"; // 1=Yes / 0=No

因此,当您的客户浏览监视器类别时,数据库可以返回此类别的特殊自定义选项

相关问题