MySQL唯一索引设计

标签 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

我在“电子邮件”上创建了一个唯一索引,因为每个用户的每个电子邮件都必须不同 - 它将用作他们的登录信息。但是,我还想为“lastName”、“firstName”和“email”创建一个唯一索引,因为任何两个用户都不应该拥有这三者的相同组合。我应该为该规则创建另一个唯一索引还是只为这三个创建一个索引?在索引中重复列是否不好?

最佳答案

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

由于您不允许重复的电子邮件地址,因此没有人能够提交重复的第一个/最后一个/电子邮件,因为它已经无法通过电子邮件的 UNIQUE 检查。

关于MySQL唯一索引设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1306274/

相关文章:

mysql - 如何在mysql工作台中更改用户

mysql - SQL调用所有字段

sql - 如何在 PostgreSQL 中使用正则表达式将列输入限制为字母数字

java - QueryDSL 中的多列

php - 哪种方法是提高服务器效率/减少工作负载的最佳方法

mysql - 在 SQL 中第二次选择最大值

php - 通过 Ajax 从 PHP 数组结果更新多个元素

mysql触发器(更新后插入字段)

sql - 将数组存储为字段值或将数组值存储为记录是个好主意吗?

database-design - 数据库架构设计 - 如何针对实体存储特定的应用程序设置