MySQL数据库设计:添加唯一约束和检查约束
MySQL数据库设计:添加唯一约束和检查约束
本文以“学生选课系统”数据库为例,展示如何在MySQL数据库中添加唯一约束和检查约束,以确保数据完整性和一致性。
数据库创建及表结构
首先,创建数据库“学生选课系统”并创建各个数据表:
drop database if exists '学生选课系统';
create database '学生选课系统';
use '学生选课系统';
drop table if exists xibu;
#第一张系部表
create table xibu(
系部编号 char(2) NOT NULL,
系名 varchar(18) NOT NULL,
系主任 varchar(10) NOT NULL,
联系电话 varchar(12) NULL,
系所在地址 ENUM('南关', '院部', '朝阳') NULL,
primary key(系部编号)
);
INSERT INTO xibu (系部编号,系名,系主任,联系电话,系所在地址) values ('01','信息工程系','刘','12345678901','1');
INSERT INTO xibu VALUES ('02', '机电工程系', '李', '13578345791', '2');
drop table if exists zhuangye;
#第二张表专业表
create table zhuangye(
专业编号 char(4) NOT NULL,
专业名称 varchar(30) NOT NULL,
系部编号 char(2) NULL,
primary key(专业编号),
CONSTRAINT zhuangye_xibubianhao
FOREIGN KEY(系部编号)
REFERENCES xibu(系部编号)
ON DELETE CASCADE
ON UPDATE CASCADE
)engine=INNODB;
INSERT INTO zhuangye VALUES ('0101', '信息管理', '01');
INSERT INTO zhuangye VALUES ('0102', '机械设计', '02');
drop table if exists banji;
#第三张表班级表
create table banji(
班级编号 char(12) NOT NULL,
班级名称 varchar(30) NULL,
专业编号 char(4) NULL,
系部编号 char(2) NULL,
primary key(班级编号),
CONSTRAINT banji_zhuangyebianhao
foreign key (专业编号)
references zhuangye(专业编号)
on delete cascade
on update cascade,
CONSTRAINT banji_xibubianhao
foreign key(系部编号)
references xibu (系部编号)
on delete cascade
on update cascade
)engine=InnoDB;
INSERT INTO banji VALUES ('010120200101', '20信息管理1班', '0101', '01');
INSERT INTO banji VALUES ('010120200102', '21软件技术1班', '0102', '02');
drop table if exists jiaoshi;
#第四张表
drop table if exists jiaoshi;
create table jiaoshi(
教师编号 CHAR(6) NOT NULL,
姓名 VARCHAR(12) NULL,
性别 BIT(1) NULL,
出生日期 DATE NULL,
职务 ENUM('教师', '教研室主任', '副院长', '院长') NULL,
职称 ENUM('讲师','副教授', '教授') NULL,
照片 BLOB NULL,
专业编号 CHAR(4) NULL,
系部编号 CHAR(2) NULL,
PRIMARY KEY (教师编号),
CONSTRAINT jiaoshi_zhuangyebianhao
FOREIGN KEY (专业编号)
references zhuangye (专业编号)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT jiaoshi_xibubianhao
FOREIGN KEY (系部编号)
REFERENCES xibu(系部编号)
ON DELETE CASCADE
ON UPDATE CASCADE)engine=INNODB;
INSERT INTO jiaoshi VALUES ('100001', '张三', 1, '1990-01-01', '教师', '讲师', NULL, '0101', '01');
INSERT INTO jiaoshi VALUES ('100002', '李四', 0, '1988-02-02', '副院长', '副教授', NULL, '0102', '02');
添加唯一约束和检查约束
系部表
- 添加唯一约束:联系电话
ALTER TABLE xibu ADD CONSTRAINT xibu_unique_contact UNIQUE (联系电话);
- 添加检查约束:系所在地址
ALTER TABLE xibu ADD CONSTRAINT xibu_check_address CHECK (系所在地址 IN ('南关', '院部', '朝阳'));
专业表
- 添加唯一约束:专业名称
ALTER TABLE zhuangye ADD CONSTRAINT zhuangye_unique_name UNIQUE (专业名称);
班级表
- 添加检查约束:专业编号不能为空
ALTER TABLE banji ADD CONSTRAINT banji_check_major CHECK (专业编号 IS NOT NULL);
- 添加检查约束:系部编号不能为空
ALTER TABLE banji ADD CONSTRAINT banji_check_department CHECK (系部编号 IS NOT NULL);
教师表
- 添加检查约束:职务必须为指定的几种
ALTER TABLE jiaoshi ADD CONSTRAINT jiaoshi_check_position CHECK (职务 IN ('教师', '教研室主任', '副院长', '院长'));
- 添加检查约束:职称必须为指定的几种
ALTER TABLE jiaoshi ADD CONSTRAINT jiaoshi_check_title CHECK (职称 IN ('讲师','副教授', '教授'));
通过以上操作,我们成功地在“学生选课系统”数据库中添加了唯一约束和检查约束,确保了数据的完整性和一致性。
原文地址: https://www.cveoy.top/t/topic/bQ2P 著作权归作者所有。请勿转载和采集!