如果允许重复,您是否需要主键?

时间:2015-08-13 14:35:04

标签: sql-server primary-key

这可能过于主观,但有些时候让我感到困惑。

如果你有一个Fact表,允许10个维度的副本没有,你真的需要一个主键吗?

为什么会出现重复?

这有点棘手,但理想情况下每个副本实际上都是有效的。没有唯一的标识符可以将它们与记录记录的源系统分开。我们不拥有该系统,因此无法永远不会改变它。

数据

数据是批量处理的,只包含前几天的记录。因此,如果重新发布。我们只删除整天的记录,并在不使用主键的情况下重新发布新的记录日。

这就是我修复错误数据的方法。

已生成主键

我可以,但如果它从未使用或无论如何都要验证副本是否合法,为什么会这样做?

2 个答案:

答案 0 :(得分:0)

SQL Server数据库表不需要主键。

数据库引擎可能会在后台创建主键。

答案 1 :(得分:0)

是的,SQL Server不需要主键。大多数情况下,它需要在CLUSTERED索引中。因为,如果此表上有另一个NONCLUSTERED索引,则每个索引都将使用CLUSTERED索引来指向数据。因此,主键是群集密钥的好例子。如果它很短,并且你有另一个索引 - 这是创建它的原因。