我是数据库的新手。我正在使用MySQL,并且我有一个使用三个属性的表A来形成复合主键:
A: [ key1 , key2 , key3 ],dateCreated,createdBy,...
现在我有另一个表B,需要参考上表中的记录。现在,重新使用上面的所有三个属性来形成一个关键似乎是一种痛苦。是否可以将表A作为主键使用额外的自动递增虚拟“id”属性,并将其用作表B中的引用?哪个是正确的做法?
答案 0 :(得分:1)
当然是。它被称为surrogate key:代理键不是从应用程序数据派生的。
[关于使用代理键的争论很多。链接的维基文章列出了优点/缺点。]
正如@Scharrels指出的那样,如果您使用代理键,则应对3个字段应用唯一约束。
答案 1 :(得分:1)
最好在集合(key1,key2,key3)上放置一个唯一约束,并将单个“虚拟”id作为主键,因为它将用作其他表的引用。
如果你想加速查找,你可以在集合上放置额外的索引(key1,key2,key3)。