数据库设计的典型案例要点学生选课管理系统的数据库设计学习目标学生选课管理系统的需求分析学生选课管理系统的ER图学生选课管理系统的关系数据库模式学生选课管理系统数据库的建立21案例的系统需求简介1.1总体需求简单介绍需求分析阶段是数据库应用系统开发的最重要阶段。需求分析要求应用系统的开发人员按照系统的思想,根据收集的资料,对系统目标进行分析,对业务的信息需求、功能需求以及管理中存在的问题等进行分析,抽取本质的、整体的需求,为设计一个结构良好的数据库应用系统的逻辑模型奠定坚实的基础。高等学校的学生选课管理系统,在不同的学校会有不同的特点,因为作为教务工作部分它和学校本身的行政制度有关。本案例的目的在于,作为数据库设计和应用开发的运用对象,对业务进行适度的简化,突出比较核心的成分,如院系算作一个级别的概念而且直接管理班(跳过专业一级的设置),学生的免修重修等情况处理、教师的管理没有细化等。1.2用户总体业务构造学生选课管理业务,包括4个主要部分:学生的学籍及成绩管理、制定教学计划、学生选课管理以及教学调度。各部分具体的内容:学籍及成绩管理包括:各院系的教务员完成学生学籍注册、毕业、转学等处理,各授课教师完成所讲授课成绩的录入,然后教务员进行学生成绩的审核认可。制定教学计划包括:由教务部门完成指导性教学计划、培养方案的确定,开设课程的注册和调整。学生选课包括:学生根据开设课程和培养计划(和自己的状况)选择自己本学期所选修课程,教务员对学生所选修课程的确认处理。3执行教学调度包括:教务员根据本学期所开设的课程、教师上课的情况以及学生选课情况完成排课、调课等。1.3系统功能设想这里的功能划分,是根据第一阶段需求调查基础上进行的初步划分。随着需求调查的深入,功能模块随着对需求了解的明确得到调整。教务管理业务的4个主要部分,可以将系统应用程序划分为对应得4个子模块:包括学籍及成绩管理子系统、教学计划管理子系统、学生选课管理子系统以及教学调度子系统。根据各业务子系统所包括业务内容,还可以将各个子系统继续细化划分为更小的功能模块。划分的准则主要遵循模块的内聚性要求和模块间的低聚合性。如图所示表示一个教务管理系统功能模块结构图。教学计划管理教学计划的录入和修改用户登录及其验证学生选课管理学籍和成绩管理教学调度应用系统课程资料的录入和修改学籍注册学生转学及毕业处理成绩管理选课输入和调整选课数据审核教学安排教学调整图1选课管理系统功能结构图41.4业务流程分析一个简化的选课系统业务流程如图2所示:图2选课管理系统业务流程各院系教学计划教务处教学计划编辑教学计划原始开课生成原始开课实际开课生成实际开课成绩录入学生成绩细表学生信息审核教师毕业、转学休学等任课教师名单学生选课(选课情况)52需求描述本阶段的成果的内容形式主要包括数据流图(DataFlowDiagram)和数据字典(DataDictionary)。数据流图和数据字典是描述用户需求的重要工具以及阶段成果表达形式。它作为需求分析的成果和用户交流的主要手段和依据,是后续数据库设计的前提。设计人员从数据流图中可以比较充分地了解软件的结构,所以也是软件设计的重要依据。调查了解用户的需求后,需要进一步表达用户的需求,分析和表达用户需求的方法很多,目前最常用的还是结构化分析法。该方法是基于数据流的需求分析方法,它利用了图形的方式进行表达,容易学习和运用。结构化分析法采用的是自顶向下、逐层分解的方式分析系统,即将系统的功能从宏观层面逐渐细化,达到最终的结构化分析方法主要使用以下几个工具:数据流图(DataFlowDiagram简称DFD)、数据字典(DataDictionary简称DD)、判定表和判定树等。数据流图描述了数据的来源和去向,以及所经过的处理;而数据字典是对数据流图中的数据流、数据存储和处理的明细描述。判定树和判定表用来描述据加工的逻辑构造。不同的应用环境,对数据描述的细化程度会有所不同,常常应实际情况而定。下面就使用这两种工具来描述本例的用户需求,体现他们在实际中的应用方法。2.1数据流图数据流图是通过系列符号及其组合来描述系统功能的输入、输出、处理或加工构造。数据流图中使用的符号在各种书籍和资料上表达不尽相同,目前许多常6用的一些流行的数据库辅助设计工具如MicrosoftVisio、SybasePowerDesigner、OracleDesigner、RationalRose、Erwin等符号都不统一,我们这里以比较容易上手的Visio工具为例,针对模板中的符号作为参考:,数据源点或终点或者外部实体数据存储加工或处理数据流图2Gane-Sarson模板中数据流图的基本元素注意:DFD表示数据被加工或处理的过程,箭头只是表示数据流动的方向,不能有分支、循环的情况。数据流图命名规则之一:数据流图的中加工、处理过程一般采用动词及其短语;数据源点或终点、数据存储(数据文件或表单形式)、数据流(一项或多项数据)等一般为名词或名词短语。数据流图命名规则之二:流图中的命令所使用的语言要基本上反映实际的情况,在整个DFD中必须要唯一,尽量避免含有像加工、处理、存储这样的元名称。1、系统的全局数据流图系统的全局数据流图,在具体的设计工具中往往也称为第0层或顶层数据流图,主要是从整体上描述系统的数据流,反映系统中数据的整体流向,是设计者针对用户和开发者表达出来的一个总体描述。我们经过对教学管理业务的调查、数据的收集和信息流程分析处理,明确了该系统的主要功能,分别为:制定学校各专业各年级的教学计划以及课程的设置;学生根据学校对所学专业的培养计划以及自己的兴趣,选择自己本学期所要学习的课程;学校的教务部门对新入学的学生进行学籍注册,对7毕业生办理学籍档案的归档工作,任课教师在期末时登记学生的考试成绩;学校教务部门根据教学计划进行课程安排、期末考试时间地点的安排等,如图所示。P1教学计划和课程管理S4学生学籍信息S5学生选课信息S3课程信息院系信息S7学生成绩信息学生任课老师教务员P2学籍和成绩管理P3选课管理S1教师档案P4教学安排教学计划处理信息教学计划变更课程数据清单排课单S6排课信息排课信息教师业务数据学生选课请求选课审核学生课程选择数据学生选课数据课程数据变更信息考试成绩学生成绩数据学生学籍信息成绩审核命令安排信息课程处理信息学籍变更信息S2教学计划信息教学计划数据课表图3简化的选课管理系统0层数据流图2、系统局部数据流图全局数据流图,从整体上描述了数据流向和加工处理过程。但是一个较为复杂的系统来讲,要清楚地描述系统数据的流向和加工处理的每一个细节,8仅用全局数据流图难以完成。因此需要在全局数据流图的基础上,对全局数据流图的某些局部单独放大,进一步细化,细化可以采用多级方式进行,便是所谓的分级数据流图来描述。这里以制定教学计划/学籍及成绩管理和选课等处理功能作细化的分析对象。制定教学计划处理,主要分为4个子处理过程:教务员根据自己已有的课程信息,增补新开设的课程信息;调整课程信息;查询本学期的教学计划;制定新学期的教学计划。其处理过程如图4所示。课程数据变更信息S3课程信息教学计划变更信息S2教学计划信息课程处理信息教务员教学计划处理信息P1.2修改课程信息P1.3教学计划查询P1.4教学计划修改P1.1课程信息查询课程查询请求教学计划查询请求课程信息教学计划信息要修改的课程信息要修改的教学计划图40层P1的1层数据流图:制定教学计划学籍及成绩管理相对比较复杂,教务员需要新生的学籍注册,毕业生的学籍和成绩的归档管理,任课教师输入学生的考试成绩后,需教务员审核并作认可处理,经确认的学生成绩不允许他人修改。其处理过程如图5所示。9学生成绩数据S7学生成绩信息考试成绩任课老师学籍变更信息教务员成绩审核命令学生学籍信息S4学生学籍信息P2.2学籍状态处理P2.5课程成绩录入P2.4课程成绩审核P2.3课程成绩查询P2.1学籍信息查询未经审核成绩单课程成绩查询条件审核更改数据学籍信息查询条件要求变更的学生状态变更图50层P2的1层数据流图:学籍和成绩管理选课管理中,学生根据学校对其专业制定的教学计划,录入本学期所选课程,教务员对学生选课记录进行审核,经审核得到的选课就为本学期的选课。其处理过程如图7所示。10课程数据清单S3课程信息学生课程选择数据S5学生选课信息选课审核教务员(学生)教学计划查询请求学生P3.1查询教学计划P3.2选课信息录入P3.4选课信息确认P3.3选课信息查询选课信息查询选课信息没经确认的选课经确认的选课信息针对的教学计划教学计划数据S2教学计划信息图60层P3的1层数据流图:选课管理0层P4的1层数据流图请读者自行描述。我们可以使用许多的设计工具完成数据流图的创建,这些工具不但可以实现常用的数据流图的绘制,而且可以对多层的数据流图中的元素及其关系的正确性实现有效的检验,能帮助我们学习和理解数据流图的实现技术。本章11有关的数据流图均使用MicrosoftVisio工具进行绘制,相关的工具还有Sybase公司的PowerDesigner以及Oracle的Designer等。2.2数据字典数据流图表达了数据与处理的关系,数据流图作为直观的了解系统运行机理的手段,并没有具体描述各类数据的细节,只有通过数据字典进一步细化才能对系统的需求得到具体而确切的了解。数据字典用来说明数据流图中出现的所有元素的详细的定义和描述,包括数据流、加工处理、数据存储、数据的起点和终点或外部实体等。数据字典包括的项目有:数据项、数据结构、数据流、数据存储、加工逻辑和外部实体。可使用一些符号来表示数据结构、数据流和数据存储的组成。1、数据流表1P3中数据流的描述序号数据流名来源流向组成说明1(学生)教学计划查询请求需要选课的学生P3.1班级号或学号注意查询类别的区别2教学计划数据S2教学计划信息P3.1班级号+课程编号+开课学年+开课学期3学生课程选择数据P3.2S5学生选课信息课程编号+年号+学期号4选课信息查询教务员P3.3班级号+课程号+学年+学期2、数据存储12表2P3中数据存储的描述序号数据文件文件组成关键标识组织1S2教学计划信息班级号+课程编号+开课学年+开课学期全部按开课学年,学期,班级降序2S3学生选课信息学号+课程编号+开课学年+开课学期全部按开课学年,学期,班级降序3S5课程数据清单课程编号+课程名称+课程说明课程编号课程编号排序3、处理过程逻辑表3P3中处理过程逻辑的描述序号处理过程编号输入输出处理逻辑1查询教学计划P3.1学生选课查询请求+教学计划数据针对的教学计划针对选课请求进行查询2选课信息录入P3.2针对的教学计划学生课程选择数据根据学生对应的教学计划选择课程3选课信息查询P3.3选课信息查询+选课数据没经确认的选课根据班级和课程号检查对应的未确认的选课清单清单4选课信息确认P3.4选课审核+没经确认的选课经确认的选课信息选择选课清单进行确认134、数据项表4P3中数据项的说明序号数据项数据对象说明数据构成1学号{英文|数字}10入学年号+班级序号+顺序号2选课时间{数字}-2{数字}-2{数字}年+月+日3课程名称{汉字|英文|数字}204班级号{英文|数字}65教师编号{英文|数字}106开课学年{数字}7开课学期{1|2}8课程说明0{汉字|英文|数字}100英文=[‘a’…’z’|’A’…’Z’]数字=[‘0’…’9’]143概念设计上述的数据流图和数据字典共同构成了对用户需求的表达,它们是系统分析员(数据库管理员)在需求调查过程中和用户反复交互得到的。建设系统实际要处理的数据基本上已经在数据流图中得到体现,整个设计过程的后续步骤提供基础和依据。概念设计就是通过对需求分析阶段所得到的信息需求进行综合、归纳与抽象,形成一个独立于具体数据库管理系统的概念模型,主要的手段为ER图。在概念设计阶段,主要采用的设计手段目前还是实体联系模型(E-RModel)。绘制E-R图的关键是确定E-R图的各种结构,包括实体、属性和联系。大部分的流行建模工具(PowerDesig