phpMyAdminで外部キーを設定するには?質問する

phpMyAdminで外部キーを設定するには?質問する

phpMyAdmin を使用してデータベースを設定しています。主キー でインデックス付けされたfoo2 つのテーブル (とbar)があります。 それらの主キーを外部キーとして使用して、それらのテーブル間にリレーショナル テーブル ( ) を作成しようとしています。foo_bar

これらのテーブルを MyISAM として作成しましたが、MyISAM は外部キーをサポートしていないと読んだため、3 つすべてを InnoDB に変更しました。すべてのidフィールドは ですINT(11)

テーブルを選択しfoo_bar、「リレーション ビュー」リンクをクリックして、FK 列を および に設定しようとするdatabase.foo.iddatabase.bar.id、各列の横に「インデックスが定義されていません。」と表示されます。

何が足りないのでしょうか?

明確化/更新

シンプルさのために、phpMyAdmin を使い続けたいと思います。現在、PHP/CSS/Javascript に集中できるほど簡単な XAMPP を使用しています。また、phpMyAdmin も付属しています。

また、明示的な外部キーをまだ設定できていませんが、リレーショナル テーブルがあり、次のように結合を実行できます。

SELECT * 
FROM foo 
INNER JOIN foo_bar 
ON foo.id = foo_bar.foo_id 
INNER JOIN bar
ON foo_bar.bar_id = bar.id;

データベースで FK が明示的に定義されていないのは、私にとって不安です。

ベストアンサー1

phpMyAdmin を使用してリレーションを設定する場合は、2 つのことを行う必要があります。まず、参照テーブル (この場合は foo_bar.foo_id) の外部キー列にインデックスを定義する必要があります。次に、リレーション ビュー (参照テ​​ーブル内) に移動し、参照列 (この場合は foo.id) と、更新時および削除時のアクションを選択します。

複数のテーブルが相互にリンクされている場合、外部キーは便利だと思います。特に、参照オプションを正しく設定すると、削除スクリプトが非常に短くなります。

編集: 両方のテーブルで InnoDB エンジンが選択されていることを確認してください。

おすすめ記事