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文件生成数据库。生成的数据库关系图如下:

至此数据库框架就搭建好了,接下来就是往里面录入数据。

posted @ 2016-03-17 22:35  jiwangbujiu  阅读(4304)  评论(0编辑  收藏  举报