产品和产品包的数据库模型具有不同的组合

时间:2013-01-25 17:29:31

标签: sql database-design database-relations

您将如何设计数据库以实现此功能?

考虑我们想要创建 产品关系(包) ...

的场景

假设我们创建了 ProductTbl

prod_id   prod_name    prod_fee
1         prepaid-A    19 usd
2         prepaid-B    29 usd
3         prepaid-C    39 usd
4         internet      9 usd
5         mms           1 usd
6         email         3 usd

我们希望提供一个产品包,为客户提供更好的费用。

  

E.g。如果客户选择预付费-A +互联网+ mms ,他们将获得25美元(而非29美元)的pkg费用。

DESIGN

  • 具有相同组合的pkg应该只存在一次。
  • 如果可能,pkg可以拥有无​​限数量的产品。 (通常是2-4)。

E.g。 pkg组合

ProdPkgTbl

ppkg_id   prod_name    prod_fee
1         prepaid-A    25 usd
1         mms          25 usd
1         internet     25 usd

2         internet     10 usd
2         email        10 usd

3         prepaid-C    45 usd
3         internet     45 usd
3         mms          45 usd
3         email        45 usd

这意味着组合

  
      
  • pkgid 1 - >预付-a,mms和互联网的pkg费用为25美元
  •   
  • pkgid 2 - >互联网和电子邮件一起收取10美元
  •   
  • pkgid 3 - >预付费c,互联网,mms,电子邮件一起为45 usd
  •   

因此,如果客户 预付c +互联网 ,只有他们没有得到45美元的交易,他们将支付39 + 9 = 48美元的正常费用。

现在这个表只是用于演示,我想得到你的意见和建议,以正确的方向进行建模。

我们首先需要选择 - 查询客户当前的费用计划(基于已使用的产品/服务),然后查看产品pkg并查看pkg交易是否对他们有效。

(如何在pkg表上进行此类选择?) 如何为此建立一个好的数据库模型?

请提供建议,提供网址,提示,任何有价值的信息,以便将我推向正确的方向。

非常感谢。

2 个答案:

答案 0 :(得分:2)

您正在从目录中销售商品或服务。您还可以出售上述组合。这称为营销包(或捆绑或组合)。

营销包也从目录中出售。它可以包括商品,服务或其他营销包。

每个订单的价格确实不同。您可以在好表中设置基本价格,在服务表中设置每月价格,在营销包表中设置基本价格。

enter image description here

答案 1 :(得分:0)

我希望对此有一些意见,但也许问题是"凌乱"回答。 :O)

我现在的模特是这样的:

<强> ProductTbl

prod_id   prod_name    prod_fee
1         prepaid-A    19 usd
2         prepaid-B    29 usd
3         prepaid-C    39 usd
4         internet      9 usd
5         mms           1 usd
6         email         3 usd

<强> ProductPkgTbl

ppkg_id   prod_id      prod_name 
1         1            prepaid-A 
1         5            mms       
1         4            internet  

2         4            internet  
2         6            email     

3         3            prepaid-C 
3         4            internet  
3         5            mms       
3         6            email     

<强> ProductPkgFeeTbl

ppkg_id   ppkig_fee
1         25
2         10
3         45
  

但是上面有一些缺陷,有人可能会以不同的pkg和不同的费用插入相同的产品。

我真的无法通过sql弄清楚如何确保pkg是唯一的。当然,编程语言/存储过程/触发器等可以进行检查!但我希望拥有100%完美无瑕的设计。

  

请根据您在这方面的经验,向我推进正确的方向......