.NET 中数据库表的唯一 ID
Posted
技术标签:
【中文标题】.NET 中数据库表的唯一 ID【英文标题】:Unique ID for database tables in .NET 【发布时间】:2011-01-07 09:48:32 【问题描述】:有人可以列出广泛使用的方法来生成要在数据库表中使用的唯一 ID(PK 或其他)
表字段应该始终是字符串(为了灵活性)还是 GUID(紧密耦合)还是只使用 IDENTITY 始终?
如果它是字符串,那么我当然可以随时更改生成器逻辑。
对于 IDENTITY,我感到受到限制,因为我必须依赖数据库。但是,像 Invoice # 这样在外部发布字段是否是一个不错的选择。
对于小数据,比如 10000 条记录,我必须有什么选项来获得最小长度的唯一但随机的字母数字?
我面临很多情况,我需要这种唯一编号用于各种目的,如果我无法考虑一个好的选择,我必须回退到好的旧的和快速的 .NET Guid.newGuid.ToString()。
但我需要听取有经验的人的意见,一般准则和需要注意的事项是什么?
【问题讨论】:
我不明白为什么使用 GUID 是紧密耦合的。它将你与什么结合起来? 如果数据库提供者改变或者我想改变 PK 逻辑(从 GUID 到其他方法)。好吧,那将是罕见的。但仍然。 【参考方案1】:您可以简单地使用以下命令来创建唯一的 id
Guid.NewGuid();
我个人更喜欢将表格字段设置为唯一标识符。
【讨论】:
【参考方案2】:始终使用尽可能小的 ID。
如果您不需要在业务层中生成 ID(例如,许多客户节省往返行程),请在表中使用 IDENTITY 列,否则使用 GUID,但不要将聚集索引放在 GUID 列上,除非它是也是COMB GUID。
【讨论】:
但是你的身份依赖于数据库,另外一些地方我需要不可猜测的 id。那么,实现给定长度的字母数字随机字符串的通用方法是什么。 [碰撞的可能性应该随着长度的增加而直接降低。]以上是关于.NET 中数据库表的唯一 ID的主要内容,如果未能解决你的问题,请参考以下文章