2016-04-20 64 views
0

什么被认为是一个更好的/标准方法:外键引用PK VS外键引用唯一键

  1. 一个外键引用另一个表的主键(PK是自动递增的数值)。

  2. 引用另一个表的唯一键的外键(唯一键列保存有意义的数据而不是自动生成的值)。

一种方法比其他方法有任何性能优势吗?

理想情况下,唯一的关键列应该是PK,但这是我无法改变的。

+0

你正在使用哪些DBMS? – Kateract

+3

我想说这是一个主观问题,因为它将取决于服务器和dbms中的索引等内容。例如,外键约束不会被SQL Server自动索引。另外,如果你的程序员使用ORM,他们可能会更容易使用FK来引用真正的PK – Nikki9696

+0

FK *通常引用被引用表的PK,但是在引用唯一索引时没有任何缺点或缺点而是在被引用的表上。性能没有任何差别,要么 –

回答

0

我喜欢使用唯一密钥作为主键的想法,尤其是如果您必须存储唯一密钥数据以用于其他目的。很遗憾,这是你无法改变的东西,所以我不确定你要回答这个问题。但是唯一出现的性能问题是密钥的大小,因为一些数据类型明显使用比其他数据类型更多的存储空间,这最终会影响查询性能。无论哪种方式都应该强制引用完整性并防止孤立的记录。