0

シナリオ: ユーザーは、友人などの関係タイプを作成できます。その後、ユーザーは関係定義として他のユーザーをリンクできます。ユーザーが削除された場合は、関係の定義を削除する必要があり、ユーザー間の関係も削除する必要があります。

これは、SQL サーバーのデモ データベース設計です: http://i.stack.imgur.com/3pcOy.png 外部キーは次のとおりです。

  1. 表 2.UserId リファレンス 表 1.UserId;
  2. 表 3.RelationShipId リファレンス 表 2.RelationshipId;
  3. 表 3.UserId リファレンス 表 1.UserId;
  4. 表 3.OtherUserId 参照 表 1.UserId;

私の目標は、テーブル 1 からレコードを削除すると、テーブル 2 とテーブル 3 の関連レコードが削除されることです。テーブル 2 からレコードを削除すると、テーブル 3 の関連するレコードが削除されます。

「ON DELETE CASCADE」を使用しようとすると、「サイクルまたは複数のカスケードパスが発生する可能性があります」というエラーが発生し、トリガーを使用したくありません。

このシナリオに関する提案はありますか?ありがとう、

4

1 に答える 1

0

表 3 のユーザー ID は冗長ではありませんか? または、少なくともテーブル 3 にユーザー ID を入れた場合、なぜテーブル 2 があるのでしょうか? 表 2 の情報は、既に表 3 に存在します。

テーブル 3 のユーザー ID がテーブル 2 の関係レコードと同じでない状況はありますか? そうでない場合 - 表 2 は冗長です。

于 2013-04-18T12:03:23.463 に答える