質問編集履歴
2
edit
    
        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
    
        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 | 
            -
             - 商品 | 
| 12 | 
            +
             - 商品
         | 
| 13 13 | 
             
            - 子テーブル
         | 
| 14 | 
            -
             - 注文詳細 | 
| 14 | 
            +
             - 注文詳細
         | 
| 15 | 
            -
             - 商品画像 | 
| 15 | 
            +
             - 商品画像
         | 
| 16 | 
            -
             - 商品バリエーション | 
| 16 | 
            +
             - 商品バリエーション
         | 
| 17 | 
            -
             - 商品レビュー | 
| 17 | 
            +
             - 商品レビュー
         | 
| 18 | 
            -
             - お気に入り商品 | 
| 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 | 
            +
            よろしくお願いします。
         | 
