私は3つのテーブルを持っています:
- 価格表 ( pricelist_id、名前)
- 価格(price_id、pricelist_id、価格、メモ)
- チケット(ticket_id、price_id、名前、時間)
したがって、価格をバージョン管理する主な理由は、価格が将来変更される可能性があり、統計のために過去の価格に関する情報を保持したいためであり、チケットには将来の変更された価格ではなく実際の価格が必要です。
クエリの例を教えてください。
私は3つのテーブルを持っています:
したがって、価格をバージョン管理する主な理由は、価格が将来変更される可能性があり、統計のために過去の価格に関する情報を保持したいためであり、チケットには将来の変更された価格ではなく実際の価格が必要です。
クエリの例を教えてください。
考えられるアプローチの 1 つは、2 つではなく 2 つの価格表を作成することだと思います。最初の 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
(対応する行で NOT NULL であること)。しかし、それは追加であり、要件ではないと思います。