Database design 对于‘;人’;?

Database design 对于‘;人’;?,database-design,relational-database,primary-key,natural-key,Database Design,Relational Database,Primary Key,Natural Key,在一个将在全球范围内使用的应用程序中, 哪些是唯一标识用户/人员的自然密钥的最佳候选 我们如何处理边缘案例? -没有国家或官方文件的人(难民) -更改姓名或性别/性别的人 密钥应该是健壮的和唯一的。如果没有上下文,这是不可能回答的。与任何信息系统一样,您需要了解生成和使用数据的需求和操作过程。如果人们将与您的系统交互或由您的系统提供服务,那么哪些属性需要构成这些交互和服务的一部分?如果相关人员必须在线注册,或者他们必须同意合同,或者如果存在其他信息收集流程,那么这些交互很可能会定义密钥,例如登录

在一个将在全球范围内使用的应用程序中, 哪些是唯一标识用户/人员的自然密钥的最佳候选

我们如何处理边缘案例? -没有国家或官方文件的人(难民) -更改姓名或性别/性别的人


密钥应该是健壮的和唯一的。

如果没有上下文,这是不可能回答的。与任何信息系统一样,您需要了解生成和使用数据的需求和操作过程。如果人们将与您的系统交互或由您的系统提供服务,那么哪些属性需要构成这些交互和服务的一部分?如果相关人员必须在线注册,或者他们必须同意合同,或者如果存在其他信息收集流程,那么这些交互很可能会定义密钥,例如登录名、合同标识符或数字签名


请注意,在许多情况下,也许几乎所有情况下,系统中识别的是与某个人的交互或合同,而不一定是个人本身。

简单。他们不存在。高度敏感的安全系统使用指纹或虹膜扫描,但这不包括法人,而且无论如何,这种扫描自然无法立即获得。目前甚至没有真正的政府的国家用较不先进的手段“识别”他们的公民,而根据定义,这些手段也较不“稳健”(/可靠)。

正如其他人所评论的那样,获得100%独特的东西将是一件困难的事情——可能需要在边缘案例和实用性之间取得平衡

出于实际考虑,您可以假设以下字段组合可能在绝大多数情况下唯一地识别一个人:

  • 出生日期
  • 出生证明上的全名(姓名、中间名和姓氏)
但对于普通的名字来说,这就不适用了——如果你的名字是,而且你出生在婴儿潮时期,那么会有其他人把你的名字和出生日期写在那里


为了进一步缩小范围,你可以加上出生的时间和地点,但这些可能更难获得。即使这样,也没有100%的铸铁保证——在历史上的某个时刻,两个婴儿在同一天出生在同一家医院,并且有相同的出生时间和相同的名字,这并非完全不可能……

Imo,其中一个最独特的值,可以用来确定人是唯一的,同时不是随机生成的,可以是一个代码生成的一些数学计算常数的帐户。其中一些可能是出生日期和地点或出生证上的姓名。这将生成一个几乎是唯一的id(人们出生时有多频繁有相同的名字、相同的日期和相同的地点?),也是自然的,因为它不是随机生成的。 一个很好的例子是,意大利目前使用的医疗系统中唯一识别个人的方法,也就是意大利财政代码(不要与ID混淆)

我认为这可以回答你的问题,否则我认为需要更多的背景


更多信息在

我会说,与我们在数据库中记录的大多数其他内容相比,人们有更多潜在的好候选密钥。也许你对“自然”的解释和我的不同。所有属性值都由人类或机器发明的符号组成,包括生物识别标识符。重要的是什么属性能够以可靠和可验证的方式识别话语领域中的某些东西。有趣的信息。谢谢