解释:
数据库可以方便的进行数据的增、删、改、查。并且能够清晰的记录所有想要的数据内容个,在之前的混乱的文件存储的基础上有了很大的提高。
数据库实现了结构化的固定格式语句,只需要通过相应的insert、update、modify、alter等语句快速的实现数据的 *** 作。
可以通过sum、agv、desc、asc等关键字,快速的实现统计,排序等功能。
备注:根据实际情况选择是否需要数据库即可,现在的大数据已经不再依赖于数据库,所以只能说,随着技术的发展,只有能实现功能,性能还好,那么用什么实现都是可以的。
一、规范数据入库流程
规范化的 *** 作流程是避免 *** 作错误产生的有效手段。据此,对航空物探数据入库过程中的数据质量检查内容和方法进行了分析,归纳出系统检查9项和拓扑检查5项(表5-5)。考虑到在数据入库过程中,需要给数据采集人员授予数据库数据编辑和删除权限(以便编辑录入的错误数,删除导入的不正确数据),在编辑或删除数据库数据时,有可能错误地编辑或删除已归档数据,破坏归档数据的完整性和正确性等因素,提出了航空物探数据库入库数据质量检查的规范化流程(图5-2)。
表5-5 入库数据系统检查和拓扑检查
1)创建项目,在数据入库前先创建项目,按项目导入或录入数据。
2)入库前系统检查,导入或录入的入库数据必须通过系统的入库前检查(数据唯一性、数据类型、缺项检查),才能保存到采集库中。
3)数据进入采集库后,须接受入库后系统检查。若是空间数据必须接受拓扑检查,再与原数据文件进行逐字节比较检查,均通过后,进人工检查。
4)人工检查与人工复核,对项目概况数据、空间要素类数据(图形和属性)、文字数据、图件数据、可制成图件的对象类数据应进行人工检查与人工复核。检查方法是人工比对。该方法劳动强度大,检查人员要有较强的责任心才能发现其中的错误。人工检查与人工复核的工作内容相同,系统要求人工检查与人工复核必须由不同人员完成,加强数据检查力度,尽量消除人为因素造成的错误。
图5-2 规范化的数据入库流程
5)系统归档检查,对入库数据的非空字段进行的检查。系统归档检查通过后,入库数据可归档存入资料库。
经测试,严格按照该数据入库流程开展数据入库工作。航空物探资料库数据与入库前原数据文件数据的一致性可达100%。
该流程将入库数据与资料库数据分离,单独建立一个数据采集数据库(简称“采集库”),把待入库数据暂存在采集库中。入库数据在采集库中接受各项质量检查和编辑,或删除 *** 作,直至达到数据入库质量要求,归档进入资料库(进入资料库的数据除数据库管理员外其他用户是无权对其实施编辑或删除 *** 作的),保证资料库数据的一致性和完整性,为整体提高航空物探数据库的质量提供了保障。
二、规则化数据检查方法
50多年来航空物探取得大量的基础资料和成果资料,这些资料在地学基础研究、油气资源评价等领域发挥的重要作用日益显现。人们越来越重视利用航空物探资料来解决所遇到的地质问题等,同时人们也很想了解所用资料的来源、质量等信息(如资料的测量年代、测量方法、仪器精度、飞行高度、定位精度,数据处理方法等),来评价问题解决的可信度。这也正是本信息系统建设者想要给用户提供的。历史已既成事实,许多与资料质量有关的信息,例如在使用数字收录以前有不少项目的测量仪器精度、飞行高度、定位精度等现已处可寻。
过去的不足证明现在的进步,尊重历史尽力适应未来的技术发展,是本信息系统建设所遵循的宗旨。因此,根据资料的实际情况,提出了入库数据有效性检查的规则化方法,较好地解决了不同年代资料信息不齐全的数据入库质量检查问题。
按照通常做法,在软件代码中直接编写出每个数据库表需要做检查字段的有效性检查代码。
//通常方法的数据进行质量检查
//选择表名,分别为每个表编写检查代码
Switch(表名)
{
Case表名1:
检查数据//获取表的检查数据
Switch(表.字段名)
{
Csae表.字段1://如字段检查项包括非空检查、范围检查等
//依据不同检查规则检查数据
If(检查数据[表.字段1]!=空)…//非空检查
…//其他检查
If((检查数据[表.字段1]>值1)&&(检查数据[表.字段1]<值n))//范围检查
Break
…//对应不同字段名
Csae表.列名n:
…//对应字段数据检查
Break
}
Break
…//对应不同表数据检查
Csae表名n:
…//对应表数据检查
Break
}
本系统采用规则化方法检查入库数据。在完成数据库结构设计之后,针对每张数据库表中每个字段制定了入库数据正确性的检查规则,建立动态检查规则表,针对不同的检查规则编写检查函数,从数据库中获取被检查表数据库字段的检查规则,对入库数据进行检查的。规则化方法代码实现的示例如下:
//本系统对表数据进行质量检查
获取检查数据//检查数据包括表名、字段名、数据
获取规则数据//检查规则包括字段名、检查类型等
获取规则值数据//检查规则对应的值
//依据不同检查规则检查数据
Switch(规则数据[检查规则])
{
Case检查规则.规则1://非空检查
If(检查数据[检查字段名]!=空)……
Break
…//其他检查规则
Csae检查规则.规则n://选择范围检查
If(规则值数据is包含检查数据[检查字段名])…
Break
}
系统检查采用传统检查方法实现代码量约15345行(表5-6),代码开发工作量很大,且灵活性差,不利于后期代码维护和扩展,如添加表或表添加检查字段后都需要对代码进行重新修改和编译。而本系统的规则化方法代码量仅495行(表5-6),只有传统检查方法代码的3.22%,且添加表或表添加检查字段后不需要修改代码用户在数据入库时,根据实际需要直接修改检查规则表即可。
表5-6 系统检查两种实现方式代码量对比表
Private Sub 入库_click()'默认你的后面的textbox的名称就是前面的名称
'这里的数据类型可能要转换,比如价格可能要转换成double(CDbl()),购买日期转行成日期时间型(CDate())
'假设你的数据表是aa,字段名和界面显示是一样的
Dim Rs As ADODB.Recordset
'在插入前建议你在aa表里查查这条记录是否已经存在,如果已经存在则给出提示(查询条件看你怎么设置的主键了)
Rs = objADO.GetRs("insert into aa (书名,定价,作者,图书类别,出版社,介质,购买日期,内容简介) values (" &书名.Text &"," &vbCrLf &_
"定价.text &", " &作者.text &", " &图书类别.text &", " &出版社.text &", " &介质.text &", " &购买日期.text &", " &内容简介.text &")
'这里如果表aa的字段多于界面显示的也没关系,只会给你aa后面括号里的字段赋值,这里后面values的顺序必须和前面的对应
'正确插入后建议给个提示,同时看看有没有必要把界面的所有值清空(图书类别.text = "")
'这里的objADO建议这么定义Public objADO As SqlServer,有别的查询也可以直接用,你自己怎么定义的就换成你自己的
'GetRs的定义在下面,你也可能是dim strsql as string,然后strsql = (上面的插入语句),然后用下面Rs.Open strSql, Conn, adOpenStatic, adLockReadOnly的方法,都行的,就看你自己怎么写的了
End Sub
Public Function GetRs(ByVal strSql As String) As ADODB.Recordset'通过执行SQL语句返回记录集
Dim Rs As ADODB.Recordset
On Error GoTo Err0
If Not OpenDB Then
Exit Function
End If
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient '使用本地(客户端)游标,这样Rs.RecordCount属性才能正确返回记录集行数
DoEvents
Rs.Open strSql, Conn, adOpenStatic, adLockReadOnly
Set GetRs = Rs
Exit Function
Err0:
If InStr(1, Err.Description, "通讯链接失败") >0 Then
Set Conn = New ADODB.Connection
LocalStat = "断开" '设置本地数据库连接状态
End If
MsgBox Err.Description
End Function
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)