根据大学教学系统的原型,我构建出如下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. NPOI 2.0 教程(二):编辑既存的EXCEL文件

    NPOI 2.0 教程(二):编辑既存的EXCEL文件 分类: C#技术 2014-03-11 15:40 993人阅读 评论(3) 收藏 举报 c#excelNPOI 转载请注明出处 http:// ...

  2. ZABBIX自定义用户KEY与参数USERPARAMETERS监控脚本输出

    zabbix在模板中预定义了一些key,但通常情况,并不能满足我们的需求.幸运的是zabbix提供了自定义key的方法,因此我们可以灵活的监控各种我们想要监控的数据. 定义配置文件 通过yum安装的z ...

  3. php通过token验证表单重复提交

    PHP防止重复提交表单 2016-11-08 轻松学PHP 我们提交表单的时候,不能忽视的一个限制是防止用户重复提交表单,因为有可能用户连续点击了提交按钮或者是攻击者恶意提交数据,那么我们在提交数据后 ...

  4. 连接Oracle数据库的Hibernate配置文件

    连接Oracle数据库的Hibernate配置文件连接Oracle的Hibernate配置文件有两种格式,一种是xml格式的,另一种是Java属性文件格式的.下面分别给出这两种格式配置文件的代码. 1 ...

  5. PKI 笔记

    PKI – Public Key Infrastructure , 通常翻译为公钥基础设施. PKI 安全平台提供的4个服务,来保证安全的数据,分别是: l  身份识别 l  数据保密 l  数据完整 ...

  6. HDU 2846 Repository(字典树)

    字典树较为复杂的应用,我们在建立字典树的过程中需要把所有的前缀都加进去,还需要加一个id,判断它原先是属于哪个串的.有人说是AC自动机的简化,但是AC自动机我还没有做过. #include<io ...

  7. .NET反射应用

    .Net中,在编写框架时,反射是最长用的一个知识点,在这举个小例子,旨在说明反射如何应用:本文只程序中只涉及到System.Type的应用,通过这个类可以访问关于任何数据类型的信息,注释部分涉及到Sy ...

  8. iOS 程序间跳转传参(支付和地图)

    两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个AP ...

  9. RAD Studio 2010 环境设置(转)

    源:RAD Studio 2010 环境设置 最近在使用RAD Studio 2010做一些开发和实验,但在安装了自定义的控件及第三方下载的控件后,在我的工程里经常会提示找不到DCU,为了以后忘记这一 ...

  10. PAT (Advanced Level) 1004. Counting Leaves (30)

    简单DFS. #include<iostream> #include<cstring> #include<cmath> #include<algorithm& ...