MySQL-教学系统数据库设计
根据大学教学系统的原型,我构建出如下ER关系图,来学习搭建数据库:
上面共有五个实体,分别是学生,教师,课程,院系,行政班级:
1、其中学生和课程的关系是多对多,即一个学生可以选择多门课程,而一个课程又有多个学生选择。每个学生的每门课程都有一个成绩,所以选课表中应该有成绩字段。
2、课程和教师是多对一关系,即一个教师只教一门课程,而一个课程又由多位老师教授。
3、教师和院系是一对多的关系,即一个教师只属于一个院系,而一个院系可以聘请多位老师。
4、行政班级和院系是多对一的关系,即一个院系有多个行政班级,而一个行政班级只属于一个院系。
5、学生和行政班级是多对一的关系,即一个行政班级有多个学生,而一个学生只属于一个行政班级。
根据以上分析建立数据库:
1、在桌面上新建文本文件,重命名为create.sql,然后图标自动变成如下图:
双击自动使用MySQL Workbench打开,然后编辑如下代码:
1 ######################### 2 #CREATED BY jiwangbujiu## 3 ######################### 4 5 6 7 8 9 ######################### 10 ########创建数据库####### 11 ######################### 12 CREATE DATABASE education; 13 14 15 ######################### 16 ########使用数据库####### 17 ######################### 18 USE education; 19 20 21 ######################### 22 ########新建学生表####### 23 ######################### 24 CREATE TABLE students 25 ( 26 stu_id int NOT NULL AUTO_INCREMENT, 27 stu_name char(50) NOT NULL, 28 stu_grade char(2) NULL, 29 stu_sex char(2) NULL, 30 cls_id int NULL, ##外键 31 stu_birthday date NULL, 32 PRIMARY KEY (stu_id) 33 )ENGINE = InnoDB; 34 35 36 ######################### 37 ########新建课程表####### 38 ######################### 39 CREATE TABLE courses 40 ( 41 cou_id int NOT NULL AUTO_INCREMENT, 42 cou_name char(50) NOT NULL, 43 cou_score char(2) NULL, 44 cou_introduce text NULL, 45 cou_limit int NULL, 46 PRIMARY KEY (cou_id) 47 )ENGINE = InnoDB; 48 49 50 ######################### 51 ########新建选课表####### 52 ######################### 53 CREATE TABLE pick_courses 54 ( 55 stu_id int NOT NULL, 56 cou_id int NOT NULL, ##外键 57 stu_cou_score int NULL, 58 PRIMARY KEY (stu_id,cou_id) 59 )ENGINE = InnoDB; 60 61 62 ######################### 63 ########新建教师表####### 64 ######################### 65 CREATE TABLE teachers 66 ( 67 tec_id int NOT NULL AUTO_INCREMENT, 68 tec_name char(50) NOT NULL, 69 dep_id int NULL, ##外键 70 PRIMARY KEY (tec_id) 71 )ENGINE = InnoDB; 72 73 74 ########################## 75 ########新建院系表######## 76 ########################## 77 CREATE TABLE departments 78 ( 79 dep_id int NOT NULL AUTO_INCREMENT, 80 dep_name char(50) NOT NULL, 81 dep_introduce text NULL, 82 PRIMARY KEY (dep_id) 83 )ENGINE = InnoDB; 84 85 86 ######################### 87 ######新建行政班级表##### 88 ######################### 89 CREATE TABLE classes 90 ( 91 cls_id int NOT NULL AUTO_INCREMENT, 92 dep_id int NULL, ##外键 93 PRIMARY KEY (cls_id ) 94 )ENGINE = InnoDB; 95 96 97 98 ######################### 99 #######添加外键关系###### 100 ######################### 101 ALTER TABLE students ADD CONSTRAINT fk_students_classes FOREIGN KEY (cls_id) REFERENCES classes (cls_id); 102 ALTER TABLE teachers ADD CONSTRAINT fk_teacher_departments FOREIGN KEY (dep_id) REFERENCES departments (dep_id); 103 ALTER TABLE classes ADD CONSTRAINT fk_classes_departments FOREIGN KEY (dep_id) REFERENCES departments (dep_id); 104 ALTER TABLE pick_courses ADD CONSTRAINT fk_pick_courses_courses FOREIGN KEY (cou_id) REFERENCES courses (cou_id); 105 ALTER TABLE pick_courses ADD CONSTRAINT fk_pick_courses_students FOREIGN KEY (stu_id) REFERENCES students (stu_id);
这就是按照本文开始的ER关系图创建教学信息数据库的SQL代码,写完后保存关闭,然后打开软件navicat直接导入sql文件生成数据库。生成的数据库关系图如下:
至此数据库框架就搭建好了,接下来就是往里面录入数据。