高校教务管理系统数据完整性约束的设计
2011-03-17刘兰青计三有
刘兰青 计三有
(1武汉理工大学物流工程学院,湖北武汉430070;2黄石理工学院教务处,湖北黄石435003)
0 引言
随着网络技术、信息技术的不断发展,高校教务管理系统在高校日常教务管理工作中的运用越来越普及,从单机管理模式到局域网的C/S模式,再从 C/S模式到广域网的 B/S模式,直到发展到今天较为成熟的B/S与C/S相结合的混合模式。模式的变迁使得教务管理系统中的数据管理由以往的管理员单一管理发展到多角色多用户的管理;由数据的单向流动发展到数据大流量交互式流动。使用数据库的用户或程序会对数据库中的数据进行大量的操作,这些操作可能对数据的完整性造成在潜在威胁或破坏,比如在教师的成绩录入过程中对缺考学生的成绩录入处理是录入0分还是“缺考”或“未考”,以往的很多做法是通过编写详细的用户操作手册规定教师录入时的操作规范,但这样的做法效果并不理想,通常在成绩的录入完成后进行成绩处理和统计时,往往有许多不规范的数据进入数据库。数据库对于这些问题应是先行处理,而不是事后做出反应,即数据库应通过数据完整性约束对用户数据进行判断,并拒绝不满足条件的数据。本文对教务管理系统中的数据完整性约束设计做出相关的探讨和实现,有效维护了教务管理系统中数据的完整性和安全性,从而保证了教务管理系统有效、准确地运行。
1 数据完整性约束
数据完整性是指数据库中数据的正确性、有效性和一致性。正确性是指数据的合法性;有效性是指数据是否在定义的有效范围内;一致性指同一事实的2个数据应相同[1]。数据完整性包括:实体完整性、参照完整性、用户自定义完整性[2]。实体完整性指组成主键的属性上的值不能为空;参照完整性指一张表中的外键值要么为空,要么与另一张表中的主键值相同,其实质就是不允许引用不存在的实体;用户自定义完整性指用户针对具体的数据要求,设置完整性规则。在SQL Server2005中为确保数据完整性首先采用约束,约束就是一种限制,并把这种限制放在列级别或者表级别,而数据类型和触发器是保证数据完整性的其他手段[3]。
在SQL Server2005中实现约束的方式有很多种,但每一种都属于域约束、实体约束或引用完整性约束这3类约束之一[3]。域约束涉及一个也可能是多个列,它确保某一列或一组列满足特定的标准;实体约束是关于单独行的,它是要求所有行的某个列或列的组合具有唯一值的约束;应用完整性约束是一列的值必须与另一张表的一个列中的值匹配。成绩表如表1所示,若要限制成绩列的值大于或等于0,可以用域约束。成绩表中的主键由选课号和学号组成,可以用实体约束。成绩表中的学号列中的值来源于学生信息表中的学号,课程号列中的值来源于课程信息表中的课程号,因此可以对学号和课程号列创建引用完整性约束。
表1 成绩表
2 高校教务管理系统中数据完整性的设计
高校教务管理系统数据库的设计要充分考虑到高校教务管理工作的业务流程、管理内容和管理目标,从高校教务管理的数据流向出发,根据各项数据自身的特点,以维护数据完整性为保证,使得教务管理的有效性、正确性、及时性得以体现来进行设计。
根据各高校教务管理工作的共同特点和笔者近几年从事教务管理工作的经验,将高校教务管理系统数据库数据完整性设计如下。
2.1 公共代码表的数据完整性设计
公共代码表部分主要是涵盖教务管理工作中全局性、统领性的工作数据,包括校区代码表、学院代码表、专业代码表。校区代码表、学院代码表、专业代码表分别如表2、表3、表4所示。
表2 校区代码表
表3 学院代码表
表4 专业代码表
以专业代码表为例,专业代码列为主键,主键即是每一行的唯一标识列,一个表最多只能有一个主键且主键不能为空。学院代码列为外键,定义外键的专业代码表称为引用表,外键引用的表学院代码表称为被引用表,当向引用表中插入记录时在被引用表中的被引用列上必须有与之匹配的记录,因此外键属于引用完整性约束。
2.2 基础代码表的数据完整性设计
基础代码表部分是涉及教务管理工作中基础性、日常性的工作数据,包括课程信息表、教室信息表、学生基本信息表、教师信息表等。学生基本信息表如表5所示。
表5 学生基本信息表
其中性别列采用Check约束,用以限制输入到性别列中的数据为男或女,从而保证数据库中数据的域完整性。身份证号列和考生号列采用Unique约束,以保证该2列的值均具有唯一性,防止在列中输入重复值。Unique约束主要用于非主键值。
2.3 业务代码表的数据完整性设计
业务代码表部分主要是在公共代码表和基础代码表设计的基础上针对教务管理工作的各项内容进行抽象,并设计出数据库表格以及相关操作,主要包括:培养计划表、学期教学计划任务表、学生选课表、学生成绩表、学籍异动表、毕业生信息表和一些保证数据完整性的存储过程和触发器的设计。假设某专业的培养计划进行了调整,这时除了应删除培养计划表中的原有课程和增加调整后的课程,还应考虑到原有课程可能已安排了学期教学任务,需要删除该专业原有课程的学期计划任务表中信息,触发器的设计和使用对这样类似的操作就能轻松实现,很好的维护和保证数据的完整性。
3 数据完整性在SQL Server 2005环境下的实现
下面以专业培养计划调整为例简述在SQL Server 2005环境下的数据完整性设计的实现。
培养计划表的创建:
当培养计划调整时,删除培养计划表中的某一门课程信息,若这门课程已做了任务落实,则需要同时删除学期教学计划任务表中的相关信息,这里可以通过设置级联删除触发器来自动完成该操作。
级联删除触发器代码实现如下:
4 结束语
本文对教务管理系统中数据完整性约束进行了较为深入的探讨和分析,根据教务管理工作的特点和规律对教务管理系统的数据库和数据完整性进行了设计,并通过 SQL Server2005得以实现。掌握数据完整性对数据库系统设计人员来讲非常重要,它保证系统能够正确、有效的运行,大大提高系统的可靠性。
[1] 陈长海.数据完整性概念及其基于SQL SERVER的实现[J].中国人民公安大学学报:自然科学版,2006,12(2):78-79
[2] 王能斌.数据库系统原理[M].北京:电子工业出版社,2000
[3] Robert Vieira.SQL Server 2005高级程序设计[M].北京:人民邮电出版社,2008