Database design 在文档数据库中创建可自定义的定制产品目录
我最初的意图是为MongoDB提出这个问题,但我很快意识到这个问题可能适用于其他面向文档的数据库,如CouchDB和其他数据库。我很难集中精力建立一个支持定制产品的产品目录。以下是目录的一组基本目标: 每个产品都有一组可配置的选项。比如用来生产产品的材料,或者印刷在上面的颜色。某些选项使其他选项可用,为什么某些选项限制其他选项可用。 期权的定价因期权而异,对于某些期权,其价格是基础价格的百分之一,而对于其他期权,其价格是固定的。 还有特价方面。我们可能与各种其他公司签订合同,为一系列产品提供专门的价格。我们经常在产品线和订单头提供促销代码和折扣。 最终,最难理解的部分是产品条目的通用模式。我是否应该按照以下思路做一些事情:Database design 在文档数据库中创建可自定义的定制产品目录,database-design,nosql,Database Design,Nosql,我最初的意图是为MongoDB提出这个问题,但我很快意识到这个问题可能适用于其他面向文档的数据库,如CouchDB和其他数据库。我很难集中精力建立一个支持定制产品的产品目录。以下是目录的一组基本目标: 每个产品都有一组可配置的选项。比如用来生产产品的材料,或者印刷在上面的颜色。某些选项使其他选项可用,为什么某些选项限制其他选项可用。 期权的定价因期权而异,对于某些期权,其价格是基础价格的百分之一,而对于其他期权,其价格是固定的。 还有特价方面。我们可能与各种其他公司签订合同,为一系列产品提供专门
{
"Product_Name": "Test Product 1",
"Product_Number": "P00001",
"BasePrice":"10",
"AvailableSize":
[
{
"Length":"1","Width":"1",
"PriceType":"PercentOnBase",
"Price":"5"
},
{
"Length":"1","Width":"2",
"PriceType":"PercentOnBase",
"Price":"6"
},
{
"Length":"2","Width":"2",
"PriceType":"PercentOnBase",
"Price":"7.5"
},
{
"Length":"2","Width":"3",
"PriceType":"PercentOnBase",
"Price":"10"
},
{
"Length":"3","Width":"3",
"PriceType":"PercentOnBase",
"Price":"15"
}
],
"AvailableNumberImprints":
[
{
"ImprintNumber":"1",
"PriceType":"PercentOnBase",
"Price":"10"
},
{
"ImprintNumber":"2",
"PriceType":"PercentOnBase",
"Price":"12"
},
{
"ImprintNumber":"3",
"PriceType":"PercentOnBase",
"Price":"14"
},
{
"ImprintNumber":"4",
"PriceType":"PercentOnBase",
"Price":"16"
},
{
"ImprintNumber":"5",
"PriceType":"PercentOnBase",
"Price":"17"
},
{
"ImprintNumber":"6",
"PriceType":"PercentOnBase",
"Price":"20"
},
],
"AvailableMaterials":
[
{
"MaterialName" : "Black",
"MaterialNumber": "M00001",
"PriceType":"PercentageOnBase",
"Price":"5"
}
{
"MaterialName" : "White",
"MaterialNumber": "M00002",
"PriceType":"PercentageOnBase",
"Price":"5"
}
{
"MaterialName" : "Pearl",
"MaterialNumber": "M00003",
"PriceType":"PercentageOnBase",
"Price":"5"
}
{
"MaterialName" : "Green",
"MaterialNumber": "M00004",
"PriceType":"PercentageOnBase",
"Price":"5"
}
]
}
我很快遇到的一个问题是,这使得限制其他选项而不太冗余有些尴尬。有什么想法吗