学生信息管理数据库分析

时间:2022-09-11 05:20:58

学生信息管理数据库分析

1需求分析

概念模型,也称为信息模型,是从用户的角度出发来对信息建摸;它是设计人员和用户之间进行交流的一个强有力的工具。由于概念模型是对信息世界建摸,所以概念模型应该能够方便、准确地表达出信息世界中的事物及其联系。常用E-R图来描述现实世界的概念模型。现实世界中的各种事物都不是孤立的,它们相互间存在着千丝万缕的联系着,信息管理系统中必须要真实地反映出现实世界中和个实体之间的这些联系。现实世界中实体之间的联系共有三大种类即:一对一、一对多和多对多,在学生信息管理系统中存在的就是这三种基本的联系:一个系拥有若干名学生,但是一个学生只能属于一个系,因此系与学生之间的联系属于一对多联系,其中系是一方,而学生是多方。一个系拥有多名教师,但是一个教师只能在一个系里工作,因此系与教师之间的联系属于一对多联系,其中系是一方,而教师则是多方。同时由于不管是学生还是教师都是与系有联系的,所以系是学生实体和教师实体之间的桥梁。另外学生在学校期间必须要学习课程,且每学习完一门课程之后学生都要参加考试,从而产生成绩,因此学生和课程之间也有联系。由于一个学生可以学习多门课程,另一方面一门课程可以被多个学生所学习,因此学生和课程之间的联系的类型是多对多联系。通过对各种学生信息管理系统中涉及到的实体及其联系的分析,得出如图1所示的系统整体E-R图。

2数据库设计

2.1关系设计

按照需求分析得出的学生信息管理系统的整体E-R模型,现在设计数据库:数据库名是studentdb;数据库服务器是SQLServer2005。由于本系统将采用SQLServer2005这种关系数据库管理系统来存储和管理数据的,但是关系数据管理系统,对于这种多对多联系却不能直接处理。所以要用一种方法来变换这种多对多联系,从而使得关系数据库管理系统能够间接地处理,达到解决问题的目的。根据多对多分解的原则必须保证分解出来的结果既具有无损性的特点,而且还必须使得分解保持住原来的函数依赖。在本系统中通过引入一个中间关系即成绩关系来把学生和课程这两个实体之间的多对多联系,转换为两个一对多联系。可以这样理解一个学生学习完多门课程参加考试之后会产生多条成绩信息,但是一条成绩信息只能对应着一个学生;同理一门课程在给多个学生讲授完之后要进行考试也会产生多条成绩信息,但是一条成绩信息只能对应着一门课程。这样便通过成绩这个关系把学生实体和课程实体之间的多对多联系分解为两个一对多,并由成绩这个关系把学生和课程这两个关系联系在一起且这种分解完全符合关系模式的分解上述两个分解原则。这样对应到数据库中,本系统的主要就主要由学生、系、教师、课程和成绩关系组成,但是为了用户管理的需要还要多增加一个登录关系,当然登录关系里的用户只有两种类型,不是学生便是教师。所以登录关系与学生和教师这两个关系是一一对应的联系,即一对一联系。综上所述本系统里共有6个关系,现仅列出score表的结构,如表1所示。

2.2完整性设计

在分析了以上实体之间联系的种类之后,还要分析各实体及实体之间的完整性约束。表的完整性约束共分为三种,第一种是实体完整性规则,第二种是参照完整性规则,第三种是用户定义的完整性规则。在本系统中存在实体之间的这三种完整性,从而保证各个表的完整性。登录表中可以在用户名上建立主键,保证了该表中没有重复的元组出现,这样就可实现实体完整性。学生表中在学号上建立主键,保证了该表中没有重复的元组出现,这样就可以实现实体完整性。其次,学生表中的系号虽然不是本表的主键,但它是系表的主键,所以系号可以作为学生表的外键,因此学生表中的系号不能随便取值,只能参照系表中系号的取值,这样通过系号这个外键实现了参照完整性。还有,学生表中的性别字段取值只能是“男”或“女”,这种类型的约束就是所谓的域完整性规则,域完整性约束属于用户定义的完整性的一种。教师表中在工号上建立主键,保证了该表中没有重复的元组出现,这样可以通过工号来实现实体完整性。其次,教师表中的系号虽然不是本表的主键,但它却是系表中主键所以系号可以作为教师表的外键,因此教师表中的系号不能随便取值,只能参照系表中系号的取值,这样通过系号这个外键即可实现参照完整性。还有,教师表中的性别字段取值只能是“男”或“女”,这样可以和学生表类似在性别字段上建立域完整性规则,从而实现用户定义的完整性。课程表中可以在课程号字段上建立主键,保证了该表中没有重复的元组出现,从而就可通过课程号来实现实体完整性。然而成绩表中的学号字段对应着多条元组,因此学号单独无法作为主键;同样课程号也对应着多条元组,因此当单独的某个字段已经无保证该表中没有重复的元组,在这种情况下,必须复合字段作为主键,因此可以选择使用学号和课程号的组合作为主键,这样就可以保证成绩表中不会出现重复的元组,从而通过复合主键来实现实体完整性。其次,成绩表中的学号虽然不能单独作为本表的主键,但它却是学生表中的主键,因此学号可以作为成绩表的外键,同时成绩表中的学号不能随便取值,只能参照学生表中学号的取值范围,这样通过学号这个外键可以实现了参照完整性;同理,成绩表中的课程号也不能单独作为本表的主键,但它却是课程表中的主键,因此课程号可以作为成绩表的外键,同时成绩表中的课程号不能随便取值,只能参照课程表中课程号的取值范围,这样就可以通过课程号这个外键实现参照完整性。系表中可以选择使用系号作为主键,这样可以保证本表中无重复的元组出现,从而实现了实体完整性。

2.3特殊业务规则设计

当一个学生毕业时系统应能够删除这个学生的基本信息及相应的成绩信息,这也是所谓的级联删除,在SQLServer2005中可以用触发器来实现这一特殊的业务规则。触发器顾名思义,当触发动作成功发生时自动执行。打个比方,触发动作相当于导火索,只有成功点燃导火索才能使炸药包爆炸。使用触发器必须分清楚哪些操作是触发事件,而哪些操作是触发器内部自动执行的动作。在学生信息管理数据库中,如果当删除学生的基本信息时,要自动删除其相应的成绩信息,那么首先删除该学生基本信息是一个触发动作且作用在stu表上;只有当成功删除该学生的基本信息后即导火索成功点燃之后,才能使触发器启动并自动执行其内部动作即删除其成绩信息,触发器应建立在stu表上,而触发器内部自动执行的动作应作用在score表。可以看出触发器在应用中,一般都会用到两个特殊的逻辑表即inserted表和deleted表。这两个表都是只读的逻辑表,它们动态驻留在内存中,在执行DML操作时这两个表才存在,且对它们的引用只能在触发器中实现,而当触发器工作完成后,这两个表也随之被删除,这两个表主要保存因用户操作而被影响到的原数据值或新数据值,在inserted表中存储新值,而在deleted表中存储旧值。对于insert操作来说只影响到inserted表;对于delete操作只影响deltede表;而对于update操作来说既影响inserted表也会影响到deleted表,它把新修改的值存入inserted表,而旧值存入deleted表。只有在触发器中才能捕获到这两个逻辑表,在触发器中通过引用表中的数据,能够实现级联删除;同理,也可以仿照上面所举的例子来实现级联修改。

3结语

总之,随着在校学生人数的增长,学生信息管理系统所处理的数据越来越大,如何有效地管理学生的各种信息,有效提高工作效率,是开发学生信息管理系统中首要考虑的问题。因此应根据实际情况,利用关系理论,设计出合理高效的学生信息管理系统中的数据库是开发学生信息管理系统的关键因素。

作者:杨军莉工作单位:陕西财经职业技术学院

上一篇:青少年防近健康信息管理 下一篇:物流配送信息管理模型设计研究