根据大学教学系统的原型,我构建出如下ER关系图,来学习搭建数据库:

上面共有五个实体,分别是学生,教师,课程,院系,行政班级:

1、其中学生和课程的关系是多对多,即一个学生可以选择多门课程,而一个课程又有多个学生选择。每个学生的每门课程都有一个成绩,所以选课表中应该有成绩字段。

2、课程和教师是多对一关系,即一个教师只教一门课程,而一个课程又由多位老师教授。

3、教师和院系是一对多的关系,即一个教师只属于一个院系,而一个院系可以聘请多位老师。

4、行政班级和院系是多对一的关系,即一个院系有多个行政班级,而一个行政班级只属于一个院系。

5、学生和行政班级是多对一的关系,即一个行政班级有多个学生,而一个学生只属于一个行政班级。

根据以上分析建立数据库:

1、在桌面上新建文本文件,重命名为create.sql,然后图标自动变成如下图:

双击自动使用MySQL Workbench打开,然后编辑如下代码:

 #########################
#CREATED BY jiwangbujiu##
######################### #########################
########创建数据库#######
#########################
CREATE DATABASE education; #########################
########使用数据库#######
#########################
USE education; #########################
########新建学生表#######
#########################
CREATE TABLE students
(
stu_id int NOT NULL AUTO_INCREMENT,
stu_name char(50) NOT NULL,
stu_grade char(2) NULL,
stu_sex char(2) NULL,
cls_id int NULL, ##外键
stu_birthday date NULL,
PRIMARY KEY (stu_id)
)ENGINE = InnoDB; #########################
########新建课程表#######
#########################
CREATE TABLE courses
(
cou_id int NOT NULL AUTO_INCREMENT,
cou_name char(50) NOT NULL,
cou_score char(2) NULL,
cou_introduce text NULL,
cou_limit int NULL,
PRIMARY KEY (cou_id)
)ENGINE = InnoDB; #########################
########新建选课表#######
#########################
CREATE TABLE pick_courses
(
stu_id int NOT NULL,
cou_id int NOT NULL, ##外键
stu_cou_score int NULL,
PRIMARY KEY (stu_id,cou_id)
)ENGINE = InnoDB; #########################
########新建教师表#######
#########################
CREATE TABLE teachers
(
tec_id int NOT NULL AUTO_INCREMENT,
tec_name char(50) NOT NULL,
dep_id int NULL, ##外键
PRIMARY KEY (tec_id)
)ENGINE = InnoDB; ##########################
########新建院系表########
##########################
CREATE TABLE departments
(
dep_id int NOT NULL AUTO_INCREMENT,
dep_name char(50) NOT NULL,
dep_introduce text NULL,
PRIMARY KEY (dep_id)
)ENGINE = InnoDB; #########################
######新建行政班级表#####
#########################
CREATE TABLE classes
(
cls_id int NOT NULL AUTO_INCREMENT,
dep_id int NULL, ##外键
PRIMARY KEY (cls_id )
)ENGINE = InnoDB; #########################
#######添加外键关系######
#########################
ALTER TABLE students ADD CONSTRAINT fk_students_classes FOREIGN KEY (cls_id) REFERENCES classes (cls_id);
ALTER TABLE teachers ADD CONSTRAINT fk_teacher_departments FOREIGN KEY (dep_id) REFERENCES departments (dep_id);
ALTER TABLE classes ADD CONSTRAINT fk_classes_departments FOREIGN KEY (dep_id) REFERENCES departments (dep_id);
ALTER TABLE pick_courses ADD CONSTRAINT fk_pick_courses_courses FOREIGN KEY (cou_id) REFERENCES courses (cou_id);
ALTER TABLE pick_courses ADD CONSTRAINT fk_pick_courses_students FOREIGN KEY (stu_id) REFERENCES students (stu_id);

这就是按照本文开始的ER关系图创建教学信息数据库的SQL代码,写完后保存关闭,然后打开软件navicat直接导入sql文件生成数据库。生成的数据库关系图如下:

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

MySQL-教学系统数据库设计的更多相关文章

  1. Oracle数据库设计实例-实时生产效率系统数据库设计

    Oracle数据库设计实例-实时生产效率系统数据库设计 引言 1.1 设计前提 某部门经理要求IT部门设计一个流水线实时生产效率系统,用来统计实时的生产量和效率.流水线有数百条,实时间隔为1min. ...

  2. ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计

    ylbtech-DatabaseDesgin:ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计 DatabaseName:KEFUYUNWEI Model:Admin 用户后台管理 ...

  3. Java高级项目实战03:CRM系统数据库设计

    接上一篇:Java高级项目实战02:客户关系管理系统CRM系统模块分析与介绍 欢迎点击回顾,接下来我们说说 CRM系统数据库设计. 我们根据产品的原型搞以及UI组的设计稿, 接下来就要设计数据库, 一 ...

  4. JavaWeb项目学习教程(2) 系统数据库设计

    最开始本来想写一个管理系统,因为考虑到期末来临,我女朋友就可以看着教程然后学一些东西,然后可以自己慢慢手敲代码.但无奈自己也太懒,两个月过后,我才开始继续写这个博客,而现在我都已经开学了.不过博客还是 ...

  5. 使用MySQL Workbench进行数据库设计——MySQL Workbench用法总结

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/48318877 本文出自[我是干勾鱼的博客] 1 简单介绍 MySQL Workb ...

  6. 基于web公交查询系统----数据库设计

    要求:公交查询系统,管理员可以新增线路,修改车辆参数,发车时间表,删除车次,站名等. 用户可以按线路查询,按站点查询相关信息,也可查询两站点之间的换乘信息等. 数据库应包含管理员表,车站表,线路表,车 ...

  7. mysql学习笔记--数据库设计

    一.数据库基本概念 1. 关系:两个表的公共字段 2. 行:也称记录,也称实体 3. 列:也称字段,也称属性 4. 数据冗余:相同的数据存在不同的地方. 注意:冗余只能减少,不能杜绝. 减少冗余,只能 ...

  8. 02-大鸭梨博客系统数据库设计及Dapper的使用

    毫无疑问,数据库的设计在一个系统中起了至关重要的作用.我们都知道,系统设计分为两部分,或者说是两个阶段,即数据库设计和功能设计.构建一个完善的系统需要这两个阶段的充分考量.周密设计.合理联接以及密切配 ...

  9. MySQL 约束和数据库设计

    1.MySQL 约束: 1.约束的概念: 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性. MySQL中,常用的几种约束: 约束类型: 非空 主键 唯一 外键 默认值 ...

随机推荐

  1. 高性能IO模型浅析(转)

    转自:http://www.cnblogs.com/fanzhidongyzby/p/4098546.html 是我目前看到的解释IO模型最清晰的文章,当然啦,如果想要详细的进一步了解还是继续啃蓝宝书 ...

  2. EnglishWords----1

    upon在...上面 upright垂直的,直立的 upward向上的 outward外面的,向外的 downward向下的 vertical垂直的 parallel平行的 sow播种 cut切 ch ...

  3. PADS 导Gerber文件

    PCB也画了好几年,投板时都是直接发PCB文件,突然间客户让我导出Gerber文件, 一时半会还挺棘手的,上网不停的搜啊搜啊,虽然最终还是搞定了,但耽误了不少时间. 现总结下,把所有相关设置一步一步的 ...

  4. Android Studio没有导包快捷键怎么办

    Android Studio没有导包快捷键,那怎么办呢? 在使用Eclipse开发Android应用时,开发者往往会使用Shift+Ctrl+O快捷键来快速导入所有的包,和移除未使用的包.但这个快捷键 ...

  5. VLAN及Trunk实验

    VLAN及Trunk实验 一 基本VLAN试验 实验拓扑: 实验目的:掌握VLAN基本配置 掌握静态接口VLAN划分 实验需求:在交换机switch上面创建两个VLAN,vlan2和vlan3,vla ...

  6. C++多线程二

    SuspendThread()暂停一个线程,ResumeThread()重启一个线程.参数均为线程的句柄. #include <iostream> #include <windows ...

  7. zencart 具体页面调用规则: $body_code变量解析

    zencart $body_code变量解析 修改centerColumn 可以修改中间产品方框的大小 2.2.5 .BODY文件在这个文件生效 require($body_code) include ...

  8. CSS动画 animation与transition

    一.区分容易混淆的几个属性和值 先区分一下css中的几个属性:animation(动画).transition(过渡).transform(变形).translate(移动). CSS3中的trans ...

  9. 多元线性回归----Java简单实现

    http://www.cnblogs.com/wzm-xu/p/4062266.html 多元线性回归----Java简单实现   学习Andrew N.g的机器学习课程之后的简单实现. 课程地址:h ...

  10. 最短路 HDU 2544

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...