sql - 一列外键到两列主键

时间:2011-06-28 17:39:35

标签: mysql sql foreign-keys composite-primary-key

  

可能重复:
  Can a foreign key reference a non-unique index?

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

谢谢!

1 个答案:

答案 0 :(得分:0)

 What do you think about this?

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

这是某些数据的有效关系。