数据库设计(结构化设计方法)——学生考试管理系统

文章目录

    • 作业要求
    • 一、需求分析
      • 1.1、需求说明
      • 1.2、数据流图
        • 1.2.1、系统的顶层数据流图
        • 1.2.2、系统的第0层数据流图
      • 1.3、数据字典
        • 1.3.1、数据流
        • 1.3.2、数据存储
        • 1.3.3、处理过程逻辑
    • 二、概念设计
      • 2.1、实体
      • 2.2、系统局部E-R图
        • 2.2.1、教师实体、课程实体和考核点实体的联系
        • 2.2.2、学生实体与课程实体的联系
      • 2.3、系统全局E-R图
    • 三、逻辑结构设计
      • 3.1、ER图到关系模式的转换
      • 3.2、关系模式的规范及调整
      • 3.3、各数据表的表结构设计
        • 3.3.1、数据库中的表清单
        • 3.3.2、教师信息表Teacher字段信息
        • 3.3.3、管理员信息表Admin字段信息
        • 3.3.4、学生信息表Student字段信息
        • 3.3.5、课程信息表Course字段信息
        • 3.3.6、教师授课表TeaCourse字段信息
        • 3.3.7、学生选课表StuCourse字段信息
        • 3.3.8、考核点信息表ScorePoint字段信息
        • 3.3.9、考核点成绩Score字段信息

作业要求

登录管理模块:

  1. 权限控制:学生不能访问系统管理模块。
  2. 登录错误信息提示。

系统管理模块:

  1. 系统管理员登录系统后,可以维护课程基础信息,如课程名字、开课时间(学期)等,对课程信息进行增、删、改、查。
  2. 以设定课程的考试成绩的计算方法:能够在页面上对某课程动态增加考核点,并填入该考核点的分值比例。(**如:**对J2EE课程,可新增3个考核点,考核点1为到课情况,分值比例为20%;考核点2为作业,分值比例为20%;考核点3为考试,分值比例为60%。能够验证分值比例之和是否等于100%。)
  3. 维护某门课程每次开课的信息,包括开课时间(具体的学年度)、任课教师、选修人数统计等。
  4. 对学生基础信息进行管理,学生信息的增、删、改、查。
  5. 以列表的方式填入选修某门课程的每个学生的成绩,需要针对每个考核点填写,并计算出总成绩。只有选修了该门课的学生才显示。
  6. 能够对管理帐号进行管理,如增、删、改、查,修改密码等。

学生模块:

  1. 可以修改自己的基本信息。
  2. 可以察看每个学年度每个学期开的课程,并选修。
  3. 可查询自己选修的所有课程的成绩。

注意:不考虑学生年级因素。

一、需求分析

本阶段的成果的内容形式主要包括数据流图(Data Flow Diagram)和数据字典(DataDictionary)。

数据流图和数据字典是描述用户需求的重要工具以及阶段成果表达形式。它作为需求分析的成果和用户交流的主要手段和依据,是后续数据库设计的前提。

设计人员从数据流图中可以比较充分地了解软件的结构,所以也是软件设计的重要依据。

1.1、需求说明

作业要求中,把系统分为了三个模块,即登入管理模块、系统管理模块、学生模块。

对这三个模块的内容进行分析之后,可以得知学生考试管理系统主要满足来自三方面的需求,这三个方面分别是学生用户、教师用户和管理员用户。

因此,从原先的三个模块分解为如下四个模块:

  1. 登入管理模块(权限控制以及登入错误信息提示等)
  2. 管理员模块(对教师信息、学生信息、课程信息进行管理等)
  3. 教师模块(对课程考核点进行管理、录入学生成绩以及修改个人信息等)
  4. 学生模块(选课以及退选、查看个人成绩以及修改个人信息等)

1.2、数据流图

1.2.1、系统的顶层数据流图

系统的全局数据流图,也称为顶层数据流图,主要是从整体上描述系统的数据流,反映系统中数据的整体流向,是设计者针对用户和开发者表达出的一个总体描述。

数据库设计(结构化设计方法)——学生考试管理系统_第1张图片

1.2.2、系统的第0层数据流图

第0层数据流图是对顶层数据流图的细化,它的每一处理还可能继续细化,形成子图。

根据需求可将顶层数据流程图作细化,画出第0层数据流程图,如下图所示。

数据库设计(结构化设计方法)——学生考试管理系统_第2张图片

根据需求分析结果,明确了该系统的主要功能,分别为:

  1. 管理员设置课程并指定任课教师。
  2. 任课老师设置课程的考核点以及各考核点期末占分。
  3. 学生根据自己的兴趣选择课程。
  4. 任课老师录入学生的各考核点成绩。

1.3、数据字典

数据流图表达了数据与处理的关系,数据流图作为直观的了解系统运行机理的手段,并没有具体描述各类数据的细节,只有通过数据字典进一步细化才能对系统的需求得到具体而确切的了解。数据字典用来说明数据流图中出现的所有元素的详细的定义和描述,包括数据流、加工处理、数据存储、数据的起点和终点或外部实体等。
数据字典包括的项目有:数据项、数据结构、数据流、数据存储、加工逻辑和外部实体。

1.3.1、数据流

序号 数据流名 来源 流向 组成 备注
F1 课程信息 管理员 P2课程信息处理 课程号+课程名称+任课老师工号+开课时间
F2 教师信息 管理员 P3教师信息处理 工号+姓名+性别+登入密码+电子邮箱+电话号码
F3 学生信息 管理员 P4学生信息处理 学号+姓名+性别+登入密码+电子邮箱+电话号码
F4 登入信息 管理员 P1登入系统 账号+密码+账户类别
F5 管理员信息 P5显示个人信息 管理员 账号+姓名+性别+登入密码+电子邮箱+电话号码
F6 登入信息 学生 P1登入系统 账号(学号)+密码+账户类别
F7 账户信息 P1登入系统 P5显示个人信息 账号(学、工号)+姓名+性别+登入密码+电子邮箱+电话号码
F8 已处理的课程信息 P2课程信息处理 S1课程信息 课程号+课程名称+开课时间
F9 任课教师 P2课程信息处理 S6教师任课信息 课程号+教师工号
F10 已处理的教师信息 P3教师信息处理 S2教师信息 工号+姓名+性别+登入密码+电子邮箱+电话号码
F11 已处理的学生信息 P4学生信息处理 S3学生信息 学号+姓名+性别+登入密码+电子邮箱+电话号码
F12 课程信息 P6显示课程信息 学生 课程号+课程名称+任课老师工号+任课老师名称+开课时间
F13 选课信息 学生 P7选课 学号
F14 退课信息 学生 P8退课 学号
F15 成绩信息 P11显示学生成绩 学生 学号+课程号+考核点名称+考核点分数+总成绩
F16 学生个人信息 P5显示个人信息 学生 学号+姓名+性别+登入密码+电子邮箱+电话号码
F17 登入信息 教师 P1登入系统 账号(工号)+密码+账号类别
F18 教师个人信息 P5显示个人信息 教师 工号+姓名+性别+登入密码+电子邮箱+电话号码
F19 考核点信息 教师 P9设置考核点信息 考核点名称+考核点占分
F20 选课结果 P7选课 S7学生选课信息 课程号+学号
F21 退课结果 P8退课 S7学生选课信息 课程号+学号
F22 学生考核点成绩 教师 P10计算学生成绩 考核点分数
F23 学生成绩 P10计算学生成绩 S8学生成绩 学号+课程号+考核点名称+考核点分数
F24 任课课程信息 P12显示任课信息 教师 课程号+课程名称+任课老师工号+开课时间
F25 课程考核点信息 P9设置课程考核点 S5课程考核点信息 课程号+考核点名称+考核点占分
F26 选课学生信息 P13显示选课学生信息 教师 学号+姓名+性别+登入密码+电子邮箱+电话号码

1.3.2、数据存储

序号 数据文件 文件组成 关键标识
S1 课程信息 课程号+课程名称+开课时间 课程号
S2 教师信息 工号+姓名+性别+登入密码+电子邮箱+电话号码 工号
S3 学生信息 学号+姓名+性别+登入密码+电子邮箱+电话号码 学号
S4 登入账户信息 账号(学、工号)+密码 全部
S5 课程考核点信息 课程号+考核点名称+考核点占分 全部
S6 教师任课信息 课程号+教师工号 全部
S7 学生选课信息 课程号+学号 全部
S8 学生成绩 学号+课程号+考核点名称+考核点分数 全部

1.3.3、处理过程逻辑

序号 处理过程 输入 输出 处理逻辑
P1 登入系统 账号和密码以及用户类型 账户信息 检验登入账户的正确性
P2 课程信息处理 课程信息 处理之后的课程信息 检验课程信息的正确性以及增删改查操作
P3 教师信息处理 教师信息 处理后的教师信息 检验教师信息的正确性以及增删改查操作
P4 学生信息处理 学生信息 处理后的学生信息 检验学生信息的正确性以及增删改查操作
P5 显示个人信息 账户信息 用户的个人信息 根据登入账户不同显示不同的用户个人信息
P6 显示课程信息 教师任课信息和课程信息 详细的课程信息 显示课程信息以及任课教师
P7 选课 学生选课信息和课程信息 选课结果 处理学生选课
P8 退课 退课信息和学生选课信息 退课结果 处理学生退课
P9 设置考核点信息 考核点信息和课程信息 课程考核点信息 对课程设置考核点信息
P10 录入学生成绩 学生考核点成绩、课程考核点信息和学生选课信息 学生成绩 对学生所选的课程的考核点进行评分
P11 显示学生成绩 学生成绩 成绩信息 计算总成绩并显示学生考核点成绩以及总成绩
P12 显示任课信息 教师任课信息和课程信息 任课课程信息 显示老师所任课程的详细信息
P13 显示选课学生信息 学生选课信息、教师任课信息、学生信息 选课学生信息 显示选择某门课程的所有学生信息

二、概念设计

上述的数据流图和数据字典共同构成了对用户需求的表达,它们是系统分析员(数据库管理员)在需求调查过程中和用户反复交互得到的。

建设系统实际要处理的数据基本上已经在数据流图中得到体现,整个设计过程的后续步骤提供基础和依据。

在概念设计阶段,主要采用的设计手段目前还是实体联系模型(E-R Model)。绘制E-R图的关键是确定E-R图的各种结构,包括实体、属性和联系。

2.1、实体

要建立系统的E-R模型的描述,需进一步从数据流图和数据字典中提取系统所有的实体及其属性。为了简化E-R图的处置,现实世界的事物能作为属性对待的尽量作为属性对待,实体的指导原则如下:

  1. 属性必须是不可分的数据项,即属性中不能包含其它的属性或实体。
  2. E-R图中的关联必须是实体之间的关联,属性不能和其它实体之间有关联。

由前面分析得到的数据流图和数据字典,可以抽象得到实体主要有3个:管理员、教师、学生、课程、考核点。其中,

  • 管理员实体属性有:账号、姓名、性别、登入密码、电子邮箱、电话号码。
  • 教师实体属性有:工号、姓名、性别、登入密码、电子邮箱、电话号码。
  • 学生实体属性有:学号、姓名、性别、登入密码、电子邮箱、电话号码。
  • 课程实体属性有:课程号、课程名称、开课时间。
  • 考核点实体属性有:考核点名称、考核点占分。

2.2、系统局部E-R图

在需求分析阶段我们采用的是自上而下的分析方法,那么要在其基础上进一步作概念设计我们面临的是细化的分析数据流图以及数据字典,分析得到实体及其属性后,进一步可分析各实体之间的联系。

2.2.1、教师实体、课程实体和考核点实体的联系

一名教师可以讲授多门课程,而每门课只能被一名教师讲授,所以它们之间是一对多的联系(1:n)。

每门课程可以包含多个考核点,而一个考核点只能属于一门课程,所以它们之间的联系是一对多的(1:n)。

数据库设计(结构化设计方法)——学生考试管理系统_第3张图片

2.2.2、学生实体与课程实体的联系

一个学生可以选修多个课程,而每一个课程都能够被多个学生选修,因此,它们之间也属于一对多的关系。当学生实体与课程实体联系之后,产生考核点成绩属性。

数据库设计(结构化设计方法)——学生考试管理系统_第4张图片

2.3、系统全局E-R图

系统的局部E-R图,仅反映系统局部实体之间的联系,但无法反映系统在整体上实体间的相互联系。而对于一个比较复杂的应用系统来说,这些局部的E-R图往往有多人各自分析完成的,只反映局部的独立应用的状况,在系统整体的运作需要时,他们之间有可能存在重复的部分或冲突的情况,如实体的划分、实体或属性的命名不一致等,属性的具体含义(包括数据类型以及取值范围等不一致)问题,都可能造成上述提到的现象。
为解决这些问题,必须理清系统在应用环境中的具体语义,进行综合统一,通过调整消除那些问题,得到系统的全局E-R图。

数据库设计(结构化设计方法)——学生考试管理系统_第5张图片

三、逻辑结构设计

逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构。

3.1、ER图到关系模式的转换

首先,课程实体以及它们的联系。任课教师与课程之间是一对多的联系类型,因此,将任课教师和课程分别设计成如下的关系模式:

  • 教师(工号,姓名,性别,登入密码,电子邮箱,电话号码)
  • 课程(课程号,课程名称,开课时间,工号)

学生与课程之间是多对多的联系类型,所以将学生和选修分别设计成如下的关系模式:

  • 学生(学号,姓名,性别,登入密码,电子邮箱,电话号码)
  • 选修(学号,课程号)

将管理员的关系模式设计为:

  • 管理员(账号,姓名,性别,登入密码,电子邮箱,电话号码)

对于考核点、课程和学生,由于课程与考核点是一对多的关系,学生选修课程之后能够拥有考核点成绩。

  • 考核点(课程号,考核点名称,考核点占比)
  • 考核点成绩(学号,课程号,考核点名称,分数)

3.2、关系模式的规范及调整

首先,需要我们确定上面建立的关系模式中的函数依赖,一般在作需求分析时就了解到一些数据项的依赖关系,如教师的编号决定了教师的姓名和其它的数据项信息,而实体间的联系本身也是反映了一种函数依赖关系,但是这不是研究的对象,我们针对的是在一个关系模式中的函数依赖对象。

其次,对上一步确立的所有函数依赖进行检查,判别是否存在部分函数依赖以及传递函数依赖,针对有的依赖通过投影分解,消除在一个关系模式中存在的部分函数依赖和传递函数依赖。

对以上八个关系模式进行检查发现,在“课程”中存在部分函数依赖,即工号不依赖于主键课程号,因此对此进行投影分解,增加新的关系模式“授课”。

最终得到的关系模式如下,均已符合第三范式:

  • 教师(工号,姓名,性别,登入密码,电子邮箱,电话号码)
  • 课程(课程号,课程名称,开课时间)
  • 授课(工号,课程号)
  • 学生(学号,姓名,性别,登入密码,电子邮箱,电话号码)
  • 选修(学号,课程号)
  • 管理员(账号,姓名,性别,登入密码,电子邮箱,电话号码)
  • 考核点(课程号,考核点名称,考核点占比)
  • 考核点成绩(学号,课程号,考核点名称,分数)

3.3、各数据表的表结构设计

在上述经由E-R模型得到关系模式并且得到适当的调整后,我们可以结合在需求表述中数据字典包含的数据项信息,得到数据库的表结构。

我们应该根据3.1节的内容,具体设计各个数据表的表结构,包括表名,表中各列的字段名、数据类型、数据长度和表的主键和外键;还要考虑应该建立哪些索引以及索引的类型。

3.3.1、数据库中的表清单

数据库表名 关系模式名称 备注
Admin 管理员 管理员信息表
Teacher 教师 教师信息表
Student 学生 学生信息表
Course 课程 课程信息表
TeaCourse 授课 教师授课表
StuCourse 选修 学生选课表
ScorePoint 考核点 考核点信息表
Score 考核点成绩 考核点成绩信息

3.3.2、教师信息表Teacher字段信息

字段名称 含义属性 类型 长度 备注
teacherid 工号 char 10 主键,也可作为登录标识
tname 姓名 varchar 6 非空
tsex 性别 varchar 2 男、女
tpassword 登入密码 varchar 20 可以是数字、英文以及符号等
temail 电子邮箱 varchar 40
tphone 电话号码 varchar 15

3.3.3、管理员信息表Admin字段信息

字段名称 含义属性 类型 长度 备注
aid 账号 char 10 主键,也可作为登录标识
aname 姓名 varchar 6 非空
asex 性别 varchar 2 男、女
apassword 登入密码 varchar 20 可以是数字、英文以及符号等
aemail 电子邮箱 varchar 40
aphone 电话号码 varchar 15

3.3.4、学生信息表Student字段信息

字段名称 含义属性 类型 长度 备注
studentid 学号 varchar 10 主键,也可作为登录标识
sname 姓名 varchar 6 非空
ssex 性别 varchar 2 男、女
spassword 登入密码 varchar 20 可以是数字、英文以及符号等
semail 电子邮箱 varchar 40
sphone 电话号码 varchar 15

3.3.5、课程信息表Course字段信息

字段名称 含义属性 类型 长度 备注
courseid 课程号 varchar 10 主键
cname 课程名称 varchar 20 非空
ctime 课程时间 int 5 如20201

3.3.6、教师授课表TeaCourse字段信息

字段名称 含义属性 类型 长度 备注
teacherid 工号 varchar 10 外键(Teacher.teacherid)
courseid 课程号 varchar 10 外键(Course.courseid)

3.3.7、学生选课表StuCourse字段信息

字段名称 含义属性 类型 长度 备注
studentid 学号 varchar 10 外键(Student.studentid)
courseid 课程号 varchar 10 外键(Course.courseid)

3.3.8、考核点信息表ScorePoint字段信息

字段名称 含义属性 类型 长度 备注
courseid 课程号 varchar 10 外键(Course.courseid)
pname 考核点名称 varchar 20 非空
ppercent 考核点占比 int 3 (1…100)表示所占百分比

3.3.9、考核点成绩Score字段信息

字段名称 含义属性 类型 长度 备注
studentid 学号 varchar 10 外键(Student.studentid)
courseid 课程号 varchar 10 外键(Course.courseid)
pname 考核点名称 varchar 20 非空
pscore 分数 int 3 (1…100)表示分值

你可能感兴趣的:(数据库)