C# 将电子邮件作为主键是个坏主意?

C# 将电子邮件作为主键是个坏主意?,c#,sql,asp.net,C#,Sql,Asp.net,我正在制作一个应用程序,用户可以在其中创建他们的帐户。我将用户电子邮件作为用户表中的主键。这个技术真的很糟糕吗?我应该创建自动递增整数作为主键吗?是的,这是个糟糕的主意。电子邮件是一种很长的东西(因此您的密钥比需要的长),它不是不变的。在过去的十年中,我至少更改了三封电子邮件(提供商关闭)。我会使用int作为主键,并在电子邮件列中添加唯一索引。这不是一个好主意。。。人们偶尔会更改电子邮件地址。是否永远不允许用户更改与其帐户关联的电子邮件地址?我建议使用增量int或guid作为主键,使用电子邮件作

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

是的,这是个糟糕的主意。电子邮件是一种很长的东西(因此您的密钥比需要的长),它不是不变的。在过去的十年中,我至少更改了三封电子邮件(提供商关闭)。

我会使用int作为主键,并在电子邮件列中添加唯一索引。这不是一个好主意。。。人们偶尔会更改电子邮件地址。是否永远不允许用户更改与其帐户关联的电子邮件地址?我建议使用增量int或guid作为主键,使用电子邮件作为唯一索引。这将更安全、更简单、更方便。这是一个非常糟糕的主意,跨表查找的速度将大大降低。我想我明白了。我认为电子邮件地址作为主键的主要问题是,您也将它们作为外键,每个人都有。@TimSchmelter是的。显然,如果数据库中只有一个表,那么您可以将电子邮件用作主键:),但这将是一个非常简单的数据库