【发布时间】:2010-09-18 06:45:49
【问题描述】:
我正在构建一个数据库,该数据库将存储有关一系列对象(例如科学论文、标本、DNA 序列等)的信息,这些对象都在网上存在并且可以通过 URL 或标识符等标识作为DOI。使用这些 GUID 作为对象的主键似乎是一个合理的想法,我遵循 delicious 和 Connotea 使用 GUID 的 md5 哈希。如果您将鼠标悬停在美味或 Connotea 书签中的编辑或删除按钮上,您将在浏览器状态栏中看到 md5 哈希。例如,http://stackoverflow/ 的书签是
http://delicious.com/url/e4a42d992025b928a586b8bdc36ad38d
其中 e4a42d992025b928a586b8bdc36ad38d 是 http://stackoverflow/ 的 md5 哈希。
有人对这种方法的优缺点有看法吗?
对我来说,这种方法的一个优点(与使用由数据库本身生成的自动递增主键相反)是我必须在对象之间做很多链接,并且通过使用 md5 哈希,我可以将这些链接存储在外部在一个文件中(例如,作为数据挖掘/抓取的结果),然后将它们批量导入数据库。同样,如果必须从头开始重建数据库,则指向对象的 URL 不会更改,因为它们使用 md5 哈希。
我欢迎任何关于这听起来是否合理的想法,或者是否有其他(更好的?)方法。
【问题讨论】:
-
您最终是否使用 md5 作为主键?进展如何?
-
任何非唯一值都可以用于索引,但不能用于 PK。
标签: database primary-key guid md5 uri