2

我正在开发一个使用“识别记录”之一的国家 ID 的系统,将 nat_id 嵌入所有表中以使查询更容易是一个好主意吗?这样做有什么缺点?我只是想从这里的人那里得到意见,因为我可能会错过一些重要的事情。

4

2 回答 2

9

正如@Oded 所建议的那样,可能会涉及法律和隐私问题(这在很大程度上取决于您所在的国家/地区)。

隐私问题的一个例子是,在一些国家,个人的出生日期——在一些国家,他们的性别——是其国民身份证号码的一部分。将其复制到架构中的每个表中可能不是一个好主意,因为这会使限制对这些信息的访问变得困难。

除此之外,还有几个纯技术问题:

  1. 并非每个国家/地区都有国家 ID 系统,而有的国家/地区使用不同的格式。当您需要适应一种新格式时,您真的要更改架构中的每个表吗?
  2. 我可以想象一个人可能没有国民身份证的情况(访客?寻求庇护者?无国籍人?)你将如何将他们输入数据库?
  3. 在某些国家/地区,最接近国民身份证的是身份证上的号码,当重新发行身份证时,该号码会发生变化。换言之,同一个人在其生命的不同阶段可能拥有不同的身份证号码。

我将使用代理主键,并将国家 ID 存储为属性。

于 2011-12-22T08:36:14.450 回答
2

国民身份证是否能成为一把好钥匙,很大程度上取决于您的要求。是否需要将国民身份证记录为业务流程的一部分,并且以这种方式唯一标识用户/员工/任何人?您在法律上有权要求人们提供这些信息吗?他们有义务向您透露他们的国民身份证吗?如果对所有这些都是肯定的,那么将其作为数据库中的键可能对您来说很有意义。

确保您了解需要支持的国民身份证的任何标准。例如长度、数据类型、任何校验位以及是否存在可能与预期规则不匹配的遗留代码或其他特殊用途代码。

如果存在隐私问题并且您不需要从数据库中检索实际 ID,那么您可以存储国民 ID 的安全哈希值。

于 2011-12-22T10:17:38.353 回答