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

标签 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. if customer choose prepaid-A + internet + mms they will have a pkg fee by 25 usd (instead of 29 usd).

设计

  • 具有相同组合的 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 -> prepaid-a, mms, and internet for a pkg fee of 25 usd
  • pkgid 2 -> internet and email together for a fee of 10 usd
  • pkgid 3 -> prepaid-c, internet, mms, email all together for 45 usd

因此,如果客户获得了 prepaid-c + internet 只是他们没有获得 45 美元的交易,他们将支付 39 + 9 = 48 美元的正常费用。

现在这个表只是为了演示,我想听听你的意见和建议,以便在正确的方向上建模。

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

(如何做这样的选择?在pkg表上?) 如何为此建立良好的数据库模型?

请提供 url、提示和任何有值(value)的建议,以将我推向正确的方向。

非常感谢。

最佳答案

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

营销包也从目录中出售。它可以由商品、服务或其他营销包组成。

每个订单的价格确实不同。可以在good表中设置底价,在service表中设置包月价格,在marketing package表中设置底价。

enter image description here

关于sql - 具有不同组合的产品和产品包的数据库模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14527203/

相关文章:

mysql - 将列转换为行并获取最新值

c# - 我的 SQLParameter 没有正确传递 NULL

c# - 必须使用 OUTPUT INTO 声明标量变量 '@ID'

database-design - 绘制ER图的工具(尝试过visio、smartdraw,但没有用)

orm - 如何在 strongloop 环回中一次更新多个模型的 hasandbelongstomany 关系

sql - PLS-00306 : wrong number or types of arguments in call to '*'

sql - 列式数据库优化与关系数据库优化有何不同?

mysql - SQL,是否分隔一列?

php - cakephp 的模型关联问题

cakephp - CakePHP 中的多重关系