我只是将一个应用程序从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中允许这样做?
谢谢!
答案 0 :(得分:0)
What do you think about this?
我认为这取决于您的数据。我有一个我一直使用的SQL服务器数据库。对于大多数表,主键是实体ID和程序编号的组合。实体有多个程序。然而,我还有一个表,其中只包含有关每个实体的信息,并且只通过实体ID链接到其他表。
这是某些数据的有效关系。