SQL:具有唯一约束的字符串PK(可能是复合)或auto_number人工PK?

时间:2016-12-09 09:25:02

标签: sql primary-key

我正在创建一个新的数据库并陷入两难境地:我有一个作者表。我的要求是它应该包含firstName和lastName列,我不应该允许两个具有相同firstName和lastName的作者。

我的第一个想法是创建firstName和lastName复合pk,那就是它!

但是,我会把这个表绑定到其他表,以便让我的生活更轻松我使用int auto_increment PK并制作firstName和lasteName的复合UC。

我的问题一般是:让我说我有个人桌,我可以使用SSN作为PK。如果我将这个表绑定到n个表,那么复制子表中的SSN值会比使用int auto_increment PK和制作SSN列的UC消耗更多内存吗?

什么方法更好,什么时候使用什么?

亲切的问候,

1 个答案:

答案 0 :(得分:0)

最好的方法是将PRIMARY KEY与业务逻辑表的其余部分分开。此外,由于索引,单独使用PK会更快,性能更好,维护更容易,并且可以更快地将表链接到彼此,这也可以确保更快地执行表中的语句。

您最好的选择是选择id之类的PK列,然后对firstName-lastName设置单独的UNIQUE约束。