假设每家商店有15家商店,4种商品和定制价格:
这是我的想法,但我确信它缺少产品部分:
TABLE1
id | shop_name | product_1 | product_2 | product_3 | product_4
1 shop1 name2 name4 NULL NULL
2 shop2 name1 name3 name4 NULL
TABLE2
id | shop_name | active_from | active_to | name1 | name2 | name3 | name4
1 shop1 2014-01-05 2014-02-07 NULL price NULL price
2 shop2 2014-01-07 2014-02-05 price NULL price price
3 shop2 2014-02-06 NULL price NULL price price
4 shop1 2014-02-08 NULL NULL price NULL price
要获取当前价格的数据,我可以选择行where active_to is NULL
和JOIN
表格来连接table1和表格2。
要创建一个反义图表或表格,我将使用between active_from and active_to
方法。
但我只限于4种产品,如果它们将来增加会怎么样?
答案 0 :(得分:0)
我会尝试以下方法:
包含每个商店中每件商品的存在及其价格的表格。
shop_id | product_id | price
1 | 1 | 10.23
1 | 2 | 13.51
1 | 3 | 324.12
2 | 1 | 13.20
2 | 3 | 9.80
在此示例中,您看到商店1销售产品1,2和3,而商店2仅销售产品1和3。这是一种简单的方法。或许可以更好地使用一张桌子来存储哪些产品在哪些商店出售,另一张桌子用于价格,因为它们是不同的概念。
然后是另一个表,用于存储对价格进行的所有更改。使用此表,您可以追溯所有价格历史记录。
shop_id | product_id | date
1 | 1 | 10.23
1 | 1 | 10.08
... | ... | ...
无论您采取何种解决方案,都不为每个产品创建一个列,除非您有一些奇怪且非常强大的理由去做。