MySQL中的复合主键问题

时间:2009-08-08 14:24:05

标签: mysql database database-design

我是数据库的新手。我正在使用MySQL,并且我有一个使用三个属性的表A来形成复合主键:

A: [ key1 key2 key3 ],dateCreated,createdBy,...

现在我有另一个表B,需要参考上表中的记录。现在,重新使用上面的所有三个属性来形成一个关键似乎是一种痛苦。是否可以将表A作为主键使用额外的自动递增虚拟“id”属性,并将其用作表B中的引用?哪个是正确的做法?

2 个答案:

答案 0 :(得分:1)

当然是。它被称为surrogate key:代理键不是从应用程序数据派生的。

[关于使用代理键的争论很多。链接的维基文章列出了优点/缺点。]

正如@Scharrels指出的那样,如果您使用代理键,则应对3个字段应用唯一约束。

答案 1 :(得分:1)

最好在集合(key1,key2,key3)上放置一个唯一约束,并将单个“虚拟”id作为主键,因为它将用作其他表的引用。

如果你想加速查找,你可以在集合上放置额外的索引(key1,key2,key3)。

相关问题