我正在为电子商务应用程序设计我的数据库/域,我很难弄清楚如何存储产品。
该网站将出售各种各样的产品,钢笔、丁字裤、纹身、雨伞,应有尽有。这些产品中的每一个都有一些共同的属性,高度、宽度、长度、重量等,但有些产品有特殊的数据。例如,钢笔有不同的墨水颜色,笔尖/盖子和小册子可以有不同类型的折叠。到目前为止,我已经想到了大约 20 多个额外属性,但这些属性可能只适用于网站上 1% 的产品。
所以我想知道是否适合实施 EAV 模型来处理额外的数据。请记住,当客户在前端查看网站时,将会有一个过滤侧边栏,就像在 eBay 和 carsales.com.au 上一样。(所以请记住,会有相当多的查询)
我认为实现类表继承并不实际,因为系统需要保持灵活性。这是因为,在未来,我们可能会在新类型的产品中拥有更多的属性。
我考虑的另一件事是使用 NoSQL 数据库(可能是 MongoDB)但是我对这些类型的数据库几乎没有经验,它甚至可以解决我的问题吗?
审查选项:
- 具有大量列的单个产品实体
- 分离属性实体 (EAV)
- 切换到无模式持久性
我正在使用属性实体构建原型以查看它的灵活性,并测试性能以及查询如何失控。
编辑:当然,我对任何其他解决方案持开放态度。