0

我有 3 张桌子:

  • 价格表( pricelist_id,名称)
  • 价格(price_id、pricelist_id、价格、注释)
  • 门票(ticket_id、price_id、姓名、时间)

所以,版本化价格的主要原因是因为价格可以在未来改变,我想保留过去价格的信息用于统计,我想门票有真实价格,而不是未来改变的价格。

你能给我一些查询的例子吗?

4

1 回答 1

1

我想一种可能的方法是制作两个价格表而不是两个:第一个将存储一些与价格相关的通用数据(如“note”和“pricelist_id”链接,因为这些不会随时间变化),第二个将存储实际价格(可能还包括其激活的时间戳——但这不是必需的):

prices         (price_id, pricelist_id, note)
price_versions (price_ver_id, price_id, price, started_at, ended_at)
tickets        (ticket_id, price_ver_id, name, issued_at) 

如您所见,您指的是price_versions在您tickets的获得具体价格。但是您也可以轻松地收集与价格相关的通用信息(通过prices从那里加入表格)。

这种方法可以让您构造一个额外的约束,检查它issued_at不在之前started_at和之后ended_at(它在相应的行中不是 NULL)。但我想这是一个补充,而不是要求。

于 2012-11-03T11:43:58.010 回答