【发布时间】:2010-11-16 12:52:25
【问题描述】:
我看到很多应用程序使用哈希作为代理键而不是普通整数。我看不出这种设计有什么好的理由。
鉴于大多数 UUID 实现只是散列时间戳,为什么这么多数据库设计人员选择它们作为应用程序范围的代理键?
【问题讨论】:
-
0xA3 提供的链接讨论了真正的人工代理 (GUID)。我的解释是,这个线程实际上是关于使用 MD5 而不是系统生成的代理在数据库中的有意义值的散列。这是我写答案时的假设。
-
@dportas:您回答中的情况确实是使用哈希有意义的情况的一个很好的例子;现在我正在查看来自 SugarCRM 分支的数据库模式,并且每个表都有 UUID 样式的键,这种设计的原因让我很好奇。
-
@0xA3:+1,感谢您的指点。
-
@Paulo:是的。你的问题读起来就像你在问一般的 MD5 哈希。散列恰好用于生成 UUID 的事实与该问题不太相关。在数据库中使用哈希是一种非常有用的技术,但显然这不是您想知道的。
标签: database-design md5 relational-database surrogate-key