【发布时间】:2010-10-30 05:55:28
【问题描述】:
我意识到这个问题很可能以前被问过,但我在 StackOverflow 上的问题中搜索了一些,但我并没有真正找到我的答案,所以这里是。如果您发现重复,请链接到它。
出于某种原因,我更喜欢使用Guids(MsSql 中的uniqueidentifier)作为我的主键字段,但我真的不知道为什么这样会更好。在我最近学习的许多教程中,使用了自动递增的int。我可以看到两者的优缺点:
-
Guid始终具有相同的大小和长度,没有理由担心用完它们,而在用完之前可以拥有的记录数量是有限的适合int。 -
int是(至少在 C# 中)可空类型,在查询数据时打开几个快捷方式。 - 而且
int更容易阅读。 - 我敢打赌,您至少可以在这里想出更多的东西。
所以,正如标题所说的那样简单:推荐的数据库中 ID(主键)列的数据类型是什么?
编辑:收到几个简短的答案后,我还必须添加这个后续问题。没有它,您的答案既不具有说服力,也不具有教育意义... ;) 您为什么这么认为,以及使您不选择它的其他选项的缺点是什么?强>
【问题讨论】:
-
应该指出,GUID 和整数只是显示和生成字节序列的不同方式。在顺序生成整数的情况下,GUID 是“随机”生成的,并且其中有更多字节。这意味着您无需查看数据库的现有状态即可生成一个。在 C# 中,一切都可以用 ?就可以了。
标签: language-agnostic database-design types primary-key database-agnostic