gpt4 book ai didi

sql - 数据库ID最佳做法

转载 作者:行者123 更新时间:2023-12-04 10:30:54 26 4
gpt4 key购买 nike

我想知道构建和存储ID的最佳做法是什么。几年前,一位教授以社会保险号为例,向我讲述了身份证明系统构造不佳的危险。特别是,由于SSN没有错误检测功能,因此无法分辨9位数字的字符串和有效的SSN之间的区别。现在,政府机构需要“姓氏+ SSN”或“生日+ SSN”之类的信息来跟踪您的数据并确保对其进行验证。另外,根据您的出生地,您的社会保险号是可以预测的。

现在,我正在建立一个用户数据库...,基于此建议,“userid mediumint auto_increment”将是 Not Acceptable 。特别是如果我打算将此ID用作用户的主要标识。 (例如,如果我允许用​​户更改其用户名,则与数字用户名相比,要跟踪用户名会更加困难……需要级联外键等。)电子邮件更改,用户名可以更改,密码也要更改。 。,但用户名应永远保持不变。

显然,auto_increment仅设计用于surrogate_keys。也就是说,仅当您已经具有主要标识机制时,它才是有用的快捷方式,但不应将其用作数据的“固有标识符”。创建随机UUID看起来很有趣,但是随机性使我无法接受。

所以我问:创建“主键”标识号的最佳实践是什么?

最佳答案

您正在将内部数据库功能与外部搜索条件混淆。

自动增量代理键对于内部应用程序使用很有用。切勿将其传递给用户。识别业务对象(无论是用户还是发票)都是使用有关对象的唯一信息来完成的,例如SSN,CCN或DOB。使用尽可能多的信息来唯一标识对象。

我强烈建议您如果必须为每个客户提供一些新发明的ID值,则不要在该字段上链接所有客户数据表。

关于sql - 数据库ID最佳做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4350369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com