商店的表结构 - 项目 - 价格

时间:2014-02-08 00:38:05

标签: php mysql database phpmyadmin

假设每家商店有15家商店,4种商品和定制价格:

  • 每个商店都没有全部4种产品,但只能有2个,3个或4个甚至1个。
  • 价格相似但每个店铺都有定制。所有商店的价格每2-3周就会发生变化,通常是同时但并非总是如此。
  • 数据库必须包含价格的历史记录。

这是我的想法,但我确信它缺少产品部分:

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 NULLJOIN表格来连接table1和表格2。

要创建一个反义图表或表格,我将使用between active_from and active_to方法。

但我只限于4种产品,如果它们将来增加会怎么样?

1 个答案:

答案 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
    ... |        ... |  ...

无论您采取何种解决方案,都不为每个产品创建一个列,除非您有一些奇怪且非常强大的理由去做。