产品价格的数据库架构,可以每天更改

时间:2017-07-11 20:19:40

标签: sql-server rules

我正在寻找基于以下要求设计数据库模式的建议。

  1. 产品可以有变体
  2. 每个变体可以有不同的价格
  3. 一周中特定日期的价格可能会有所不同
  4. 当天的特定时间价格可能会有所不同
  5. 所有价格仅在特定日期有效
  6. 价格可以定义为高峰期,高峰期或中期
  7. 提供任何产品的供应商可以定义自己的价格,上述规则仍然适用
  8. 什么是最好的架构,哪里可以轻松检索数据而不影响性能?

    提前感谢您的建议。

    此致 Harmeet

1 个答案:

答案 0 :(得分:1)

SO并不是一个真正的建议论坛和答案。任何人都没有回答可以肯定是正确的。话虽如此,我会尽可能保持表格的细化,以便在产品之间轻松进行更改。

关于#5,我会在产品上放置开始和结束日期。如果价格不再有效,则该产品将不再可用。

这包括不同季节性价格的关系,但是您需要对季节进行硬编码或创建另一个表来定义季节。

对于价格,如果这超过1个区域,您可能需要一个区域表,在这种情况下,货币列是合适的。

这是运营数据,而不是时间数据。如果您希望它可用于定价的历史分析,您还需要创建时态表。

产品表

+-------------+-----------+------------------+----------------+
| ProductName | ProductID | ProductStartDate | ProductEndDate |
+-------------+-----------+------------------+----------------+
| Product1    |         1 | 01/01/2017       | 01/01/2018     |
| Product2    |         2 | 01/01/2017       | 01/01/2018     |
+-------------+-----------+------------------+----------------+

变体表

+-----------+-----------+-------------+---------------+-------------+-------------+
| ProductID | VariantID | VariantName | NormalPriceID | HighPriceID | PeakPriceID |
+-----------+-----------+-------------+---------------+-------------+-------------+
|         1 |         1 | Blue        |             1 |           3 |           5 |
|         1 |         2 | Black       |             2 |           4 |           5 |
+-----------+-----------+-------------+---------------+-------------+-------------+

价格表

+---------+-----+-----+-----+-----+-----+-----+-----+
| PriceID | Mon | Tue | Wed | Thu | Fri | Sat | Sun |
+---------+-----+-----+-----+-----+-----+-----+-----+
|       1 |  30 |  30 |  30 |  30 |  35 |  35 |  35 |
|       2 |  35 |  35 |  35 |  35 |  40 |  40 |  40 |
|       3 |  33 |  33 |  33 |  33 |  39 |  39 |  39 |
|       4 |  38 |  38 |  38 |  38 |  44 |  44 |  44 |
|       5 |  40 |  40 |  40 |  40 |  50 |  50 |  50 |
+---------+-----+-----+-----+-----+-----+-----+-----+