0

重複の可能性:
外部キーは一意でないインデックスを参照できますか?

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 で許可されているのでしょうか?

ありがとう!

4

1 に答える 1

0
 What do you think about this?

データ次第だと思います。常に使用している SQL サーバー データベースがあります。ほとんどのテーブルでは、主キーはエンティティ ID とプログラム番号の組み合わせです。エンティティには複数のプログラムがあります。それでも、各エンティティに関する情報だけを持ち、エンティティ ID を介して他のテーブルにリンクするだけのテーブルもあります。

一部のデータでは有効な関係です。

于 2011-06-28T17:55:38.783 に答える