教务管理系统中涉及对学生、教师和课程之间关系的管理
系统可以记录学生的选课和教师的授课以及教师、学生和课程的基本信息
对于这个教务管理系统,课程的存在较为核心学生与课程的关系是通过学生选课发生联系的教师与课程的关系是通过教师授课发生联系的。
由于一名学生可以选修多门课程,且一门课程可以被多个学生选修。所以,学生和课程之间是多对多的关系。又因为一门课程可以由多名教师讲授,并且一名教师可以讲授多门课程。所以,教师和课程之间也是多对多的关系。
“学生”、“课程”、“教师”、“授课”、“选课”五个关系中,都不存在部分依赖和传递依赖的关系,因此都属于第三范式。
--表1-学生表
CREATE TABLE 学生表 (
学号 char(8) PRIMARY KEY,
姓名 char(8),
性别 char(2) CHECK( 性别 IN ('男', '女') ),
所在系 char(20),
专业 char(20),
班号 char(6)
)
--表2-课程表
CREATE TABLE 课程表 (
课程编号 char(8) PRIMARY KEY,
课程名称 char(30),
学分 int CHECK( 学分 BETWEEN 1 AND 8 ),
课程时长 int ,
考核形式 char(30)
)
--表3-教师表
CREATE TABLE 教师表 (
教师编号 char(10) PRIMARY KEY,
教师姓名 char(8) NOT NULL,
性别 char(2) CHECK( 性别 IN ('男', '女') ),
职称 char(6),
学历 char(6) CHECK( 学历 IN ('本科','硕士','博士','博士后') ),
所属部门 char (20)
)
--表4-选课表
CREATE TABLE 选课表 (
学号 char(8) NOT NULL,
课程编号 char(8) NOT NULL,
PRIMARY KEY(学号, 课程编号),
FOREIGN KEY(学号) REFERENCES 学生表(学号),
FOREIGN KEY(课程编号) REFERENCES 课程表(课程编号)
)
--表5-成绩表
CREATE TABLE 成绩表 (
学号 char(8) NOT NULL,
课程编号 char(8) NOT NULL,
考试成绩 int CHECK( 考试成绩 BETWEEN 0 AND 100)
)
--表6-授课表
CREATE TABLE 授课表 (
课程编号 char(8) NOT NULL,
课程名称 char(30) NOT NULL,
教师编号 char(10) NOT NULL,
课程时长 int,
PRIMARY KEY(课程编号, 教师编号, 课程名称),
FOREIGN KEY(课程编号) REFERENCES 课程表(课程编号),
FOREIGN KEY(教师编号) REFERENCES 教师表(教师编号)
)
--表1-学生表
INSERT INTO 学生表 VALUES('60200000', '张一', '女', '计算机系', '云计算', '1班');
INSERT INTO 学生表 VALUES('60200001', '张二', '女', '计算机系', '云计算', '1班');
INSERT INTO 学生表 VALUES('60200002', '张三', '男', '计算机系', '云计算', '1班');
INSERT INTO 学生表 VALUES('60200003', '张四', '男', '计算机系', '云计算', '2班');
INSERT INTO 学生表 VALUES('60200004', '张五', '男', '计算机系', '云计算', '3班');
INSERT INTO 学生表 VALUES('60200005', '张六', '男', '计算机系', '云计算', '4班');
INSERT INTO 学生表 VALUES('60200006', '张七', '女', '计算机系', '云计算', '5班');
INSERT INTO 学生表 VALUES('60200007', '王一', '女', '计算机系', '大数据', '2班');
INSERT INTO 学生表 VALUES('60200008', '王二', '女', '计算机系', '大数据', '2班');
INSERT INTO 学生表 VALUES('60200009', '王二', '女', '计算机系', '大数据', '3班');
INSERT INTO 学生表 VALUES('60200010', '王二', '女', '计算机系', '大数据', '3班');
INSERT INTO 学生表 VALUES('60200011', '李一', '女', '计算机系', '物联网', '3班');
INSERT INTO 学生表 VALUES('60200012', '李二', '女', '计算机系', '物联网', '3班');
INSERT INTO 学生表 VALUES('60200013', '李三', '女', '计算机系', '物联网', '2班');
INSERT INTO 学生表 VALUES('60200014', '李四', '男', '计算机系', '物联网', '3班');
--表2-课程表
INSERT INTO 课程表 VALUES('a001', 'Java', '2','46', '线上');
INSERT INTO 课程表 VALUES('a002', 'Mysql', '2','52', '线上');
INSERT INTO 课程表 VALUES('a003', 'C++', '4','46', '小项目');
INSERT INTO 课程表 VALUES('a004', 'Css', '2', '42', '小项目');
INSERT INTO 课程表 VALUES('a005', 'HTML', '2', '46', '线下');
INSERT INTO 课程表 VALUES('a006', 'C#', '2', '52', '线下');
INSERT INTO 课程表 VALUES('a007', 'Python','4','46', '线下');
INSERT INTO 课程表 VALUES('a008', 'Go', '2', '33', '实验报告');
INSERT INTO 课程表 VALUES('a009', 'JavaScript', '2', '33', '实验报告');
INSERT INTO 课程表 VALUES('a010', 'C', '2','33', '线下');
INSERT INTO 课程表 VALUES('a011', 'Vue', '2', '42', '小项目');
--表3-教师表
INSERT INTO 教师表 VALUES('6001', '鹿晨辉', '男', '教授', '本科', '计算机');
INSERT INTO 教师表 VALUES('6002', '李鸿萧', '男', '助教', '博士', '计算机');
INSERT INTO 教师表 VALUES('6003', '昆图斯', '男', '讲师', '硕士', '计算机');
INSERT INTO 教师表 VALUES('6004', '耿浩伦', '男', '助教', '博士', '计算机');
INSERT INTO 教师表 VALUES('6005', '西兰花', '女', '讲师', '博士', '计算机');
INSERT INTO 教师表 VALUES('6006', '麦寇', '男', '教授', '博士', '计算机');
INSERT INTO 教师表 VALUES('6007', '小萝卜', '男', '助教', '本科', '计算机');
INSERT INTO 教师表 VALUES('6008', '明代尔', '男', '教授', '硕士', '计算机');
INSERT INTO 教师表 VALUES('6009', '李义海', '男', '讲师', '博士', '计算机');
INSERT INTO 教师表 VALUES('6010', '鲁军一', '男', '教授', '博士', '计算机');
--表4-选课表
INSERT INTO 选课表 VALUES('60200000', 'a001');
INSERT INTO 选课表 VALUES('60200000', 'a002');
INSERT INTO 选课表 VALUES('60200000', 'a003');
INSERT INTO 选课表 VALUES('60200000', 'a004');
INSERT INTO 选课表 VALUES('60200005', 'a005');
INSERT INTO 选课表 VALUES('60200005', 'a006');
INSERT INTO 选课表 VALUES('60200005', 'a007');
INSERT INTO 选课表 VALUES('60200005', 'a008');
INSERT INTO 选课表 VALUES('60200005', 'a009');
--表5-成绩表
INSERT INTO 成绩表 VALUES('60200000', 'a001', 'Java', '99');
INSERT INTO 成绩表 VALUES('60200000', 'a002', 'Mysql', '87');
INSERT INTO 成绩表 VALUES('60200000', 'a003', 'C++', '88');
INSERT INTO 成绩表 VALUES('60200000', 'a004', 'Css', '99');
INSERT INTO 成绩表 VALUES('60200005', 'a005', 'HTML', '33');
INSERT INTO 成绩表 VALUES('60200005', 'a006', 'C#', '99');
INSERT INTO 成绩表 VALUES('60200005', 'a007', 'Python', '91');
INSERT INTO 成绩表 VALUES('60200005', 'a008', 'Go', '92');
INSERT INTO 成绩表 VALUES('60200005', 'a009', 'JavaScript', '93');
--表6-授课表
INSERT INTO 授课表 VALUES('a001', 'Java', '6001', 46);
INSERT INTO 授课表 VALUES('a002', 'Mysql', '6002', 52);
INSERT INTO 授课表 VALUES('a003', 'C++', '6003', 46);
INSERT INTO 授课表 VALUES('a004', 'Css', '6004', 42);
INSERT INTO 授课表 VALUES('a005', 'HTML', '6005', 46);
INSERT INTO 授课表 VALUES('a006', 'C#', '6006', 52);
INSERT INTO 授课表 VALUES('a007', 'Python','6007', 46);
INSERT INTO 授课表 VALUES('a008', 'Go', '6009', 33);