使用mongo。该应用程序需要允许在不同类型的位置购物。商店分享他们提供的部分产品,有些是独一无二的。每个商店都为每种产品设定了自己的价格(很多可能是相同的价格,但目前尚不清楚,可能不是)。
到目前为止,我的方法是创建一个Product
模型,它只有名称,描述和类别。
然后,对于每个商店,将通过将价格与每个PriceList
相关联来创建Product
,从而仅为特定商店提供他们实际销售的产品。
但是如何建立这种关联?如果我有一个PriceList
,我引用Product
(例如通过ID),那么在浏览产品时,不会产生巨大的开销,因此生成商店的价目表会有{{{ 1}}大量查询查询pricelist.length
模型的名称及其类别?
我的另一个想法是让每个价目表都有一个包含名称,描述,类别和价格的所有产品的清单,但是为新商店生成新的价格表似乎很麻烦,因为没有独立的{{1从中复制项目的列表?
还有其他建议吗?
答案 0 :(得分:1)
您可能已经考虑过这一点,但是如果您需要确保使用NoSQL数据库(如MongoDB)是解决问题的正确方法。
使用RDBMS的好处是可以规范化数据并轻松进行连接。因此,一个表中的产品,另一个表中的定价,运行查询并从两个表中提取数据。听起来你已经来自这个世界,并且可能理解连接的概念。
NoSQL没有按设计加入相同的方式,因此它并不总是最合适的。相反,数据被认为是"文件"和收藏品。 NoSql在分层数据方面做得很好,但在很多情况下,数据必须重复。
如果商店及其产品/价格之间存在大量重复数据,那么使用常规关系数据库可能是最好的。
如果您仍想使用MongoDB,您有两种选择。
当然这取决于你的架构,但我会倾向于上面的#2,因为你总是可以同时将查询与商店列表结合起来并以这种方式优化。如果您的数据增长,从长远来看,拆分设计也可能更好。如果两个集合足够大,您可以轻松地将它们放在不同的节点上,并查看MongoDB背后的真正功能。
祝你好运!
答案 1 :(得分:0)
这样的事情怎么样:
Shop = {
"Pricelist": {
"1": 2.99,
"5": 3.99
}
}
Product = {
"id": "1",
"name" : "Lego"
}
请注意,1
中的5
和Pricelist
是指产品ID。通过这种方式,每家商店都可以设定自己的产品价格。