首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >唯一Id生成

唯一Id生成
EN

Stack Overflow用户
提问于 2009-11-19 00:57:59
回答 5查看 1.1K关注 0票数 1

如何使用以下属性生成长度不超过12个字符的唯一键:姓名、父亲姓名、母亲姓名、出生日期、出生地点。

提前感谢:)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-19 01:06:45

即使是这些列可能也不足以成为唯一的,而且由于一个人的名字可以改变(随着婚姻、选择等),我通常不会使用它来生成唯一的键。

我通常使用代理,比如自动编号/标识/序列或UUID/GUID,这取决于需求。

票数 6
EN

Stack Overflow用户

发布于 2009-11-19 01:21:20

唯一标识符的主要且事实上唯一的属性是它是唯一的(在考虑的范围内,可以是表、模式或全局)。将任何“真实世界”值合并到这样的id中是没有意义的。

如果您确定这些属性唯一地描述了一个人,那么您应该在您提到的属性上创建一个唯一的约束。这些属性的组合形成了表的“自然键”。

唯一ID是一个“代理键”,这是一个方便的句柄,使您不必在与该表的连接中指定自然键的所有列。获取唯一ID的方式取决于数据库。例如,在Oracle中,您可以将序列与插入触发器结合使用。

自然键上的唯一约束将防止您插入同一个person两次,但您确实应该首先检查该表,看看该person是否已经存在。如果是,请使用从那时起已经分配的ID。当然,您可以将它组合到一个过程中,在这个过程中,您为它提供字段,它将返回ID,隐藏查找它的行为,或者如果它是新的,则创建它,然后返回新的ID。

票数 8
EN

Stack Overflow用户

发布于 2009-11-19 01:03:08

这不是您所描述的键,而是您希望使用的一小段结构化数据,而不是键。也许更有帮助的是:

--您希望能够从给定的12个字符的密钥中恢复这些属性吗?

--在给定这些属性的情况下,您是否愿意只生成一个键?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1757463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档