2012-11-03 21 views
0

我有3個表:如何擴大這個表,以支持修訂歷史

  • 價目表(pricelist_id,名)
  • 價格(price_id,pricelist_id,價格,備註)
  • 門票(ticket_id,price_id,名稱,時間)

因此,主要原因兒子版本價格是因爲價格可以在將來改變,我想保留過去的統計價格的信息,我想門票有實際價格,而不是未來價格變化。

你能給我一些查詢的例子嗎?

回答

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_versionstickets得到具體價格。但您也可以輕鬆收集通用價格相關信息(通過加入prices表格)。

該方法允許您構造一個附加約束,檢查issued_at不在started_at之前,而不是在ended_at之後(它在相應的行中不爲空)。但我想這是一個補充,而不是要求。