MySQL Unique Indexes设计

Rob*_*oer 0 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
Run Code Online (Sandbox Code Playgroud)

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

Ava*_*ava 6

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

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