Mongo架构设计

时间:2011-09-16 06:39:44

标签: mongodb database-design database-schema mongodb-php database

我对Mongo很新。刚刚开始使用Mongodb作为数据库的项目。 我不确定如何将以下用例设计到文档库数据库。

用户案例
1.供应商/分销商在我们的系统上有产品清单 2.对于任何客户,每种产品都有一个标准价格表 3.供应商/分销商还为每个客户定制每种产品的价格表 例如。 CustA的产品A与标准的价格不同,只有他才能使用。 4.部分产品仅通过自定义价格提供,我将这些产品与属性public = false匹配。

我应该如何在文档库数据库中解决这个问题? 我目前的设计是。
1. [产品文档],带有标准价格表的嵌入式文档。
2. [ Product_Price文档],包含oneToMany链接[产品文档]和oneToMany至[客户文档]
3. [客户文件]。

使用这个模型,我遇到了通过分页查询的问题 示例I查询按名称排序的前30个产品。然后使用匹配的30 ProductId查询[ Product_Price文档],以便我为登录的客户提供这些自定义价格。

问题来自于我无法查询为每个人都无法使用的自定义项目。

是否有更好的方法或设计架构或我应该如何处理查询?

我正在使用PHP,Doctrine2,Symfony2

2 个答案:

答案 0 :(得分:0)

当您查询 Product_Price_Document 时,使用ProductID和当前的CustomerID查询它。或者我错过了什么?

答案 1 :(得分:0)

以下是我如何构建它。

有两个系列:   - 产品   - 供应商

您的产品表中会列出您所有产品及其标准价格。您的供应商页面会有一系列产品ID以及覆盖价格,如果它们对该特定产品的价格不同。

如果您也在跟踪客户,那么您也可以将其作为一个集合,并且几乎与供应商建立了属于该关系。

简而言之:

collection.vendor:
 {"name":'foo',"products":[{"_id":mongoId,"priceOveride":15.50},..]}

collection.products:
 {"name":"bar","price":15.40}

阅读更多关于您可以使用的关系的优秀资源: Learn Mongo Interactively