基于游标的元组重构应用研究

2016-12-16 01:07许俊
四川职业技术学院学报 2016年4期
关键词:游标元组学号

许俊

(四川职业技术学院计算机科学系,四川 遂宁 629000)

基于游标的元组重构应用研究

许俊

(四川职业技术学院计算机科学系,四川遂宁629000)

抽取数据库关系模式的多个元组的多个属性值进行重构,得到单个元组单一属性的实体表示.本文以三个模式为实例,详细分析了这类关系模式的结构,设计元组重构算法,并基于游标方案实现.

数据库;元组;重构;游标

1 关系模式设计及需求

关系模式Student、Course、ChooseCourse的设计如下:

Student表设计

Course表

ChooseCourse表

三个模式的关系图如下:

图中ChooseCourse为外键表,Student ID引用Student(student ID),CourseID引 用Course(CourseID).

三个模式实例的模拟数据如下:

student表

CourseName表

ChooseCourse表

由三张表的模拟数据生成需求成绩报表,把每个学生的选修课程、成绩组合成单一列,再与学号、姓名、名次、平均分四列重构为单一元组,其模拟形式如下:

?

依据报表形式,设计成绩报表Repor ts关系模式如下:

?

2 关系模式分析

在ChooseCourse表中存放了学生学号Student ID、课程编号CourseID、课程成绩Mark,Student表和Course表与ChooseCourse表之间都是1:n关系,即一个学生可选修多门课,在ChooseC-ourse表有该学生多条选课成绩记录,一门课可被多名学生选修,在ChooseCourse表有该课程的多条学生成绩记录.Repor ts表一行记录的学号、姓名直接引用Student表可得,名次和平均分是对ChooseCourse表Mark列直接计算、排名得到,科目详细列必须是某个学生实体的全部选修课程名和成绩完整组合.成绩报表Repor ts将来可以链接到MSWord进行邮件合并打印每个学生成绩单,或发送Emai l,也能够为MSExcel提供数据源,方便用户二次数据透视.

3 元组重构的算法

成绩元组数据重构就是提取关系模式ChooseCourse中多个元组、多个属性值重新组合为单一元组、单一属性的过程.其算法流程图如左:

数据重构算法为双重循环结构.首先查询计算全部学生的学号、名次、平均分,在外层循环依次提取每个学号,然后传入内层循环,作为条件,查询一个学生关联元组的所有选修课程名、成绩,重构为该学生的科目详细描述属性,最后在外层循环把此单一属性值与学号、名次、平均分重构为单一元组,即为一个学生的成绩记录.当外层循环执行完毕后,每个学生的成绩记录作为单一元组重构成功.

4 元组重构的T-SQL实现代码

因为对于每一个学号Student ID列值,在查询到与其匹配的集合后,必须逐行取出CourseName和Mark,单独处理一行,故用基于游标的解决方案实现.

--内层游标,以外层游标的Student ID作为内层游标的查询参数,查询姓名、课程名、成绩.

实现代码采用游标双重嵌套,外层游标查询学号、名次、平均分,内层游标组合课程名和成绩为科目详细描述单一属性.每个学生的选修成绩记录在外层游标的最后完整组合,持久化到Repor ts表.

[1]许俊.对非1NF关系查询的探讨[J].四川职业技术学院学报,2013,(5)

[2]许俊.对Oracle多表关联更新的应用研究[J].四川职业技术学院学报,2015,(2)

[3]苏冠贤.数据库游标对档案著录的创新[J].云南档案, 2010,(12).

责任编辑:张隆辉

TP311

A

1672-2094(2016)04-0177-03

2016-06-12

四川省教育厅重点科研项目《基于NoSQL大数据技术的信息搜索方案研究》(编号:15ZA0348)、《网络大数据测试基准研究》(编号:15ZA0349)成果之一.

许俊(1969-),男,四川蓬溪人,四川职业技术学院副教授,硕士.研究方向:软件工程.

猜你喜欢
游标元组学号
开绕组直线游标永磁电机的矢量控制研究
MySQL数据库下游标的设计与应用
Python核心语法
测量不确定度在游标式轮对内距尺检定装置中的应用
海量数据上有效的top-kSkyline查询算法*
我们来打牌
尝试亲历的过程,感受探究的快乐
基于减少检索的负表约束优化算法
学生学号的妙用
SQL数据库中基于游标的数据更新