MySQL 外部キー制約を使用してデータの不整合を防ぐ
データの整合性を維持し、孤立したレコードを回避するには、外部キー制約を実装することが重要です。これは、InnoDB テーブルを使用する場合に特に重要です。外部キーはテーブル間の関係を確立し、親レコードが削除されると、対応する子レコードも自動的に削除されるようにします。
DELETE ON CASCADE について
DELETE ON CASCADE は、親レコードが削除されたときに子レコードを自動的に削除する外部キー制約です。これにより、有効な親レコードのない子レコードが存在するデータの孤立が防止されます。
外部キー制約と DELETE ON CASCADE の設定
DELETE ON で外部キー制約を設定するにはCASCADE、次の手順に従います:
例:
問題ステートメントで言及されているテーブルの例を考えてみましょう:
categories - id (INT) - name (VARCHAR 255) products - id - name - price categories_products - categories_id - products_id
適切な外部キー制約を設定するには、次のようにテーブルを作成します。
CREATE TABLE categories ( id int unsigned not null primary key, name VARCHAR(255) default null )Engine=InnoDB; CREATE TABLE products ( id int unsigned not null primary key, name VARCHAR(255) default null )Engine=InnoDB; CREATE TABLE categories_products ( category_id int unsigned not null, product_id int unsigned not null, PRIMARY KEY (category_id, product_id), KEY pkey (product_id), FOREIGN KEY (category_id) REFERENCES categories (id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE ON UPDATE CASCADE )Engine=InnoDB;
この設定では、カテゴリを削除すると、products テーブルの整合性を維持しながら、category_products 内の対応するレコードのみが削除されます。ただし、商品を削除してもカテゴリ テーブルには影響しません。
DELETE ON CASCADE を使用して外部キー制約を慎重に実装することで、データの整合性を維持し、データの破損を防ぎ、データベースにレコード間の正しい関係が確実に反映されるようにすることができます。
以上がDELETE ON CASCADE を使用した MySQL 外部キー制約はデータの不整合をどのように防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。