シングル世代テーブルパターン
tableに 適用開始日
と 適用終了日
を持たせる設計
主キーは、 id
と 適用終了日
になる
これ単体で使うとかなりやりづらい
登録時に必ず 適用開始日
と 適用終了日
を指定しないといけない
例えば税率を加味したりすると、 適用終了日
なんて分かるはずがない
従って、NULLだったり、適当な未来の日付が入れられてしまう
SQLで取得する際に面倒
常に 適用開始日
と 適用終了日
のbetweeenを指定しないといけない
使っても良さげなケース
ここの図、
販売予定価格
に適用終了日とか要らなくない?

OrderLineが新規作成された時に、
PriceHistory
tableのデータを見て(なければ作る)、それと紐付ける
「現在の価格」は普通に product
tableを見ればいい
価格を変更したいときは、 product
tableをそのまま更新するだけでいい
product
の構造が複数種類ある場合は、 history
系のtableもそれだけ増えちゃう?

p.28のシングル世代テーブルパターンの商品価格tableって何で「主キーが商品IDと適用開始日」の2つになるの?
p.29の図5では、「商品価格ID」を振っているように同じようにそうしたらなにか問題が起きるの?
図4と図5で商品価格tableの主キーが異なる理由がわからない
参考
ここでは悪い例として挙げられている