下载此文档

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


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
视图与相关子查询在清理重复数据中的应用摘要:在WEB+SQLSERVER应用程序中由于数据库设计不合理以及网络响应延时等问题可能造成数据表中大量存在重复数据。本文通过视图和相关子查询技术讨论了清理数据库中重复数据的方法。关键词:SQLSERVER;数据库;视图;相关子查询中图分类号::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最大或最小的那条记录的方法,其余全部删掉。(二)解决方法 ,将其创建为视图便于使用。 createviewstuReBaoMing as --查询并统计报名信息重复的身份证号和填报次数,规则是同一身份证号同一考试批次出现多于一次的统计结果 selectidcard,ExamNo,count(*)ascounts fromstuInfo groupbyidcard,ExamNo havingcount(*)>1 ,查询需要删除的重复数据记录,仅保留每个重复数据中的一条。 createviewstuReBaomingNeedDelete as --身份证号包含在重复信息视图stuRebaoming的身份证号集合中,且其id不是当前身份证号所对应的重复记录中的最大值(即保留每组重复信息中的最大id号的记录) select*fromstuInfo whereidcardin( selectidcardfromstuRebaoming ) andid<>(selectmax(id) fromstuInfobwhereidcard=st

视图与相关子查询在清理重复数据中的应用 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人ktdmzug142
  • 文件大小47 KB
  • 时间2019-11-09