MySQL Unique Indexes设计

时间:2009-08-20 13:41:08

标签: mysql database database-design

谢谢你们所有人的答案。

我正在学习,因为我要去 - 所以我正在学习但仍有很长的路要走。对于工作,我们主要使用MySQL作为我们的数据库 - Web开发。我有一个关于唯一索引的问题 - 何时正确使用它们以及如何使用它们。

我很确定我理解他们的目的 - 将列声明为“非重复”列,也就是说该表中的特定列的值不能存在两次。如果尝试插入/更新违反该索引规则,则会失败。

我正在为网站创建用户系统,我正在为系统设计数据库表。一个表是“用户”表 - 保存用户

users
-----------------
int(4) usersID primary key
varchar(255) lastName
varchar(255) firstName
varchar(255) email unique
varchar(255) password

我在'email'上创建了一个唯一索引,因为每个用户的每封电子邮件必须不同 - 它们将用作登录。但是,我还想为'lastName','firstName'和'email'创建一个唯一索引,因为没有两个用户应该拥有这三者的相同组合。我应该为该规则创建另一个唯一索引,还是只为这三个创建一个?在索引中重复列是不是很糟糕?

1 个答案:

答案 0 :(得分:6)

虽然在某些情况下在多个索引中创建一个列并不坏,但对于您尝试执行的操作而言,这是多余的。

由于您不允许复制电子邮件地址,因此任何人都无法提交重复的第一个/最后一个/电子邮件,因为它已经无法通过电子邮件对UNIQUE进行检查。