0

可能重复:
外键可以引用非唯一索引吗?

我只是将一个应用程序从 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 中允许这样做?

谢谢!

4

1 回答 1

0
 What do you think about this?

我认为这取决于您的数据。我有一个一直在使用的 SQL Server 数据库。对于大多数表,主键是实体 ID 和程序号的组合。实体有多个程序。然而,我也有一个表,其中仅包含有关每个实体的信息,并且仅通过实体 ID 链接到其他表。

对于某些数据,这是一个有效的关系。

于 2011-06-28T17:55:38.783 回答