数据库设计实例教务管理系统

数据库实验七 数据库设计

题目要求:

设计一个教务管理系统。要求管理包括:学生的档案,学生选课的情况,学生每学期的综合测评,教师档案,教师工作量等等。具体考核方法根据自己了解的实际情况处理。

假设此次设计的教务系统是整个学生管理系统数据库中的一部分,整个系统至少还包括学籍管理等其他子系统。

在初期设计时,先关注与教务系统有关的数据。在完成对教务管理系统的建模后再对整个系统进行合并,总终得到整个系统的设计方案。

一、需求分析

1、  根据分析可以画出该教务管理系统的数据流图:

学生

选课

上课

考试

测评

选课单

允许考试

成绩单

老师档案

课程简介

教室安排

试卷

考场安排

测评报告单

学生名单

教师

选定教材

申报

课表

2、  数据字典

数据结构:学生

含义说明:是教务管理系统的一个核心数据结构,定义了学生的有关信息

组成:学号、姓名

数据项:学号

含义说明:唯一标识每一个学生

别名:学生编号

类型:字符型

长度:9位

取值范围:190000000 – 999999999

取值含义:前四位表明学生所在年级,后五位安顺序编号

数据项:姓名

含义说明:表示学生的姓名

类型:字符型

长度:10位

取值范围:任意字符

数据结构:教师

含义说明:教务管理系统的核心数据结构之一,定义了教师的有关信息

组成:教师号,教师姓名

数据项:教师号

含义说明:教师的编号

类型:字符型

长度:5位

取值范围:10000– 99999

数据项:教师姓名

含义说明:教师的姓名

类型:字符型

长度:10位

取值范围:任意合法的字符

数据结构:课程

含义说明:教务管理系统的核心数据结构之一,定义了课程的有关信息

组成:课程号,课程名,课程描述,教师,教室,教科书,学分

数据项:课程号

含义说明:课程的编号

类型:字符型

长度:4

取值范围:0001 – 9999

数据项:课序号

含义说明:对于同一课程,由不同老师教授,用课序号来区分

类型:字符型

长度:2

取值范围:01 – 99

数据项:课程名

含义说明:课程的名称

类型:字符型

长度:10

取值范围:任意合法的字符

数据项:课程描述

含义说明:课程内容的基本描述

类型:字符型

长度:200

取值范围:任意合法字符

数据项:教科书

含义说明:课程所用的教科书

类型:字符型

长度:20

取值范围:任意合法字符

数据项:学分

含义说明:课程的学分

类型:整型

长度:1

取值范围:1-9

数据结构:教室

含义说明:上课所用的教室

组成:教室编号,教室地址,教室容量

数据项:教室编号

含义说明:教室的编号

类型:字符

长度:5

取值范围:00001-99999

数据项:教室地址

含义说明:标明教室的地址

类型:字符

长度:30

取值范围:任意合法的字符

数据项:教室容量

含义说明:教室的容纳学生的数量

类型:整型

取值范围:正整数

数据结构:选课记录

含义说明:纪录学生选课的纪录

组成:学生,课程,成绩

数据项:成绩

含义说明:选课学生本学期的成绩

类型:浮点数

范围:0.0 – 100.0

处理过程:分配教室

说明:为所有课程分配上课教室

输入:课程,教室

输出:教室安排

处理:学期课程决定后,要为每个课程安排上课地点,要求上课的地点不能冲突且上课人数不能超过教室容量。

处理过程:分配考场

说明:在考试日期,为所有课程分配考场

输入:课程,教室

输出:考场安排

处理:为每个课程安排考场,考试时间和地点不能冲突且考试人数不能超过考场容量。

数据存储:成绩单

说明:记录学生本学期所有课程成绩

流入数据流:学生所有的选课记录

流出数据流:学生的成绩单

数据量:由学生的人数决定

存取方式:随机存取

二、概念结构设计

1、根据需求分析画出E-R图:

选修

学生

教师

课程

m

n

讲授

1

n

教科书

n

成绩

教室

开设

1

n

2、  根据E-R图写出各个实体的属性描述

学生:{学号,姓名}

课程:{课程号,课程名,课程描述,学分}

教师:{教师号,教师名,课程数}

教室:{教室编号,地址,容量}

3、  视图的集成

假设在学生管理系统的学籍管理系统中存在另一个学生实体,其中还包括以下信息:性别,所属专业,所属班级。为了使两个实体保持一致,对两个实体取并集得到新的学生实体:

学生:{学号,姓名,性别,专业,班级}

三、逻辑结构设计

1、  由E-R图向数据模型的转换

一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。所以,E-R图中的属性描述可直接转换为相应的关系模式。

2、  对于剩余的一对多和多对多联系可以如下表示

学生-课程:{学号,课程号,课序号,成绩}

课程-教师:{课程号,课序号,教师号}

课程-教科书:{课程号,课序号,教科书}

教室-课程:{教室号,时间,课程号,课序号}

其中 课程-教师 与 课程-教科书 具有相同的主码,可以合并成一个关系

教学:{课程号,课序号,教师号,教科书}

最后得到的关系模式为

学生:{学号,姓名,性别,专业,班级}

课程:{课程号,课程名,课程描述,学分}

教师:{教师号,教师名,课程数}

教室:{教室号,地址,容量}

学生-课程:{学号,课程号,课序号,成绩}

教学:{课程号,课序号,教师号,教科书}

教室-课程:{教室号,时间,课程号,课序号}

3、  用户外模式

根据需求,为计算综合测评增加一个外模式,因为综合测评只在学期末进行,查询次数不多,所以没有必要用冗余的方法来提高查询效率,只需要建立一个外模式视图即可。

测评{学号,学生姓名,平均成绩}

4、  根据设计写出相应的SQL语句:

CREATE TABLE student

(

Sno        VARCHAR(9)     CONSTRAINTpk_student PRIMARY KEY,

Sname      VARCHAR(10)       NOTNULL,

Sex           VARCHAR(1)     NOTNULL,

Major         VARCHAR(10)    NOTNULL,

Class       VARCHAR(10)    NOTNULL,

CHECK    (Sex = 'f' ORSex = 'm')

)

CREATE TABLE course

(

Cno       VARCHAR(4)     CONSTRAINTpk_course PRIMARY KEY,

Cname     VARCHAR(10)    NOTNULL,

Describe   VARCHAR(200),

Mark      INTEGER

)

CREATE TABLE teacher

(

Tno     VARCHAR(5)    CONSTRAINTteacher_pk PRIMARY KEY,

Tname   VARCHAR(10)   NOTNULL,

Ccnt    INTEGER        NOTNULL DEFAULT 0

)

CREATE TABLE classroom

(

Rno      VARCHAR(5)CONSTRAINT pk_classroom PRIMARY KEY,

Locate   VARCHAR(30) NOTNULL,

Cap      INTEGER

CHECK    (Cap > 0)

)

CREATE TABLE tech

(

Cno    VARCHAR(4) NOTNULL CONSTRAINT fk_course_cno FOREIGN KEY REFERENCES course(Cno)

ON UPDATE CASCADE   --级联更新

ON DELETE CASCADE,  --级联删除

SCno   VARCHAR(2) NOT NULL,

Tno    VARCHAR(5)CONSTRAINT fk_teacher_tno FOREIGN KEY REFERENCES teacher(Tno)

ON UPDATE CASCADE

ON DELETE CASCADE,

Book   VARCHAR(20)

CONSTRAINT pk_tech PRIMARY KEY (Cno,SCno)

)

CREATE TABLE SC

(

Sno    VARCHAR(9) NOTNULL CONSTRAINT fk_student_sno FOREIGN KEY REFERENCES student(Sno)

ON UPDATE CASCADE

ON DELETE CASCADE,

Cno    VARCHAR(4) NOTNULL CONSTRAINT fk_sc_course_cno FOREIGN KEY REFERENCES course(Cno)

ON UPDATE CASCADE

ON DELETE CASCADE,

SCno   VARCHAR(2) NOT NULL,

Score  FLOAT

CONSTRAINT pk_sc PRIMARY KEY (Sno,Cno,SCno)

)

CREATE TABLE RC

(

Rno      VARCHAR(5)CONSTRAINT fk_classroom_rno FOREIGN KEY REFERENCES classroom(Rno)

ONUPDATE CASCADE

ONDELETE CASCADE,

Time        DATETIME,

Cno        VARCHAR(4)NOT NULL CONSTRAINT fk_rc_course_cno FOREIGN KEY REFERENCES course(Cno)

ON UPDATE CASCADE

ON DELETE CASCADE,

SCno     VARCHAR(2)NOT NULL

CONSTRAINT pk_rc PRIMARY KEY(Rno,Time)

)

为进行综合测评增加一个外模式

CREATE VIEW assess AS

SELECT SC.sno, sname, AVG(score) as averageFROM SC,Student

where SC.sno = student.sno

GROUP BY SC.sno,sname

为了符合数据的参照完整性约束,避免学生选课的时候选择一个不存在的课程号-课序号组,增加一个外键约束。

ALTER TABLE sc

ADD CONSTRAINT fk_sc_tech FOREIGN KEY(Cno,SCno) REFERENCES tech(Cno,SCno)

ON UPDATE CASCADE

ON DELETE CASCADE

为了在插入一个新课程时能级联更新教师的工作量,增加一个触发器。此任务也可以通过建立一个外模式视图来动态统计,为了练习的目的这里采用了触发器

CREATE TRIGGER workcnter On tech

AFTER INSERT ,UPDATE, DELETE

AS

BEGIN

DECLARE@T VARCHAR(5)

IFEXISTS

(

SELECTTOP 1 Tno FROM INSERTED

)

BEGIN

SET@T = (SELECT TOP 1 Tno FROM INSERTED )

UPDATEteacher SET Ccnt = Ccnt + 1 WHERE Tno = @T

END

IFEXISTS

(

SELECTTOP 1 Tno FROM DELETED

)

BEGIN

SET@T = (SELECT TOP 1 Tno FROM DELETED)

UPDATEteacher SET Ccnt = Ccnt - 1 WHERE Tno = @T

END

END

关于课程容量:如何保证选课的学生数量不超过教室的容量?

初步解决办法是:在学生选课时建立暂时不考虑容量问题,都加入一个临时的SC表中。然后,在选课结束后将未超额的记录直接加入SC表,超额的课程进行抽签,将命中部分学生的选课记录插入SC表,直到人数符合课程容量的要求为止。

抽签的功能较适合用顶层的高级语言来实现。在选课结束后,选超额课程的学生需登陆选课系统进行抽签,抽签的过程可以使用概率算法,如果抽中,系统再将选课记录插入SC表,否则就从临时表中删除。

所以,在数据库系统中,没有对SC表的插入操作进行约束。

数据库设计实例-教务管理系统相关推荐

  1. 数据库设计实例 教务管理系统

    数据库实验七 数据库设计 题目要求: 设计一个教务管理系统.要求管理包括:学生的档案,学生选课的情况,学生每学期的综合测评,教师档案,教师工作量等等.具体考核方法根据自己了解的实际情况处理. 假设此次 ...

  2. java毕业生设计中学教务管理系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计中学教务管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计中学教务管理系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开 ...

  3. 世界一级方程式锦标赛_Formula one小型查询数据库设计实例

    世界一级方程式锦标赛_Formula one小型查询数据库设计实例 2022年一级方程式锦标赛小型数据库设计 0.数据库系统基础 0.1数据库系统基础概述 0.2数据库服务器名称 1.数据库初始化 1 ...

  4. 超大型Oracle数据库设计实例

    超大型系统的特点为: 1.处理的用户数一般都超过百万,有的还超过千万,数据库的数据量一般超过1TB: 2.系统必须提供实时响应功能,系统需不停机运行,要求系统有很高的可用性及可扩展性. 这篇是笔者针对 ...

  5. 篮球赛场数据统计系统数据库设计实例

    篮球赛场数据统计系统数据库设计实例 研究内容(篮球赛场数据统计系统)    1)比赛前对球队.球员各项基本信息的录入功能: 2)比赛时对进球得分.各种进球类型以及裁判评判情况等数据和信息的记录功能: ...

  6. MYSQL数据库设计和数据库设计实例(一)

    数据库设计(database design):数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效的存储和管理要求,满足各种用户 ...

  7. MYSQL数据库设计和数据库设计实例(二)

    数据库设计---需求分析 1>需求分析的主要任务或者说主要的作用是:通过详细的调查现实世界要处理的对象,了解计算机系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能, 还需要考虑 ...

  8. 数据库大作业教务管理系统

    需求分析 教务管理系统中涉及对学生.教师和课程之间关系的管理 系统可以记录学生的选课和教师的授课以及教师.学生和课程的基本信息 概念结构设计 对于这个教务管理系统,课程的存在较为核心学生与课程的关系是 ...

  9. 数据库设计——医药销售管理系统

    开发环境和开发工具 操作系统:win8.1 开发环境:Mysql.Web 开发工具:Workbench.Eclipse.JDBC 功能需求分析 员工有权查看.添加会员,查看.添加供应商,查询药品(输入 ...

  10. 【数据库原理与应用】数据库应用实例— 教学管理系统

    目录 一.教学管理系统简介 二.如果要设计开发该教学管理系统,需要考虑那些问题呢?

最新文章

  1. Linux普通用户启动tomcat
  2. 安装-consul服务发现集群
  3. Android 屏幕灭屏亮屏广播,屏幕灭屏亮屏监听,广播实现按键监听
  4. 蔚来汽车5月份交付6711辆电动汽车 同比增长95.3%
  5. sqlalchemy 过滤
  6. jqueryui时间插件_jQueryUI AutoComplete插件
  7. 不用管别人怎么评论自己_不要管别人怎样评价你,做好自己就行了
  8. quast 的结果怎么看_使用quast评估基因组装配的质量
  9. 以太网(报头格式 | MTU | ARP)
  10. java修改文件只读_java修改文件为只读权限
  11. 不重启Windows使环境变量快速生效
  12. 衍射极限、MTF与像素大小(1)
  13. DOM中的node(节点)有关的三个属性--nodeType、nodeName、nodeValue
  14. python植物大战僵尸 豆约翰,python植物大战僵尸六之添加僵尸
  15. solidworks重建模型好慢_SolidWorks2019启动打开超级慢太慢好几分钟怎么解决?溪风老师支招啦...
  16. CentOS7,Ubuntu系统中NCL的gedit编译器安装方法,亲测有效
  17. Android性能优化系列之apk瘦身
  18. 穹顶灯打不出阴暗面_知更鸟的崛起为愤怒的交易者带来了阴暗面
  19. 安卓OTA升级文件的制作
  20. 挑灯夜读——MySQL多版本控制

热门文章

  1. 学STM32(STM32F103RCT6)
  2. ie降级,解决ie卡死,打不开,弹出页空白等问题
  3. git+vue项目实战
  4. 【读书笔记《Bootstrap 实战》】4.企业网站
  5. 车用总线技术 | J1939协议实用指南与J1939数据记录方案
  6. 银联在线支付B2C UnionPay.NET
  7. win10专业版 命令行窗口运行“wsdl2java”命令,提示系统找不到指定路径
  8. 4米乘以12米CAD图_实例讲解CAD制图比例
  9. Html学习手册(W3CSchool.chm)
  10. CC2541蓝牙模块间通信设置 蓝牙透传 蓝牙通信程序