将电子邮件作为主键是一个坏主意吗?

9 浏览
0 Comments

将电子邮件作为主键是一个坏主意吗?

我正在开发一个应用程序,用户可以创建他们的账户。我将用户的电子邮件作为用户表中的主键。这种技术真的很糟糕吗?我应该创建一个自动增加的整数作为主键吗?

0
0 Comments

使用电子邮件作为主键是一个糟糕的主意。电子邮件地址通常很长(因此您的主键比必要的要长),而且它们也是可变的。在过去的十年里,我至少换过三个电子邮件地址(因为服务提供商关闭了)。

谢谢,我明白你的观点。

我认为将电子邮件地址作为主键的主要问题是你也会在所有地方将它们用作外键。

是的。显然,如果数据库中只有一个表,那么你可以使用电子邮件作为主键 🙂 但这将是一个非常简单的数据库。

解决这个问题的方法是使用一个独特的、不可变的标识符作为主键,而不是使用电子邮件地址。这样可以避免在使用电子邮件地址作为外键时出现问题。可以选择使用自动生成的唯一标识符,如UUID(通用唯一标识符),来作为主键。这样可以确保主键的唯一性,并且不会受到电子邮件地址的变化影响。

例如,使用Python语言可以生成UUID:

import uuid
uuid_value = uuid.uuid4()

这样,我们可以将生成的UUID作为主键,而不是使用电子邮件地址。这样做的好处是,即使电子邮件地址发生变化,我们的主键仍然是唯一的,并且不会影响到其他使用它作为外键的表。

总之,将电子邮件地址作为主键是一个糟糕的主意,因为它们不是唯一的、可变的,并且会带来外键的问题。使用独特的、不可变的标识符作为主键,如UUID,可以解决这个问题。这样可以确保主键的唯一性,并且不会受到电子邮件地址的变化影响。

0