主键要求

Primary key requirements

将 phone 数字作为主键存储在 RDBMS 上是个好主意吗?它们对我们几乎所有人来说都是独一无二的。但是我的朋友认为这不是一个好主意,原因如下。

你有什么见解,请告诉我!

用phone号码作为主键的目的是什么,是为了识别个人吗?如果是这样,一个人可以有多个 phone 号码(mobile/home phone),因此不建议使用 phone 号码作为主键。 另外你的问题是正确的,如果一个人没有phone号码怎么办。

我会反对这个想法,通常是出于以下原因:

  • 这是个人身份信息,如果您受 GDPR 约束,我建议您谨慎使用。有些用户可能会要求您不要使用他们的 phone 号码。稍后可能需要散列或屏蔽 phone 数字的一部分,甚至完全摆脱它。

  • 即使经过验证,值仍取决于用户输入。如果您不在验证器的目标国家/地区,有几种服务可以借给您一个 phone 号码进行验证。

  • 如果 phone 号码包含国家代码、括号或空格,则需要定义架构。

  • 应该进行验证以防止重复值和空值。

总而言之,使用依赖于外部事实的字段不是一个好主意。正如其他人提到的,使用自动生成的标识符作为 ID 和非唯一索引作为 phone 数字似乎是一种更好的方法。

phone 数字当然可以用作密钥,但这完全取决于您需要识别的内容以及您打算如何使用它。没有一般正确或错误的答案。

选择和设计按键的三个非常好的标准(但不是绝对规则)是:简单、稳定、熟悉。 Phone 数字对于许多用途来说都足够简单和熟悉。它们是否足够稳定可能在很大程度上取决于环境。例如,您可能要求所有员工提供一个唯一的 phone 号码用于第三因素身份验证,但偶尔更改该号码可能是完全可以接受的。