我正在寻找基于以下要求设计数据库模式的建议。
什么是最好的架构,哪里可以轻松检索数据而不影响性能?
提前感谢您的建议。
此致 Harmeet
答案 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 |
+---------+-----+-----+-----+-----+-----+-----+-----+