在记录组中分配唯一ID - 从0或1开始

时间:2010-02-15 13:50:56

标签: database

这可能是一个主观问题,但我想知道你的意见。它与这个question有某种关系,但我想现在,如果你从0或1的数据库开始.sqlserver中的自动增量id从1开始,所以我的主观意见应该从一开始另一方面,在大多数编程语言中,索引从0开始。

5 个答案:

答案 0 :(得分:5)

就个人而言,我会在数据库中以1开始任何ID,而不是0.我会将0视为身份的无效值。

这样做的原因是,当您在代码中处理来自数据库的对象时,通常将标识值存储在整数类型字段中。在一些编程语言中(我说的是C#和Java经验),未初始化的整数字段的默认值是0,这意味着如果未在代码中设置标识字段,则将获得与行中的字段相同的值。标识为0的数据库。这会导致模糊,并且可能难以追踪错误。

答案 1 :(得分:2)

我们为不适用的项目保留索引0,然后让自动增量继续进行,这样我们总是可以在没有左连接或空值的情况下连接表。 例如,在Brands表中,我们可以:

  • 0:没有品牌/没有车
  • 1:福特
  • 2:丰田
  • 依旧......

在库存事实表中,我们可以拥有非品牌商品,并且仍然可以与品牌表完美结合。

托马斯

答案 2 :(得分:1)

从我的角度来看,代码中的索引与数据库中使用的索引不同,所以为什么还要比较这两个索引呢?从你喜欢的任何事情开始。无论如何,使用这两种方式都不会导致任何问题。

答案 3 :(得分:1)

代理主键不应该依赖于应用程序中的任何业务流程/逻辑。在这种情况下,任何有效的PK值和序列都是好的。

从-1开始,只有赔率,仅以7等结束等。

这没关系,只是因为它是人工密钥

答案 4 :(得分:1)

由于数字应该对它的任何用途都不透明,所以你选择什么都不重要。您不太可能希望按ID索引所有条目,您可以使用查询来循环遍历它们。