为什么要使用主键?

时间:2010-02-02 18:10:05

标签: primary-key rdbms data-annotations

除了识别表中的唯一列外,还有哪些主键?这不能通过在列上使用自动增量约束来完成吗?我知道PK和FK用于关联不同的表,但这不能通过使用join来完成吗?

基本上,当使用主键加入时,数据库在提高性能方面做了什么?

6 个答案:

答案 0 :(得分:4)

主要用于外键的参照完整性,当你有PK时它也会在幕后创建一个索引,这样你在查找值时不需要表扫描

答案 1 :(得分:2)

RDBMS提供程序通常经过优化,可以处理具有主键的表。大多数商店统计信息有助于优化查询计划这些统计信息对于性能非常重要,尤其是在较大的表上,如果没有主键,它们将无法正常运行,并且最终会得到不可预测的查询响应时间。

大多数数据库最佳实践书都建议使用主键创建所有表,没有例外,遵循这种做法是明智的。没有多少东西说初级软件不仅仅是一个没有参照完整性而构建数据库的人!

答案 2 :(得分:1)

某些PK 只是一个自动递增的列。此外,您通常加入使用PK和FK。加入必须有一些关系。此外,大多数DBMS默认自动索引PK,这样可以提高连接性能,并根据ID查询特定记录。

答案 3 :(得分:1)

您可以在查询中没有主键的情况下加入,但是,您必须定义主键以强制执行数据完整性约束,至少在SQL Server中是这样。 (外键等。)

此外,这里有一篇有趣的读物Primary Keys

答案 4 :(得分:1)

在Microsoft Access中,如果您有一个链接表,例如SQL Server,则源表必须具有主键才能使链接表可写。至少,Access 2000和SQL Server 6.5就属于这种情况。它可能与以后的版本不同。

答案 5 :(得分:0)

关键是数据完整性和识别。密钥的唯一性通过在数据库中具有约束来保证"坏"否则会违反密钥的数据。以这种方式保证数据完整性规则的事实正是使密钥可用作标识符的原因。这适用于任何关键。按照惯例,每个表的一个键称为" primary"密钥,但这并不会使其他备用密钥变得不那么重要。

在实践中,我们需要能够针对所有类型的数据(不仅仅是数字)强制执行唯一性规则,以满足数据质量和可用性的要求。

相关问题