【发布时间】:2011-03-02 22:39:31
【问题描述】:
我正在尝试创建一个通用数据模型,该模型将允许特定产品(由下表中的 FK product_id 指示)指定 0 个或多个价格“因素”(我将“因素”定义为一个单位为了得到总数而增加或减少的价格)。
所以说有这张桌子:
===============================
price
===============================
price_id (PK)
product_id (FK)
label
operation (ENUM: add, subtract)
type (ENUM: amount, percentage)
value
一本书的价格可以这样表示:
====================================================================
price_id | product_id | label | operation | type | value
====================================================================
1 | 10 | Price | add | amount | 20
2 | 10 | Discount | subtract | percentage | .25
3 | 10 | Sales Tax | add | percentage | .1
这基本上意味着:
Price: $20.00
Discount: - $5.00 (25%)
--------------------
Sub Total: $15.00
Sales Tax: $1.50 (10%)
------------------------
Total: $16.50
几个问题:
- 最初的设计有什么明显的问题吗?
- 如果我想创建“模板”(例如,具有“价格”、“折扣”和“销售税”字段的“普通商品”模板;具有“价格”、“折扣”的“奢侈品”, “奢侈税”字段)- 我将如何建模?
- 如果每条记录适用于前面记录的总数,则上述模型有效。因此,在示例中,“销售税”适用于“价格”和“折扣”的差异。如果总的计算不是那么简单呢?例如:A + B + (A + 10%) - (B - 5%)。我将如何建模?
- 此外,如果“百分比”类型不适用于紧接在前的行(如问题 #3 所暗示的那样)并应用于超过 1 行,该怎么办?我是否需要另一个表格来逐项列出百分比适用的价格->price_id?
【问题讨论】:
-
+1 获取完整的图表、示例数据和示例!我希望所有数据库问题都像这样完整。
-
是的,但如果表格包含 Karl 的回答中所示的序列列会更好);)
标签: mysql database database-design