主键要求

时间:2019-09-26 04:07:42

标签: sql database-design primary-key

将电话号码存储为RDBMS上的主键是一个好主意吗?它们对我们所有人几乎都是唯一的。但是我的朋友建议这样做不是一个好主意,原因如下。

  • 如果一个家庭中的两个人共享一个电话号码怎么办?
  • 如果一个人没有电话号码怎么办?

您有何见解,请告诉我!。

3 个答案:

答案 0 :(得分:1)

将电话号码用作主键的目的是什么,它可以识别一个人吗?如果是这样,那么一个人可以拥有多个电话号码(移动/家庭电话),因此不建议将电话号码用作主键。 同样,您的问题是正确的,如果一个人没有电话号码怎么办。

答案 1 :(得分:1)

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

  • 这是个人身份信息,如果您受GDPR约束,建议谨慎使用。一些用户可能会要求您不要使用他们的电话号码。以后可能需要对电话号码的一部分进行散列或掩盖,甚至完全删除它。

  • 即使已验证,值也取决于用户输入。如果您不在验证者的目标国家/地区,有几种服务可以借给您电话号码以进行验证。

  • 如果电话模式包含国家代码,括号或空格,则需要定义该模式。

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

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

答案 2 :(得分:1)

电话号码当然可以作为按键,但是这完全取决于您需要识别的内容以及打算如何使用它。没有普遍正确或错误的答案。

选择和设计密钥的三个非常好的标准(但不是绝对规则)是:简单性,稳定性,熟悉性。电话号码简单易懂,可用于多种用途。它们是否足够稳定可能很大程度上取决于环境。例如,您可能要求所有员工提供唯一的电话号码以进行三重身份验证,但偶尔更改该号码可能是可以接受的。