次のものがあるとします (サンプル構造とデータ):
Table category
======================
id (PK) name
-----------------
45 computers
50 sports
Table category_tag
======================
id (PK) name cat_id (FK)
---------------------------------
100 keyboard 45
120 football 50
Table listing_category
======================
list_id (PK) cat_id (PK/FK)
------------------------------
10001 45
10001 50
Table listing_tag
======================
list_id (PK) cat_tag_id (PK/FK)
----------------------------------
10001 100
10001 120
上記の例では、テーブルから行が削除されたときに、listing_category
テーブル内の関連するエントリも削除する必要がありますlisting_tag
。
これで、テーブル「category」とテーブル「category_tag」を組み合わせることができることがわかりましたが、category_tag
テーブルには余分なフィールドとデータが含まれているため、これらを別々にしておくことを好みます。
もう 1 つのオプションは、cat_id
テーブルに列を追加するlisting_tag
ことですが、可能な限りデータの重複を避けたいと考えています。
上記のテーブル構成を使用して「カスケード削除」外部キー制約を作成することは可能ですか? そうでない場合、これが機能するようにテーブルを変更するにはどうすればよいですか?