【发布时间】:2013-01-09 17:39:03
【问题描述】:
你会如何设计你的数据库来实现这个功能?
考虑一个我们想要创建产品关系(包)...
的场景假设我们创建了一个 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
我们希望提供一个产品包,为客户提供更好的费用。
例如如果客户选择prepaid-A + internet + mms,他们将收取 25 美元(而不是 29 美元)的 pkg 费用。
设计
- 具有相同组合的 pkg 应该只存在一次。
- 如果可能,一个 pkg 可以有无限数量的产品。 (通常是 2-4 个)。
例如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 -> prepaid-c, internet, mms, email all together for 45 usd
因此,如果客户获得了 prepaid-c + internet,但他们没有得到 45 美元的交易,他们将支付 39 + 9 = 48 美元的正常费用。
现在这些表格仅用于演示,我希望得到您的意见和建议,以便朝着正确的方向建模。
我们需要首先选择-查询客户当前的费用计划(基于使用的产品/服务),然后查看产品 pkg 并查看 pkg 交易是否对他们有效。
(如何进行这样的选择?在 pkg 表上?) 如何为此建立一个好的数据库模型?
请提供网址、提示和任何有价值的建议,以将我推向正确的方向。
非常感谢。
【问题讨论】:
标签: sql database-design database-relations