複数のショップとそれらのショップに割り当てられたユーザーの作成をサポートするために、以下のようなデータベース構造を設計しました。私のテーブルは InnoDB ストレージ エンジンを使用しています。
[user]
user_id
[user_profile]
user_profile_id
user_id
[user_to_shop] PIVOT
user_id
shop_id
[shop]
shop_id
[shop_profile]
shop_profile_id
shop_id
[category_to_shop] PIVOT
category_id
shop_id
[category]
category_id
[category_description]
category_description_id
category_id
[product_to_category] PIVOT
product_id
category_id
[product_to_shop] PIVOT
product_id
shop_id
[product]
product_id
...
...
私が達成したいのは、ユーザー(user_id)が削除されたときに、関連するすべてのレコード(カテゴリレコード、ショップレコード、...、...)を削除することです。
エンティティごとに制約を作成しました。したがって、user_id(1) を削除すると、エンジンは user_profile(user_id(1)) も削除します。
ALTER TABLE `user_profile`
ADD CONSTRAINT `user_profile_cs1`
FOREIGN KEY (`user_id`) REFERENCES `user`(`user_id`)
ON DELETE CASCADE
しかし、ピボット テーブルをどうすればよいでしょうか。これらのテーブルで制約または外部キーを宣言して、作業を完了して安全にする方法は?