MySQL-教学系统数据库设计
根据大学教学系统的原型,我构建出如下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-教学系统数据库设计的更多相关文章
- Oracle数据库设计实例-实时生产效率系统数据库设计
Oracle数据库设计实例-实时生产效率系统数据库设计 引言 1.1 设计前提 某部门经理要求IT部门设计一个流水线实时生产效率系统,用来统计实时的生产量和效率.流水线有数百条,实时间隔为1min. ...
- ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计
ylbtech-DatabaseDesgin:ylbtech-KeFuYunWei(服务运维考核系统)-数据库设计 DatabaseName:KEFUYUNWEI Model:Admin 用户后台管理 ...
- Java高级项目实战03:CRM系统数据库设计
接上一篇:Java高级项目实战02:客户关系管理系统CRM系统模块分析与介绍 欢迎点击回顾,接下来我们说说 CRM系统数据库设计. 我们根据产品的原型搞以及UI组的设计稿, 接下来就要设计数据库, 一 ...
- JavaWeb项目学习教程(2) 系统数据库设计
最开始本来想写一个管理系统,因为考虑到期末来临,我女朋友就可以看着教程然后学一些东西,然后可以自己慢慢手敲代码.但无奈自己也太懒,两个月过后,我才开始继续写这个博客,而现在我都已经开学了.不过博客还是 ...
- 使用MySQL Workbench进行数据库设计——MySQL Workbench用法总结
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/48318877 本文出自[我是干勾鱼的博客] 1 简单介绍 MySQL Workb ...
- 基于web公交查询系统----数据库设计
要求:公交查询系统,管理员可以新增线路,修改车辆参数,发车时间表,删除车次,站名等. 用户可以按线路查询,按站点查询相关信息,也可查询两站点之间的换乘信息等. 数据库应包含管理员表,车站表,线路表,车 ...
- mysql学习笔记--数据库设计
一.数据库基本概念 1. 关系:两个表的公共字段 2. 行:也称记录,也称实体 3. 列:也称字段,也称属性 4. 数据冗余:相同的数据存在不同的地方. 注意:冗余只能减少,不能杜绝. 减少冗余,只能 ...
- 02-大鸭梨博客系统数据库设计及Dapper的使用
毫无疑问,数据库的设计在一个系统中起了至关重要的作用.我们都知道,系统设计分为两部分,或者说是两个阶段,即数据库设计和功能设计.构建一个完善的系统需要这两个阶段的充分考量.周密设计.合理联接以及密切配 ...
- MySQL 约束和数据库设计
1.MySQL 约束: 1.约束的概念: 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性. MySQL中,常用的几种约束: 约束类型: 非空 主键 唯一 外键 默认值 ...
随机推荐
- IDL 实现PCA算法
在多元统计分析中,主成分分析(Principal components analysis,PCA)是一种分析.简化数据集的技术.主成分分析经常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特 ...
- 转:Windows平台配置Appium+Java环境
1) 安装JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装 ...
- Android平台设计规范整理(尺寸+组成元素+字体+滑块)
转自:http://www.ui.cn/project.php?id=12394
- CD冷却效果实现
在NGUI中实现CD转圈的特效,可以用图片控件中UISprite组件的Fill Amount属性去控制. 在上图中skill表示需要冷却技能的图片:其子控件Label表示右下角的快捷键“Y”:子控件S ...
- win10系统安装oracle11g时遇到INS-13001环境不满足最低要求
升级win10系统之后,需要重新安装Oracle,因为在安装Oralce11g时,使用64位的会出现各种不兼容问题,我每次安装都是使用32位的数据库. 在安装时点击setup.exe之后,出现了:[I ...
- angularJS 系列(五)--controller AS 语法
原文: http://www.cnblogs.com/whitewolf/p/3493362.html 这篇国外的文章也非常好: http://codetunnel.io/angularjs-cont ...
- android脚步---UI界面修改,增加按钮和监听
我的UU界面,其布局如下: 需要修改的部分: 意见反馈居中,还有增加backbutton 首先在mainactivity中找到我的UU的定义:dialogue public void showAbou ...
- CodeForces 158C - Cd and pwd commands(模拟)
这个题我们又把题意理解错了,队友翻译了以后给我解释,我问这个直接一个单词开头的是要找到这个文件夹吗,他说是,然后我就呵呵了..奔着树形结构去和字符串维护就去了...做了好久都没模拟出来,感觉做出来的人 ...
- 5个简单的步骤把 WordPress 打造成 CMS
可能网站的首页一直是一成不变的博客样子,有时候也会挺闷的,个人觉得首页就是应该把博客中最好最重要的内容展现给读者,基于这个想法,我们可以把博客的首页改成一个非常简单的 CMS 首页. 基于 WordP ...
- eclipse shortcut binding
有些真的是太方便了,我竟然不知道,比如ctrl + h 就是打开search 功能,包括file search,我竟然每次都点击工具条上的放大镜图标! use Ctrl+Shift+T for ope ...