具有多种变化的产品

问题描述:

我正在完成构建电子商务网站的过程。我正在使用Django和Postgresql进行产品存储。具有多种变化的产品

我想出了产品多个变化的问题。特别与不同类型的产品一起工作,其中不同类型的产品可能有不同的选择。变体是由多个选项组合而成的产品。

我已经经历了分析,并最终想出了2个解决方案,可以为我解决它。

首先是建立相互关联的多个表:

产品

变化|属于:产品

选项|属于:产品

Option_Values |属于:选项

Variation_Option_Values |属于到:变化|属于:选项} |属于:Option_Values

现在,最近我已经无意中发现了PostgreSQL的HStore(),它允许将数据作为Key:Value存储到表的字段中。在哪里我可以将选项和它的值存储在同一个表中。

这将减少表的数量,并使其更容易实现。

关于哪种方法在查询速度和效率方面会更好。随着任何设计建议?

+0

你需要考虑你会做什么样的查询。使用表格可以让您*地运行复杂的查询并在产品之间具有一致的属性。如果您希望产品可以拥有更多的*度,而无需通过属性查询或分组产品,那么键值或甚至json字段可能会更好。 – serg

+0

感谢您的回复。目前我能想到的操作很简单。唯一涉及到我的部分是寻找价值。例如智能手机的颜色,尺寸,容量,甚至是自行车的部件。发出这些查询会非常复杂吗?我已阅读Django网站上的文档,查询过程与我们查询普通表的方式类似。但没有提到性能。还有一件事是将API添加到应用程序的过程。 – mrb101

查询Hstore比查询传统关系方案慢,但与其他NoSQL数据库相比。

如果您想频繁更新Hstore,问题将会出现。它消耗了大量的内存,导致整个字典被卸载 - 更改 - 并保存回数据库(postgres家伙正在改进)。如果数据很大并且需要频繁更改,那么使用Hstore是没有意义的。虽然只是通过搜索它不会是一个性能问题。但是如果你可以传统的存储它然后选择它。

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