MySQLデータベースを使用しています。表1と表2の2つのテーブルがあります。表1には複合主キーがあります。表2には、表1の複合PKを参照する複合外部キーがあります。
私が抱えている問題を以下に示します。
表1
|------------ PK ----------- |
menuid | categoryid | カテゴリ
名1|1 | myCategoryName1
1 | 2 | myCategoryName2
2 | 1 | myCategoryName3
2 | 2 | myCategoryName4
2 | 3 | myCategoryName5
表1の誤ったエントリを参照するエントリを表2に作成できます。
表2
|------------ FK ----------- | | ---- PK ---- |
menuid | categoryid | postid|投稿名
1|3 | 1 | myPostName
これで、データベースに有効な値を挿入できるので、大きな問題にはなりません。ただし、これはデータベースのリレーショナルエラーのようであり、クリーンで正しく機能するDBが必要です。この小さな問題を修正する方法はありますか?
更新:データベースを実装するためにphpMyAdminを使用していましたが、phpMyAdminに複合外部キーを実装する方法がないようです。誤って実装された外部キーを次の方法で確認できました。
SHOW CREATE TABLE Table2
ここTable2
で、は複合外部キーを持つ2番目のテーブルの名前です。
次に、手動で複合外部キーを正しく追加しました
ALTER TABLE Table2 ADD CONSTRAINT my_fk_constraint
FOREIGN KEY (menuid, categoryid)
REFERENCES Table1(menuid, categoryid)
ここmy_fk_constraint
で、は追加される制約の名前です。
注:この方法で外部キー制約を手動で追加すると、phpMyAdminで通常使用できるように、新しいエントリを挿入するときにドロップダウンメニューを使用できなくなります(FK列をクリックして対応するテーブルを参照することもできません)。
おかげpst
でthedayofcondor
、私はphpMyAdminを使用している小さなフリークなので、どちらも正しいです。