□文/董 军
(安徽国防科技职业学院 安徽·六安)
因为各高校学生人数的增多以及学生成绩管理工作的复杂性,人工管理学生成绩信息的效率越来越低。这种情况下,学生成绩管理系统就出现了。
需求分析是整个数据库设计中重要的一步,在这个阶段要充分地与用户沟通交流,了解与分析用户的需求。学生信息管理系统中涉及的主要人员有学生、教师、管理人员;主要的部门有教务处、系部。在需求分析时可以通过问卷调查、谈话等方式,了解用户的需求,最终绘制系统的数据流程图。
关系数据库中所有的数据都存储在关系表中,通过需求分析,我们可以在学生成绩管理系统中创建以下数据表(此处只列举主要的数据表)。(表 1、表 2、表 3、表 4、表 5)
表1 Teacher表结构
表2 student表结构
表3 course表结构
表4 grade表结构
表5 class表结构
索引是提高查询的主要方法,在图书管理系统中,因为图书数量的庞大,所以建立索引是必不可少的。在为表中的主键建立索引以后,系统会自动地在主键上创建聚集索引。除此之外,我们还可以为一些经常查询的字段上,创建非聚集索引。
索引创建以后会提高查询效率,但也会引起一些问题,如降低数据更新的速度、索引建后需要维护。所以,在创建索引时,要综合考虑其优缺点。可以参考以下原则为表中的列创建查询:(1)经常用于查询的列;(2)经常用于分组和排序的列;(3)在连接中常用到的列。
按照以上原则,我们可以为以下列创建索引 :Stu_Id、Stu_Name、Tea_Id、Tea_Name、speciality_Id、class_Id等。
存储过程是T-SQL语句的集合,能够实现特定的功能。使用存储过程,可以大大减少网络传输流量,提高应用程序性能,而且由于它只在第一次执行时被优化、编译。因此使用存储过程不仅可以极大地降低应用程序的实现难度,而且还可以极大地提高系统的运行速度、效率。SQL Server 2005中存储过程分为:系统存储过程、用户自定义存储过程、扩展存储过程三种。例如:在该系统中,我们可以创建存储过程实现按照学生姓名查询成绩。实现代码如下:
CREATE PROCEDURE grade_by_name
@name char(10)
AS
BEGIN
SELECT*FROM grade
WHERE Stu_Id=(SELECT Stu_Id FROM STU
DENT WHERE Stu_Name=@name)
END
触发器是在执行操作语句时自动执行的一种存储过程。触发器可以侦测到数据库内数据的操作,并自动地级联影响到整个数据库的操作,从而保证数据库数据的完整性和一致性。例如:在某一个学生退学删除学生基本信息以后,那么该学生相应的成绩信息也应该被删除。可以以下代码完成该功能:
CREATE TRIGGER STUDENT_DELETE
ON Student
FOR Delete
As
BEGIN
Delete from grade
Where stu_id=(Select stu_id from deleted)
END
[1]黄存东.数据库原理及应用.中国水利水电出版社,2011.1.
[2](美)Peter Rob,Carlos Coronel.张瑜,张继萍等译.数据库系统设计、实现与管理.清华大学出版社,2005.