我有一个学生注册表,主要表是这一个,我只是想确保不会有重复姓名,电子邮件等的学生。身份证是主要关键所以我不是需要使用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;
我可以在通过应用程序插入它们时验证这些字段,哪种方式更好?
答案 0 :(得分:-1)
如果唯一性是域约束(在您的示例中),则在列上创建UNIQUE约束(为您创建唯一索引)。
ALTER TABLE student
ADD CONSTRAINT ux_student_email
UNIQUE (email)
如果您可以100%确定(并且将来证明)其他应用程序不会插入数据,那么确保应用程序的唯一性就可以了。如果您重视正确性,除了签入应用程序之外,还要在数据库级别添加约束。