0

これは、私が現在使用しているデータベース モデルの簡略化されたバージョンです。

店舗と顧客の簡易DBモデル(カラスフットDB表記)

ドメインの簡単な説明:

  • 各店舗には複数の顧客がいる可能性があります。各顧客エンティティは、単一のアプリケーション ユーザー アカウントを参照します (つまり、ユーザーとストアの間の多対多の関係)。
  • 各ストアには割引カテゴリを設定できます (ストアには設定がない場合もあります)。
  • 割引カテゴリに顧客を追加して、店舗での購入時に割引を受けることができます。

現在、Customer と Store の間の FK に「ON DELETE CASCADE」があります。つまり、ストアが削除されると、そのストアの顧客も削除されます。また、Discount Category と Store の間の FK に「ON DELETE CASCADE」があります。つまり、ストアが削除されると、そのストアの割引カテゴリが削除されます。

ここで、店舗のオーナーが割引カテゴリを削除したい場合を考えてみましょう。顧客と割引カテゴリの間の FK に「ON DELETE SET NULL」を設定したいと思います。

SqlServer でこれを実行しようとすると、通常の「複数のカスケード パス」の問題が発生します。

質問: 他のカスケード関係を維持しながら、割引カテゴリが削除されたときに顧客が割引カテゴリから削除される (つまり、FK を null に設定する) ように、この問題を改造する洗練された方法はありますか? SqlServer から離れられないとします。

4

1 に答える 1