コメントで述べたように、FK制約のあるテーブルを他のテーブルにドロップする必要があります。最初に、リンク先のテーブルをドロップできます。
例:
User
id: 1
name: Mike
Address
id: 1
user_id: 1 (FK constraint to User.id table.column)
address_1: 555 Main Street
この設定は1:1の関係です(
ただし、最初にAddressテーブルを削除すると、Userテーブルは他のテーブルに対してFKではないため、すべてが期待どおりに機能します。
参照整合性 を確保する スキーマ内では、データ駆動型アプリケーション全体に浸透する孤立した行が発生しないようにします。
次のコマンドを発行することもできます:
SET foreign_key_checks = 0;
# Do Stuff
SET foreign_key_checks = 1;
ただし、データの参照整合性が損なわれ、実際に混乱する可能性があるため、これには強くお勧めします。誰かがエンタープライズ環境でこれを行うのを見たことがあり、それをクリーンアップするのに数週間かかりました。ただし、これを厳密に実行している場合は、 テスト目的で;単体テストを書いたり、単に学習したりするのと同じように、毎回テーブルを削除したくない場合は、次のようにすることができます。
# Because we remove the foreign key check, we can truncate in any order
SET foreign_key_checks = 0;
TRUNCATE TABLE user;
TRUNCATE TABLE address;
SET foreign_key_checks = 1;
外部キー制約を使用した適切なスキーマ設計は、データ駆動型アプリケーションの優れた基盤を構築するのに役立ちます。いつ使用するか、外部キー制約を構築する方法について頭を悩ませるには時間がかかりますが、時間が経つにつれて理解し始めます。開始するための良い方法は、magento のようなオープンソースプロジェクトをダウンロードすることです。 、 wordpress 、または vbulletin そしてそれらのスキーマを見てください。 MySQLワークベンチ を使用してこれらのスキーマをイントロスペクトすることもできます。 実体関連図 を表示します (ERD)、テーブル間のリンクを視覚的に示します。