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

質問編集履歴

2

edit

2017/03/13 01:06

投稿

xenbeat
xenbeat

スコア4258

title CHANGED
File without changes
body CHANGED
@@ -8,14 +8,15 @@
8
8
  例えばECサイトで、登録した商品情報を物理削除する場合、どのようにアプリケーションで実装するのがベターでしょうか?
9
9
  下記のように親テーブル(本件の商品テーブル)に紐づく子テーブルが数多く存在する場合、デッドロックや性能面で問題がでてくる思っています。
10
10
 
11
- - 親テーブル
11
+ 親テーブル
12
- - 商品
12
+ - 商品
13
+
13
- - 子テーブル
14
+ 子テーブル
14
- - 注文詳細
15
+ - 注文詳細
15
- - 商品画像
16
+ - 商品画像
16
- - 商品バリエーション
17
+ - 商品バリエーション
17
- - 商品レビュー
18
+ - 商品レビュー
18
- - お気に入り商品
19
+ - お気に入り商品
19
20
 
20
21
 
21
22
 

1

tag edit

2017/03/13 01:06

投稿

xenbeat
xenbeat

スコア4258

title CHANGED
File without changes
body CHANGED
@@ -5,26 +5,26 @@
5
5
  - INSERT → 親の行が存在することを確認する
6
6
  - DELETE → 子の行が存在しないことを確認する
7
7
 
8
- 例えばECサイトで、登録した商品情報を物理削除する場合、どのようにアプリケーションで実装するのがベターでしょうか?(子の行が存在する場合は論理削除)
8
+ 例えばECサイトで、登録した商品情報を物理削除する場合、どのようにアプリケーションで実装するのがベターでしょうか?
9
9
  下記のように親テーブル(本件の商品テーブル)に紐づく子テーブルが数多く存在する場合、デッドロックや性能面で問題がでてくる思っています。
10
10
 
11
11
  - 親テーブル
12
- - 商品(item)
12
+ - 商品
13
13
  - 子テーブル
14
- - 注文詳細(order_detail)
14
+ - 注文詳細
15
- - 商品画像(item_image)
15
+ - 商品画像
16
- - 商品バリエーション(item_variation)
16
+ - 商品バリエーション
17
- - 商品レビュー(item_review)
17
+ - 商品レビュー
18
- - お気に入り商品(customer_item)
18
+ - お気に入り商品
19
19
 
20
20
 
21
21
 
22
22
 
23
23
  外部キーを使用している環境であれば、例外をキャッチしてハンドリングするのが一般的だと思いますが、本ケースの場合どうするのがベターなのか知りたいです。
24
- 若輩者の自分の知識の中では、下記の方法しか思いつかなくて困っています。
25
- 0. それぞれのテーブルに対して子行の存在確認すると同時にロックを取得(確認後の挿入を防止するため)
26
- 0. もし、全テーブルで子行が存在しなければ親行を物理削除、もし1テーブルでも子行が存在してれば論理削除という単純な方法しか思いつかないです。
27
24
 
25
+ 0. それぞれのテーブルに対して子行の存在確認すると同時にロックを取得(存在しなかった事実確認後のデータ挿入を防止するため)
28
- どんな言語でも構いませんのでベタな方法御座いまたらご教示いただたら幸甚す。
26
+ 0. 全テブルで子行存在れば親行を物理削除、もし1テーブルも子行が存在してれば論理削除
29
27
 
28
+ という単純な方法しか思いつかないのですが、ベターな方法が御座いましたらご教示いただきたいです。
29
+
30
- 以上、よろしくお願いします。
30
+ よろしくお願いします。