Django 具有多种变体的产品

Django 具有多种变体的产品,django,database,postgresql,hstore,Django,Database,Postgresql,Hstore,我正在经历建立一个电子商务网站的过程。我正在与Django和Postgresql合作进行产品存储 我提出了产品多个变体的问题。特别适用于不同类型的产品,不同类型的产品可以有不同的选择。这种变化是由多种选择组合而成的产品 我已经完成了分析,最后提出了两个解决方案,可以为我解决这个问题 第一个是创建多个相互关联的表: 产品 变体|属于:产品 选项|属于:产品 选项|值|属于:选项 变体|选项|值|属于:变体|属于:选项}|属于:选项|值 最近,我偶然发现了Postgresql的HStore(),它允

我正在经历建立一个电子商务网站的过程。我正在与Django和Postgresql合作进行产品存储

我提出了产品多个变体的问题。特别适用于不同类型的产品,不同类型的产品可以有不同的选择。这种变化是由多种选择组合而成的产品

我已经完成了分析,最后提出了两个解决方案,可以为我解决这个问题

第一个是创建多个相互关联的表:

产品

变体|属于:产品

选项|属于:产品

选项|值|属于:选项

变体|选项|值|属于:变体|属于:选项}|属于:选项|值

最近,我偶然发现了Postgresql的HStore(),它允许数据作为Key:Value存储到表的字段中。在这里,我可以将选项及其值存储在同一个表中

它将减少表的数量并使其更易于实现


在查询速度和效率方面,哪种方法更好。还有什么设计建议吗

查询Hstore比查询传统关系模式慢,但与其他NoSQL数据库相当

问题是如果您想经常更新Hstore。它会消耗大量内存,导致整个字典被卸载、更改并保存回数据库(postgres的人正在改进这一点)。如果数据很大,需要频繁更改,那么使用Hstore是毫无意义的。虽然只是搜索它不会有性能问题。然而,如果你可以传统地储存它,那么就选择它


如果您发现Hstore对您的案例仍然有用,请查看django Hstore。它可以帮助您以NoSQL方式存储数据(通过SCHEME功能)。

您需要考虑您将要执行的查询类型。使用表可以让您自由地运行复杂的查询,并在产品之间具有一致的属性。如果您希望在产品可以具有何种属性方面有更多的自由,而不需要按属性查询或分组产品,那么键值甚至json字段可能会更好。感谢您的回复。目前我能想到的操作都很简单。我唯一关心的是寻找这些值。例如,智能手机的颜色、尺寸、容量,甚至自行车的零件。发出这些查询会非常复杂吗?我已经阅读了Django网站上的文档,查询过程似乎与我们查询普通表的方式类似。但是没有提到表演。还有一件事是向应用程序添加API的过程。