子テーブルと親テーブルがある場合、カスケードオプションを使用すると、親テーブルから行を削除するときに適切な子行が削除されることがわかっています。
しかし、子テーブルから最初にいくつかの行を削除する場合、これも機能しますか?親テーブルの適切な行が削除されますか?とにかく可能ですか?
編集:私は以下を含むゲームのデータベースを持っています:
- playerTbl(PK = PlayerID)
- GamesTbl(PK = GameID)
- GameMovesTbl(PK = MoveID、FK = GameID)
これで、ユーザーがゲームを開始するときに、ゲームに登録する必要があります(彼は自分自身、またはゲームをプレイするグループの一部になることができます)
今私がやりたいのは、あるゲームにプレーヤーが1人しかいない場合です。ユーザーがこのプレーヤーをデータベースから削除したい場合、playersTbl、適切なゲーム、およびゲームの動きからレコードが削除されます。
編集:現在、playersTblとgamesTblはお互いに見知らぬ人です。したがって、私が見る最善の解決策は、それらのテーブル間を結合する新しいテーブルを作成することです。これで、私のDBは次のようになります。
- PlayersTbl(PK = PlayerID)
- JoinTbl(FK = PlayerID、GameID)
- GamesTbl(PK = GameID)
- GameMovesTbl(PK = MoveID、FK = GameID)
したがって、カスケードオプションを使用している場合は、次のことを意味します。
- PlayersTblはJoinTblの親テーブルです
- JoinTblはGamesTblの親テーブルです
- GamesTblはGameMovesTblの親テーブルです
しかし、ユーザーが一部のプレーヤーを削除すると、PlayersTblとJoinTblからのみ削除されます。したがって、私の質問は、削除オプションが正しく機能するように、これらのテーブル間の最適な関係は何ですか?