视图与相关子查询在清理重复数据中的应用

时间:2024-03-22 点赞:49906 浏览:101930 作者原创标记本站原创

本文是一篇数据库论文范文,数据库相关毕业论文提纲,关于视图与相关子查询在清理重复数据中的应用相关硕士论文范文。适合数据库及计算机及参考文献方面的的大学硕士和本科毕业论文以及数据库相关开题报告范文和职称论文写作参考文献资料下载。

摘 要:在WEB+SQLSERVER应用程序中由于数据库设计不合理以及网络响应延时等问题可能造成数据表中大量存在重复数据.本文通过视图和相关子查询技术讨论了清理数据库中重复数据的方法.


关 键 词:SQLSERVER;数据库;视图;相关子查询

中图分类号:TP31.13文献标识码:A文章编号:1007-9599(2012)06-0000-02

一、引言

在WEB+SQLSERVER应用程序中进行数据库设计时,如果考虑不周有可能产生重复数据.比如,学生在填报报名信息时,如果主键使用了自动编号,却没有限制一个学生在一个考试批次中只能填报一次,就会导致同一个学生因为网络处理速度问题多次提交报名信息从而产生重复数据的问题.当然一开始应该考虑到产生这种问题的可能,通过技术手段避免类似问题的产生.但是一旦出现这种问题,必须对重复的报名数据进行清理,留下重复数据中的一条信息即可.本文以一个WEB系统为例,讨论数据库中出现重复数据的清理方法.

二、案例分析

在某个普通话报名测试系统的数据库中,设计了一个报名学生信息表(stuInfo),其部分列结构为:

id(序号列):intidentity(1,1)primarykeynotnull;

idCard(号列):char(18)notnull;

ExamNo(考试批次列):char(8)notnull.

从以上列结构的定义可以看出,实体完整性(主键)通过自动增长列id来标识.由于没有将idCard列和ExamNo列组合为主键,所以存在同一学生可反复报名参加同一批次考试的漏洞.经程序上线正式运行结果反馈,确实存在同一批次有大量重复的学生报名信息的现象.经调查访问,提交重复的报名信息是因为网络反应较慢、学生无意反复点击提交按钮所致.

(一)清理重复信息思路分析

由于idCard列和ExamNo列共同决定一个考生参加指定批次考试的报名信息,所以只要按照该两列分类汇总即可查询出有重复报名信息的记录.拒此,可确定到底是哪些idCard存在重复填报报名信息的情况.清理时只需要保证每组重复的信息中保留一条作为真正的报名信息即可,可采取保留重复数据中id最大或最小的那条记录的方法,其余全部删掉.

(二)解决方法

1.确定有重复报名情况的记录,将其创建为视图便于使用.

createviewstuReBaoMing

as

--查询并统计报名信息重复的号和填报次数,规则是同一号同一考试批次出现多于一次的统计结果

selectidcard,ExamNo,count(*)ascounts

fromstuInfo

groupbyidcard,ExamNo

hingcount(*)>1

2.创建视图,查询需要删除的重复数据记录,仅保留每个重复数据中的一条.

createviewstuReBaomingNeedDelete

as

--号包含在重复信息视图stuRebaoming的号集合中,且其id不是当前号所对应的重复记录中的最大值(即保留每组重复信息中的最大id号的记录)

select*fromstuInfo

whereidcardin(

selectidcardfromstuRebaoming

)

andid<>(selectmax(id)

fromstuInfobwhereidcard等于stuInfo.idcard

)

将2.2.1中查到的有重复报名情况的idcard带到2.2.2的查询结果,可以验证每组重复记录在清理时将会保留一条不被删除,以达到清理的目的.

3.从stuInfo表删除id包含在stuReBaomingNeedDelete视图中的记录,即删除应该被删除的的记录.

deletefromstuInfowhereidin(selectidfromstuRebaomingNeedDelete)

三、要点归纳

本例进行数据清理用到两个重要的数据库知识点:视图与相关子查询.

(一)视图.视图是一种查询,在实际查询中也以子查询方式运行,只是用了一个视图名代替子查询而已.视图使用比子查询更简洁、方便.

(二)相关子查询.相关子查询是一种特殊的子查询,子查询的查询条件通过外部查询获取值.相关子查询在复杂查询中使用很频繁,但在Update、Delete等数据操纵语言中同样可以使用.相关子查询不能与外部查询分开单独创建为视图.

四、总结

从本例可以看出,视图和相关子查询在数据库端配合使用可以完成很多复杂的运算,也从另一方面体现了SQLSERVER数据库较强的独立性;此外,相关子查询是数据库中一种非常有用的高级查询,不仅在数据查询语言中、更在数据操纵语言中发挥出更为强大的功能.熟练掌握并灵活应用SQLSERVER数据库端的各种命令,让数据库端能实现的功能尽量在数据库服务器完成,既降低WEB服务器端的运算压力,又减少数据在网络中的传送负荷,从而提高WEB+SQLSERVER应用程序的性能.

相关论文

重复数据删除降低企业成本

本文是一篇工程师论文范文,关于工程师自考毕业论文开题报告,关于重复数据删除降低企业成本相关本科论文范文。适合工程师及数据及金融危机方。

如何选择重复数据删除解决方案

本文是一篇数据论文范文,数据方面有关本科论文开题报告,关于如何选择重复数据删除解决方案相关毕业论文题目范文。适合数据及企业环境及解决。

中间性保险的重复赔偿问题

此文是一篇中间性论文范文,中间性类论文范例,与中间性保险的重复赔偿问题相关毕业论文参考文献格式。适合不知如何写中间性及被保险人及保险。

本科会计文题目查询

本文关于超市及资金及企业方面的免费优秀学术论文范文,关于超市方面论文范文素材,与本科会计文题目查询相关专科毕业论文范文,对不知道怎。

大学生科技活动与课程设计相结合

该文为关于科技活动类毕业论文题目范文,与大学生科技活动与课程设计相结合相关学生论文抄袭后果,可作为抄袭论文专业科技活动论文写作研究。