使用UNIQUE索引好吗?

时间:2018-04-21 02:42:14

标签: mysql database database-design

我有一个学生注册表,主要表是这一个,我只是想确保不会有重复姓名,电子邮件等的学生。身份证是主要关键所以我不是需要使用PK。

CREATE TABLE student(
id INT UNSIGNED NOT NULL,
campus_id SMALLINT UNSIGNED NOT NULL,
first_career_id SMALLINT UNSIGNED NOT NULL,
second_career_id SMALLINT UNSIGNED NULL,
name VARCHAR(70) NOT NULL,
password CHAR(60) NOT NULL,
email VARCHAR(100) NOT NULL,
phone TINYINT UNSIGNED NULL,
UNIQUE(id),
UNIQUE(name),
UNIQUE(email),
UNIQUE(phone),
FOREIGN KEY(first_career_id)
    REFERENCES career(id)
    ON DELETE CASCADE,
FOREIGN KEY(second_career_id)
    REFERENCES career(id)
    ON DELETE CASCADE
) ENGINE=INNODB;

我可以在通过应用程序插入它们时验证这些字段,哪种方式更好?

1 个答案:

答案 0 :(得分:-1)

如果唯一性是域约束(在您的示例中),则在列上创建UNIQUE约束(为您创建唯一索引)。

ALTER TABLE student 
ADD CONSTRAINT ux_student_email
UNIQUE (email)

如果您可以100%确定(并且将来证明)其他应用程序不会插入数据,那么确保应用程序的唯一性就可以了。如果您重视正确性,除了签入应用程序之外,还要在数据库级别添加约束。