这可能是一个主观问题,但我想知道你的意见。它与这个question有某种关系,但我想现在,如果你从0或1的数据库开始.sqlserver中的自动增量id从1开始,所以我的主观意见应该从一开始另一方面,在大多数编程语言中,索引从0开始。
答案 0 :(得分:5)
就个人而言,我会在数据库中以1开始任何ID,而不是0.我会将0视为身份的无效值。
这样做的原因是,当您在代码中处理来自数据库的对象时,通常将标识值存储在整数类型字段中。在一些编程语言中(我说的是C#和Java经验),未初始化的整数字段的默认值是0,这意味着如果未在代码中设置标识字段,则将获得与行中的字段相同的值。标识为0的数据库。这会导致模糊,并且可能难以追踪错误。
答案 1 :(得分:2)
我们为不适用的项目保留索引0,然后让自动增量继续进行,这样我们总是可以在没有左连接或空值的情况下连接表。 例如,在Brands表中,我们可以:
在库存事实表中,我们可以拥有非品牌商品,并且仍然可以与品牌表完美结合。
托马斯
答案 2 :(得分:1)
从我的角度来看,代码中的索引与数据库中使用的索引不同,所以为什么还要比较这两个索引呢?从你喜欢的任何事情开始。无论如何,使用这两种方式都不会导致任何问题。
答案 3 :(得分:1)
代理主键不应该依赖于应用程序中的任何业务流程/逻辑。在这种情况下,任何有效的PK值和序列都是好的。
从-1开始,只有赔率,仅以7等结束等。
这没关系,只是因为它是人工密钥
答案 4 :(得分:1)
由于数字应该对它的任何用途都不透明,所以你选择什么都不重要。您不太可能希望按ID索引所有条目,您可以使用查询来循环遍历它们。