teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

Fix

2018/06/19 02:49

投稿

xenbeat
xenbeat

スコア4258

answer CHANGED
@@ -18,5 +18,5 @@
18
18
  ##### 補足
19
19
  少し言葉足らずだったようなので補足。
20
20
  既にご認識かと思いますが、ある商品が過去に何度か注文された後に、その商品の価格が変わったり、その商品が廃番になったりと、商品と注文のライフサイクルは異なります。
21
- このように、**ライフサイクルの異なるエンティティ同士はリレーションを張らずに非正規化する**というのが設計的にはベストと言えるでしょう。
21
+ このように、**ライフサイクルの異なるエンティティ同士はリレーションを張らない**というのが設計的にはベストと言えるでしょう。
22
22
  ただ、使用しているアプリケーションフレームワークで、リレーションを張らないといけない等の制約がありましたら、この限りではありません。

1

補足

2018/06/19 02:49

投稿

xenbeat
xenbeat

スコア4258

answer CHANGED
@@ -13,4 +13,10 @@
13
13
  これらのテーブル(ログファイル)に挿入(記録)されたデータ(ログ)はイミュータブルであり、
14
14
  そのデータを更新するということは、極端な言い方をすると**取引データの改ざん**となります。
15
15
 
16
- なので、注文された商品情報は、非正規化した注文関連のテーブルに、注文時点の情報をそのまま保持するのが良いという考えになります。
16
+ なので、注文された商品情報は、非正規化した注文関連のテーブルに、**注文時点の情報をそのまま保持する**のが良いという考えになります。
17
+
18
+ ##### 補足
19
+ 少し言葉足らずだったようなので補足。
20
+ 既にご認識かと思いますが、ある商品が過去に何度か注文された後に、その商品の価格が変わったり、その商品が廃番になったりと、商品と注文のライフサイクルは異なります。
21
+ このように、**ライフサイクルの異なるエンティティ同士はリレーションを張らずに非正規化する**というのが設計的にはベストと言えるでしょう。
22
+ ただ、使用しているアプリケーションフレームワークで、リレーションを張らないといけない等の制約がありましたら、この限りではありません。