根據大學教學系統的原型,我構建出如下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文件生成數據庫。生成的數據庫關系圖如下:
至此數據庫框架就搭建好了,接下來就是往里面錄入數據。