我正在开发一个使用国家ID的系统“识别记录”是否最好在所有表中嵌入nat_id以使查询更容易?这样做有什么缺点?我只想在这里得到人们的意见,因为我可能会错过重要的事情。
答案 0 :(得分:8)
根据@Oded的建议,可能存在法律和隐私问题(这在很大程度上取决于您所在的国家/地区)。
隐私问题的一个例子是,在某些国家/地区,该人的出生日期 - 以及某些国家/地区的性别 - 是其国家身份证号码的一部分。将其复制到模式中的每个表中可能不是一个好主意,因为这将使得很难限制对此信息的访问。
最重要的是,有几个纯技术问题:
我会使用代理主键,并将国家ID存储为属性。
答案 1 :(得分:2)
国民身份证是否能成为好钥匙在很大程度上取决于您的要求。是否要求将国民身份证记录为业务流程的一部分,以及用户/员工/以这种方式唯一识别的人员?您是否有权向人们询问此信息?他们是否有义务向您披露他们的国民身份证?如果对所有这些都是肯定的话,那么将它作为数据库中的密钥可能是有意义的。
确保您了解您需要支持的国家身份证的任何标准。例如。长度,数据类型,任何校验位以及是否存在可能与预期规则不匹配的遗留代码或其他特殊用途代码。
如果存在隐私问题且您不需要从数据库中检索实际ID,则可以存储国家ID的安全哈希值。