重複の可能性:
外部キーは一意でないインデックスを参照できますか?
MySQL から PostgreSQL および MS SQL Server に 1 つのアプリケーションを移植したところ、奇妙な (少なくとも私の知る限り) 定義が見つかりました。
これは単純化された例です。
なぜこれが MySQL で可能になり、どのように動作する必要があるのでしょうか?
create table t1 (a int, b int, primary key (a, b))
create table t2 (c int, a int references t1 (a))
t1.a は一意ではなく、t1.b も一意ではありません。一緒に一意のレコードを作成し、それが主キーになります。t2.a は t1.a への外部キー参照ですが、t1.a は t1 の主キーの一部にすぎません。
これについてあなたはどう思いますか?
明らかにデータベースの設計が間違っていますか? もしそうなら、なぜこれが MySQL で許可されているのでしょうか?
ありがとう!