可能重复:
外键可以引用非唯一索引吗?
我只是将一个应用程序从 MySQL 移植到 PostgreSQL 和 MS SQL Server,我发现了奇怪的定义(至少据我所知)。
这是一个简化的例子。
为什么这在 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 中允许这样做?
谢谢!