我有 3 张桌子:
- 价格表( pricelist_id,名称)
- 价格(price_id、pricelist_id、价格、注释)
- 门票(ticket_id、price_id、姓名、时间)
所以,版本化价格的主要原因是因为价格可以在未来改变,我想保留过去价格的信息用于统计,我想门票有真实价格,而不是未来改变的价格。
你能给我一些查询的例子吗?
我有 3 张桌子:
所以,版本化价格的主要原因是因为价格可以在未来改变,我想保留过去价格的信息用于统计,我想门票有真实价格,而不是未来改变的价格。
你能给我一些查询的例子吗?
我想一种可能的方法是制作两个价格表而不是两个:第一个将存储一些与价格相关的通用数据(如“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)。但我想这是一个补充,而不是要求。