松嫩平原地下水资源及其环境问题调查空间数据库包括野外数据采集系统、数据录入系统、数据库信息应用系统、数据库检查验收系统和综合成果管理系统五个组成部分。系统具备了数据录入、编辑、管理、浏览、查询、质量控制等功能,同时可以进行简单的数据处理 *** 作。
属性数据库的录入是按照《水文地质环境地质调查信息系统使用手册》中的数据格式及要求在数据录入系统中完成的。
空间数据库的建设是按照《地下水资源调查评价数据库标准》的具体要求进行的,调查资料和收集资料的录入是主要由黑龙江和吉林两省地质调查院完成,之后实施单位进行汇总、检查。
一、工作流程
包括资料准备(图形图像资料、文字资料、专业数据资料的收集、图件预处理、图件的分层及清绘处理)、数据采集、属性表编制、图形数字化、属性库的录入、图形属性挂接、图形编辑修改、图形误差校正、图形投影转换、建立图库、质量检查、成果汇交、文档管理等工作(图14—1)。
二、建库方法
(一)资料准备
资料准备工作包括1∶25万地理底图的转化及修编;资料的收集、筛选、分类、整理;熟悉数据库信息系统和数据库标准等。首先对工作区内以往的水文地质环境地质资料进行收集、整理、筛选,进行资料的可靠性、准确性及实用性分析,把内容完整、数据可靠、内容可用的资料分类挑选出来,作为准备入库的资料。由于收集的原始资料时间跨度大,格式、资料内容与数据库要求的格式不一致,在录入之前必须对收集资料内容进行整理,有的还需要进行单位换算,提炼出所需资料。对实测资料有缺少项目等情况,及时与调查人员联系,进行了必要补充。将整理好的收集资料及实测资料,按照技术要求进行统一编号,为了确保图元编码的唯一性,统一编号由17位数字组成,即:经度8位+纬度7位+识别码2位。
(二)属性数据的录入与检查
将整理、筛选出来的资料,分门别类地分配给不同的工作人员进行计算机录入。由于所录入资料的专业性较强、数据量大、内容参差不齐,录入时需要随时进行分析,因此入库资料全部由专业人员完成,以保证入库数据的质量和准确性。地下水资源调查的数据表是一对多个主从表结构关系,因此在数据录入过程中,必须先输入主表数据,再录入从表数据。特别是野外水文地质点基础表是所有相关数据关联的基础,在输入新的调查点资料之前,必须先输入该表中的数据。为了保证录入数据的质量,采取的保障措施是每录入完一份资料马上与原始资料对照检查,避免时间过长容易忘记。
图14—1 空间数据库建设工作流程图
1水文地质钻孔综合表的录入
按照数据库提供的录入表内容,主表水文地质钻孔综合表包括地层描述、井径变化、井管结构、填砾止水、测井曲线和含水层划分6个分表。
由于以往资料各家使用的钻孔综合成果表的内容表达方式不尽相同,与数据库中给定的表格内容不是一一对应,特别是松嫩平原的含水层多,白垩系含水层划分不明确,所以这部分资料内容录入整理的工作量很大。在收集到的钻孔资料中给出的位置坐标全部是大地坐标,首先要把大地坐标转换成经纬度,然后进行统一编号,再进行录入。由于钻孔综合成果表中内容多,数据库表中所需的内容要到成果表中各项目中查找,查找起来需要很长时间,并且有一些项目需要进行计算,如填砾厚度,需要用孔径和井径进行计算;钻孔变径描述、钻孔井管结构、水文地质钻孔填砾止水结构、地质钻孔含水段厚度等是在柱状图中按比例尺量算的,然后按比例尺换成深度。含水层厚度的确定,在钻孔综合成果表中给出的含水层厚度是整个钻孔揭穿的含水层总厚度,但数据库需要分段填写,这部分数据根据岩性描述确定出含水段的位置,计算含水层厚度,分段含水层的厚度之和与成果表中的含水层总厚度保持一致。在录入过程中,钻孔资料按原始数据100%录入,不遗漏每一项数据(图14—2、图14—3)。
图14—2 数据库中钻孔资料关联表
图14—3 数据库中的钻孔资料
2抽水试验成果表的录入
收集的抽水试验资料一般都在钻孔综合成果表中,没有原始的抽水试验记录,在钻孔综合成果表中只有不同落程抽水试验总的观测时间、稳定时间、水位恢复时间、水位降深、涌水量及抽水试验成果。为了避免在录入完成综合成果表后,漏录抽水试验成果表,在录入过程中,对钻孔资料首先录入抽水试验成果表,然后再录入综合成果表。对于本次获得的实测资料,由于观测记录中涌水量单位为m3/d,数据库中要求为L/s,必须先进行换算,然后再进行录入,工作比较繁琐,在转换过程中容易出现数据错误,所以在录入前先进行涌水量单位换算,然后再进行录入和检查。本次施工的钻孔抽水试验则依据原始抽水试验记录录入。
3水、土样品采集记录表的录入
(1)野外水样采集记录表的录入
野外采样是按年度工作区分三年完成的,录入工作也是按年度进行。地下水水质分析样包括水质全分析、简分析、微量元素分析、同位素分析样和地表水样。野外水样采集记录表与水质分析综合成果数据表及同位素测试综合成果数据表是一套相关联表(图14—4),首先录入测试数据表,然后录入野外水样采集记录表,再录入水质分析综合成果表和同位素测试数据。
(2)野外土壤样品采集记录表的录入
该表包括土壤易溶盐分析和土壤污染分析成果表,在录入过程中先录入野外土壤样品采集记录表中相关内容,然后录入土壤易溶盐分析调查表中的各项内容。
4野外调查卡片的录入
野外调查卡片随着野外工作的开展按年度分期录入,野外工作分三年进行,录入过程也分三年进行。
(1)机民井调查记录表的录入
在野外调查过程中,不同地区分潜水和承压水分别进行调查。在录入中有时同一个点既调查了深层水、又调查了浅层水,同一个点,两个不同的内容,这时就要特别注意,不能将第一个点替换掉,只能用统一编号来区分。调查点平面位置示意图和地形地貌、含水层剖面图采用灰度扫描,扫描精度为300 dpi,扫描后部分进行矢量化,生成JPEG图像插入录入系统中,部分直接生成JPEG图像插入录入系统中(图14—5)。
图14—4 数据库中水样采集记录与水质分析综合成果数据表
图14—5 数据库中机民井调查表
(2)土地盐渍化野外调查表的录入
在录入该表格时,表中有“年内最高水位”和“年内最低水位”,由于在野外仅靠一次观测没办法查明这两项内容,所以该项内容录入不全或不够准确。表中的样品采集情况一栏,字段数少、取样较多,有的时候各取样深度不能全部录入。
表中调查点平面示意图,采用扫描精度为300 dpi,进行灰度扫描,扫描后进行矢量化,生成JPEG图像插入录入系统中(图14—6)。
(3)地表水点综合调查数据表的录入
地表水体调查点包括湖泊、河流等调查点,按照野外提供的表格直接进行录入,地貌、地质剖面素描图及调查点平原位置示意图采用扫描精度为300 dpi,灰度扫描,扫描后部分进行矢量化,生成JPEG图像插入录入系统中,部分直接生成JPEG图像插入录入系统中(图14—7)。
(4)地下水污染综合调查表的录入
该项工作只在黑龙江省做了少量调查,已全部录入,调查点平面位置示意图,采用精度为300 dpi,灰度扫描,将扫描图直接生成JPEG图像插入录入系统中。
(5)泉点野外调查记录表、水源地综合调查表、野外水文地质点调查表、野外水文地质调查路线表、土地荒漠化野外调查表的录入。
这些表的数据整理及录入均按照录入表式填写录入,所涉及的剖面或平面示意图采用精度为300 dpi,灰度扫描,将扫描图直接生成JPEG图像插入录入系统中。
图14—6 数据库中土地盐渍化野外调查表
图14—7 数据库中地表水综合调查表
5地下水观测井基本情况表的录入
这部分内容按照数据库中提供的表格逐项目录入,主要录入了地下水位人工监测数据记录表、地下水位监测数据成果汇总表、地下水水温监测原始记录表,地下水位监测资料从2003年8月至2005年8月,每5天监测一次,共监测2年。
6地下水位统测野外记录表的录入
该表录入的资料为2003年、2004年、2005年不同时期的统测资料,该表在录入过程中,由于技术要求下达较晚,野外统测时,定位点坐标精度差,资料取得后,录入人员将数据全部录入数据库中,待技术要求下达后,对统测点又重新进行野外定位,使得录入资料全部重新录入。
7地下水位统测汇总表的录入
该表由地下水位统测野外记录表自动生成,共体现了2003~2005年3年4次统测资料,2003年丰水期1次、2004年枯、丰水期2次统测、2005年枯水期1次统测。在3年4次的统测中,有一部分统测井由于某种原因,不能在同一个井连续进行,只能换成其他点进行统测。有一些点坐标没有改变,只是水位及标高改变,这一类点,在录入过程中在井口标高和井深中都已经填写上了新换点(图14—8)。
8试坑渗水试验观测记录表的录入
该表录入了2003年和2004年资料,该项工作做得不多,资料较少,但作为第一手资料,比较宝贵。内容按数据库中的表格要求录入。试坑平面位置示意图采用扫描精度为300 dpi,灰度扫描,扫描后进行矢量化,生成JPEG图像插入录入系统中(图14—9)。
9汇总与数据备份
由于数据库录入工作量大、内容多,必须由多人分工完成,因此要通过数据汇总将多台机器上的数据库中的数据汇总到一个数据库上。分头录入的资料一般每周汇总一次,汇总时由汇总人员对录入的资料进行抽查,一般抽查率在20%~30%。为了避免数据丢失,在进行数据汇总前先将数据做一备份,以防万一。
(三)图形数据库的建立
空间图形数据库的建立分为7个阶段进行:
第一阶段:完成属性库的录入工作。属性数据录入的完成是《地下水资源调查应用系统》中自动生成各类调查点图层的前提。
图14—8 数据库中地下水位统测数据汇总表
图14—9 数据库中试坑渗水试验综合成果汇总表
第二阶段:编绘1∶25万地理底图。根据技术要求,进行修编,涵盖了主要交通干线、河流、居民地、省、市、县界线、松嫩平原界线等。图面清晰明了,满足绘制成果图件的要求。
第三阶段:成果图件矢量化。每张成果图件均由编图人员在喷绘的1∶50万地理底图上绘制,然后采用300 dpi扫描,形成栅格化文件,再由建库人员利用Map GIS将图像配准到已矢量化、修编好的地理底图上,所有经纬网交叉点都作为控制点采集对象,保证了图像配准的精度,最后完成数字化制图。
第四阶段:检查、修改成果图件,熟悉《地下水资源调查应用系统》和《地下水资源调查评价数据库标准》对地下水资源数据库图层的划分及其属性结构,做好图形入库的准备工作。
第五阶段:从已有的成果图件中提出数据库中所需要的图层,并赋予属性。每个图层文件都要在Map GIS中设置好投影参数,并且与成果图件投影参数保持一致,均为兰伯特等角圆锥平面直角坐标系。
第六阶段:将属性库文件和成果图件中提出的图层文件导入《地下水资源调查应用系统》中。具体 *** 作如下:①在该系统中增加一个新工作区,连接属性数据库文件,设置投影参数为兰伯特等角圆锥1∶25万平面直角坐标系;②导入已修编好的地理底图;③根据系统中空间数据库部分的目录树所列图层和属性库中各类调查点的数据,依次生成点图层,并且由系统自动挂接属性文件;④将已编辑好的线、区图层导入本系统;⑤更新地图参数,系统会将各类图层重新投影为新建工作区时所设的投影参数,保证了各类图层在空间位置上相对一致性(图14—10~图14—13)。
图14—10 数据库中的地貌分区图层
图14—11 数据库中潜水含水岩组岩性分区图层
图14—12 数据库中潜水富水性分区图层
图14—13 数据库中2004年丰水期水位埋深等值线图
一、规范数据入库流程
规范化的 *** 作流程是避免 *** 作错误产生的有效手段。据此,对航空物探数据入库过程中的数据质量检查内容和方法进行了分析,归纳出系统检查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),只有传统检查方法代码的322%,且添加表或表添加检查字段后不需要修改代码;用户在数据入库时,根据实际需要直接修改检查规则表即可。
表5-6 系统检查两种实现方式代码量对比表
1空间坐标系统
坐标系统:采用1954北京坐标系,高斯-克吕格投影6度带投影,带号15,中央经线85°30′,单位为m。
高程基准:采用1956黄海高程系。
2建库工作程序
在实际 *** 作过程中,采用的建库流程参考国家数字地质图建库标准,结合西天山地区1:25万地质图图幅要素的实际情况,创建GeoDatabase数据库,构建各要素集和要素类,数据库结构如图4-3所示。在矢量化过程中,采用以线性地质要素(断层,地质界线,岩性边界等)矢量为起点,以线跟踪,线拷贝为中心,最后以线转面(Feature to Poly-gon)的方法生成各面类地质图层,然后对临时面文件按各地质要素进行分类,导入各图幅的标准地质数据库中,再进行属性数据的录入。
在建库过程中,第一步,对扫描地质图进行几何校正。第二步,在ArcGIS Catalog平台上,按照前文讨论的各地质要素数据集,各地质要素字段创建数据库表结构。在统一的建库标准下建立完整的西天山地区地质图数据结构。每一幅地质图形成一个单独的地质数据库(GeoDatabase),每个库包含相同的数据结构和字段类型,每一个属性表形成一个图层,存放对应的地质几何要素;并在各自的数据库下增加临时线文件、临时面文件,用来保存第一步线形矢量化后未分类的图形数据。
在矢量化过程中,我们首先对断层要素进行矢量,因为断层线性平滑,多数断层是地层岩性的公共边界。断层矢量完成后紧接着对所有岩性边界进行矢量,包括沉积岩地层、侵入岩地层和变质岩地层边界,岩性边界数据存入临时线文件,是一个单独的线要素图层,在矢量时,如果断层恰好是岩性边界的界线或公共边,这时,为保证几何图形拓扑一致性,我们采用 “线跟踪” 或 “线拷贝” 的方法将公共边界的断层线直接拷贝至 “临时线” 图层。凡是作为公共边界的线,我们都采用同样的方法进行矢量,比如 “地质界线”图层与其他面状要素的公共边界等。
完成各岩性界线的矢量后,检查若没有遗漏,利用ArcGIS空间分析模块的 “线转面”(Feature to Polygon)工具,将临时线文件转换为临时面文件,设定闭合容差为10m。转换完成后按照沉积(火山)岩、侵入岩、岩墙进行面状要素的分类,逐一导入各自相对应的单独的图层中。对于脉岩(面)要素、火山机构和矿点(点)要素基本很少与其他图层共用边界,因此,直接对这些要素单独进行矢量便可。最后进行图形的质量检查,包括划分岩性类别检查,几何拓扑检查,检查无误且没有遗漏后,导入标准库中。这样基本完成了一幅扫描地质图各类地质要素的图形矢量工作,下一步,主要参考图例、柱状图和地质图说明书进行属性录入,如流程图4-3所示。最后,检查属性数据的录入完整无误后,便可进行下一图幅的矢量工作。
对于化探和航磁的数据处理可以采用多种方式,本次研究中主要采用克里金插值和主成分分析对化探、航磁数据进行处理,并结合地质矿产图说明书相关内容将化探、航磁数据与致矿有关的信息存入空间数据库中。上述数据的生产均在ArcGIS平台上完成。
3空间数据库内容
本次资源潜力评价空间数据库包含五个要素数据集,15个要素类以及至少6个栅格数据。
地理要素数据集:使用国家基础地理信息中心的1:25万地形数据库中的水系、政区、居民地和交通要素类四个要素类。
基础地质要素数据集:包括1:25万区域地层、侵入岩、火山岩、变质岩、构造分区、断层、矿产7个要素类。其中,资源潜力评价预测底图数据由地层和侵入体所定义的构造相单元属性通过数据融合直接生成,各要素类中所包含的属性内容及相应的数据类型应和区域成矿模型及资源评价所需要素保持一致,实现模型要求与信息的对称,各属性编码参考 《全国矿产资源潜力评价数据模型数据项下属词规定分册》。
物化探要素数据集:包括1:5万航磁要素类、1:5万地面磁法要素类、1:20万区域化探要素类、1:5万区域化探要素类四个要素类。
物化探栅格数据集:主要存储由物化探要素类通过克里金插值转换而来的栅格数据以及在空间分析过程中产生的栅格数据。
遥感栅格数据集:主要用于存储研究区ETM+卫星数据,是近年来在地质矿产应用特别是填图和蚀变信息提取占据主流地位的遥感数据源。
4数据库质量控制
空间数据库在数据完整性、逻辑一致性、位置精度、属性精度、接缝精度均要求符合中国地质调查局制定的有关技术规定和标准的要求。
数据库设计包括六个主要步骤:
1、需求分析:了解用户的数据需求、处理需求、安全性及完整性要求;
2、概念设计:通过数据抽象,设计系统概念模型,一般为E-R模型;
3、逻辑结构设计:设计系统的模式和外模式,对于关系模型主要是基本表和视图;
4、物理结构设计:设计数据的存储结构和存取方法,如索引的设计;
5、系统实施:组织数据入库、编制应用程序、试运行;
6、运行维护:系统投入运行,长期的维护工作。
一、数据库设计过程
数据库技术是信息资源管理最有效的手段。
数据库设计是指:对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。
数据库设计的各阶段:
A、需求分析阶段:综合各个用户的应用需求(现实世界的需求)。
B、在概念设计阶段:形成独立于机器和各DBMS产品的概念模式(信息世界模型),用E-R图来描述。
C、在逻辑设计阶段:将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式。然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图(VIEW)形成数据的外模式。
D、在物理设计阶段:根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式。
1 需求分析阶段
需求收集和分析,结果得到数据字典描述的数据需求(和数据流图描述的处理需求)。
需求分析的重点:调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求。
需求分析的方法:调查组织机构情况、各部门的业务活动情况、协助用户明确对新系统的各种要求、确定新系统的边界。
常用的调查方法有: 跟班作业、开调查会、请专人介绍、询问、设计调查表请用户填写、查阅记录。
分析和表达用户需求的方法主要包括自顶向下和自底向上两类方法。自顶向下的结构化分析方法(Structured Analysis,简称SA方法)从最上层的系统组织机构入手,采用逐层分解的方式分析系统,并把每一层用数据流图和数据字典描述。
数据流图表达了数据和处理过程的关系。系统中的数据则借助数据字典(Data Dictionary,简称DD)来描述。
2 概念结构设计阶段
通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,可以用E-R图表示。
概念模型用于信息世界的建模。概念模型不依赖于某一个DBMS支持的数据模型。概念模型可以转换为计算机上某一DBMS支持的特定数据模型。
概念模型特点:
(1) 具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识。
(2) 应该简单、清晰、易于用户理解,是用户与数据库设计人员之间进行交流的语言。
概念模型设计的一种常用方法为IDEF1X方法,它就是把实体-联系方法应用到语义数据模型中的一种语义模型化技术,用于建立系统信息模型。
作者: 小灵, 出处:论坛, 责任编辑: 李书琴, 2007-09-27 15:17
本文详细解析了数据库设计过程、设计技巧以及总结了数据库命名规范……
21 第零步——初始化工程
这个阶段的任务是从目的描述和范围描述开始,确定建模目标,开发建模计划,组织建模队伍,收集源材料,制定约束和规范。收集源材料是这阶段的重点。通过调查和观察结果,业务流程,原有系统的输入输出,各种报表,收集原始数据,形成了基本数据资料表。
22 第一步——定义实体
实体集成员都有一个共同的特征和属性集,可以从收集的源材料——基本数据资料表中直接或间接标识出大部分实体。根据源材料名字表中表示物的术语以及具有 “代码”结尾的术语,如客户代码、代理商代码、产品代码等将其名词部分代表的实体标识出来,从而初步找出潜在的实体,形成初步实体表。
23 第二步——定义联系
IDEF1X模型中只允许二元联系,n元联系必须定义为n个二元联系。根据实际的业务需求和规则,使用实体联系矩阵来标识实体间的二元关系,然后根据实际情况确定出连接关系的势、关系名和说明,确定关系类型,是标识关系、非标识关系(强制的或可选的)还是非确定关系、分类关系。如果子实体的每个实例都需要通过和父实体的关系来标识,则为标识关系,否则为非标识关系。非标识关系中,如果每个子实体的实例都与而且只与一个父实体关联,则为强制的,否则为非强制的。如果父实体与子实体代表的是同一现实对象,那么它们为分类关系。
24 第三步——定义码
通过引入交叉实体除去上一阶段产生的非确定关系,然后从非交叉实体和独立实体开始标识侯选码属性,以便唯一识别每个实体的实例,再从侯选码中确定主码。为了确定主码和关系的有效性,通过非空规则和非多值规则来保证,即一个实体实例的一个属性不能是空值,也不能在同一个时刻有一个以上的值。找出误认的确定关系,将实体进一步分解,最后构造出IDEF1X模型的键基视图(KB图)。
25 第四步——定义属性
从源数据表中抽取说明性的名词开发出属性表,确定属性的所有者。定义非主码属性,检查属性的非空及非多值规则。此外,还要检查完全依赖函数规则和非传递依赖规则,保证一个非主码属性必须依赖于主码、整个主码、仅仅是主码。以此得到了至少符合关系理论第三范式的改进的IDEF1X模型的全属性视图。
26 第五步——定义其他对象和规则
定义属性的数据类型、长度、精度、非空、缺省值、约束规则等。定义触发器、存储过程、视图、角色、同义词、序列等对象信息。
3 逻辑结构设计阶段
将概念结构转换为某个DBMS所支持的数据模型(例如关系模型),并对其进行优化。设计逻辑结构应该选择最适于描述与表达相应概念结构的数据模型,然后选择最合适的DBMS。
将E-R图转换为关系模型实际上就是要将实体、实体的属性和实体之间的联系转化为关系模式,这种转换一般遵循如下原则:一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。
数据模型的优化,确定数据依赖,消除冗余的联系,确定各关系模式分别属于第几范式。确定是否要对它们进行合并或分解。一般来说将关系分解为3NF的标准,即:
表内的每一个值都只能被表达一次。
表内的每一行都应该被唯一的标识(有唯一键)。
表内不应该存储依赖于其他键的非键信息。
作者: 小灵, 出处:论坛, 责任编辑: 李书琴, 2007-09-27 15:17
本文详细解析了数据库设计过程、设计技巧以及总结了数据库命名规范……
4 数据库物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式。
5 数据库实施阶段
运用DBMS提供的数据语言(例如SQL)及其宿主语言(例如C),根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。 数据库实施主要包括以下工作:用DDL定义数据库结构、组织数据入库 、编制与调试应用程序、数据库试运行 ,(Data Definition Language(DDL数据定义语言)用作开新数据表、设定字段、删除数据表、删除字段,管理所有有关数据库结构的东西)
●Create (新增有关数据库结构的东西,属DDL)
●Drop (删除有关数据库结构的东西,属DDL)
●Alter (更改结构,属DDL)
6 数据库运行和维护阶段
在数据库系统运行过程中必须不断地对其进行评价、调整与修改。内容包括:数据库的转储和恢复、数据库的安全性、完整性控制、数据库性能的监督、分析和改进、数据库的重组织和重构造。
7 建模工具的使用
为加快数据库设计速度,目前有很多数据库辅助工具(CASE工具),如Rational公司的Rational Rose,CA公司的Erwin和Bpwin,Sybase公司的PowerDesigner以及Oracle公司的oracle Designer等。
ERwin主要用来建立数据库的概念模型和物理模型。它能用图形化的方式,描述出实体、联系及实体的属性。ERwin支持IDEF1X方法。通过使用 ERwin建模工具自动生成、更改和分析IDEF1X模型,不仅能得到优秀的业务功能和数据需求模型,而且可以实现从IDEF1X模型到数据库物理设计的转变。ERwin工具绘制的模型对应于逻辑模型和物理模型两种。在逻辑模型中,IDEF1X工具箱可以方便地用图形化的方式构建和绘制实体联系及实体的属性。在物理模型中,ERwin可以定义对应的表、列,并可针对各种数据库管理系统自动转换为适当的类型。
设计人员可根据需要选用相应的数据库设计建模工具。例如需求分析完成之后,设计人员可以使用Erwin画ER图,将ER图转换为关系数据模型,生成数据库结构;画数据流图,生成应用程序。
二、数据库设计技巧
1 设计数据库之前(需求分析阶段)
1) 理解客户需求,包括用户未来需求变化。
2) 了解企业业务类型,可以在开发阶段节约大量的时间。
3) 重视输入(要记录的数据)、输出(报表、查询、视图)。
4) 创建数据字典和ER 图表
数据字典(Data Dictionary,简称DD)是各类数据描述的集合,是关于数据库中数据的描述,即元数据,不是数据本身。(至少应该包含每个字段的数据类型和在每个表内的主外键)。
数据项描述: 数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系
数据结构描述: 数据结构名,含义说明,组成:[数据项或数据结构]
数据流描述: 数据流名,说明,数据流来源,数据流去向, 组成:[数据结构],平均流量,高峰期流量
数据存储描述: 数据存储名,说明,编号,流入的数据流,流出的数据流,组成:[数据结构],数据量,存取方式
处理过程描述: 处理过程名,说明,输入:[数据流],输出:[数据流],处理:[简要说明]
ER 图表和数据字典可以让任何了解数据库的人都明确如何从数据库中获得数据。ER图对表明表之间关系很有用,而数据字典则说明了每个字段的用途以及任何可能存在的别名。对SQL 表达式的文档化来说这是完全必要的。
5) 定义标准的对象命名规范
数据库各种对象的命名必须规范。
作者: 小灵, 出处:论坛, 责任编辑: 李书琴, 2007-09-27 15:17
本文详细解析了数据库设计过程、设计技巧以及总结了数据库命名规范……
2 表和字段的设计(数据库逻辑设计)
表设计原则
1) 标准化和规范化
数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但Third Normal Form(3NF)通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守3NF 标准的数据库的表设计原则是:“One Fact in One Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。
2) 数据驱动
采用数据驱动而非硬编码的方式,许多策略变更和维护都会方便得多,大大增强系统的灵活性和扩展性。
举例,假如用户界面要访问外部数据源(文件、XML 文档、其他数据库等),不妨把相应的连接和路径信息存储在用户界面支持的表里。如果用户界面执行工作流之类的任务(发送邮件、打印信笺、修改记录状态等),那么产生工作流的数据也可以存放在数据库里。角色权限管理也可以通过数据驱动来完成。事实上,如果过程是数据驱动的,你就可以把相当大的责任推给用户,由用户来维护自己的工作流过程。
3) 考虑各种变化
在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。
4) 表名、报表名和查询名的命名规范
(采用前缀命名)检查表名、报表名和查询名之间的命名规范。你可能会很快就被这些不同的数据库要素的名称搞糊涂了。你可以统一地命名这些数据库的不同组成部分,至少你应该在这些对象名字的开头用 Table、Query 或者 Report 等前缀加以区别。如果采用了 Microsoft Access,你可以用 qry、rpt、tbl 和 mod 等符号来标识对象(比如 tbl_Employees)。用 sp_company 标识存储过程,用 udf_ (或者类似的标记)标识自定义编写的函数。
字段设计原则:
1) 每个表中都应该添加的3 个有用的字段。
dRecordCreationDate,在SQL Server 下默认为GETDATE()
sRecordCreator,在SQL Server 下默认为NOT NULL DEFAULT USER
nRecordVersion,记录的版本标记;有助于准确说明记录中出现null 数据或者丢失数据的原因
时效性数据应包括“最近更新日期/时间”字段。时间标记对查找数据问题的原因、按日期重新处理/重载数据和清除旧数据特别有用。
2) 对地址和电话采用多个字段
描述街道地址就短短一行记录是不够的。Address_Line1、Address_Line2 和Address_Line3 可以提供更大的灵活性。还有,电话号码和邮件地址最好拥有自己的数据表,其间具有自身的类型和标记类别。
3) 表内的列[字段]的命名规则(采用前缀/后缀命名)、采用有意义的字段名
对列[字段]名应该采用标准的前缀和后缀。如键是数字类型:用 _N 后缀;字符类型:_C 后缀;日期类型:_D 后缀。再如,假如你的表里有好多“money”字段,你不妨给每个列[字段]增加一个 _M 后缀。
作者: 小灵, 出处:论坛, 责任编辑: 李书琴, 2007-09-27 15:17
本文详细解析了数据库设计过程、设计技巧以及总结了数据库命名规范……
假设有两个表:
Customer 和 Order。Customer 表的前缀是 cu_,所以该表内的子段名如下:cu_name_id、cu_surname、cu_initials 和cu_address 等。Order 表的前缀是 or_,所以子段名是:
or_order_id、or_cust_name_id、or_quantity 和 or_description 等。
这样从数据库中选出全部数据的 SQL 语句可以写成如下所示:
Select From Customer, Order Where cu_surname = "MYNAME" ;
and cu_name_id = or_cust_name_id and or_quantity = 1
在没有这些前缀的情况下则写成这个样子(用别名来区分):
Select From Customer, Order Where Customersurname = "MYNAME" ;
and Customername_id = Ordercust_name_id and Orderquantity = 1
第 1 个 SQL 语句没少键入多少字符。但如果查询涉及到 5 个表乃至更多的列[字段]你就知道这个技巧多有用了。
5) 选择数字类型和文本类型的长度应尽量充足
假设客户ID 为10 位数长。那你应该把数据库表字段的长度设为12 或者13 个字符长。但这额外占据的空间却无需将来重构整个数据库就可以实现数据库规模的增长了。
6) 增加删除标记字段
在表中包含一个“删除标记”字段,这样就可以把行标记为删除。在关系数据库里不要单独删除某一行;最好采用清除数据程序而且要仔细维护索引整体性。
7) 提防大小写混用的对象名和特殊字符
采用全部大写而且包含下划符的名字具有更好的可读性(CUSTOMER_DATA),绝对不要在对象名的字符之间留空格。
8) 小心保留词
要保证你的字段名没有和保留词、数据库系统或者常用访问方法冲突,比如,用 DESC 作为说明字段名。后果可想而知!DESC 是 DESCENDING 缩写后的保留词。表里的一个 SELECT 语句倒是能用,但得到的却是一大堆毫无用处的信息。
9) 保持字段名和类型的一致性
在命名字段并为其指定数据类型的时候一定要保证一致性。假如字段在表1中叫做“agreement_number”,就别在表2里把名字改成 “ref1”。假如数据类型在表1里是整数,那在表2里可就别变成字符型了。当然在表1(ABC)有处键ID,则为了可读性,在表2做关联时可以命名为 ABC_ID。
10) 避免使用触发器
触发器的功能通常可以用其他方式实现。在调试程序时触发器可能成为干扰。假如你确实需要采用触发器,你最好集中对它文档化。
作者: 小灵, 出处:论坛, 责任编辑: 李书琴, 2007-09-27 15:17
本文详细解析了数据库设计过程、设计技巧以及总结了数据库命名规范……
3 选择键和索引(数据库逻辑设计)
参考:《SQL优化-索引》一文
4 数据完整性设计(数据库逻辑设计)
1) 完整性实现机制:
实体完整性:主键
参照完整性:
父表中删除数据:级联删除;受限删除;置空值
父表中插入数据:受限插入;递归插入
父表中更新数据:级联更新;受限更新;置空值
DBMS对参照完整性可以有两种方法实现:外键实现机制(约束规则)和触发器实现机制用户定义完整性:
NOT NULL;CHECK;触发器
2) 用约束而非商务规则强制数据完整性
采用数据库系统实现数据的完整性。这不但包括通过标准化实现的完整性而且还包括数据的功能性。不要依赖于商务层保证数据完整性;它不能保证表之间(外键) 的完整性所以不能强加于其他完整性规则之上。如果你在数据层确实采用了约束,你要保证有办法把更新不能通过约束检查的原因采用用户理解的语言通知用户界面。
3) 强制指示完整性
在有害数据进入数据库之前将其剔除。激活数据库系统的指示完整性特性。这样可以保持数据的清洁而能迫使开发人员投入更多的时间处理错误条件。
4) 使用查找控制数据完整性
控制数据完整性的最佳方式就是限制用户的选择。只要有可能都应该提供给用户一个清晰的价值列表供其选择。这样将减少键入代码的错误和误解同时提供数据的一致性。某些公共数据特别适合查找:国家代码、状态代码等。
5) 采用视图
为了在数据库和应用程序代码之间提供另一层抽象,可以为应用程序建立专门的视图而不必非要应用程序直接访问数据表。这样做还等于在处理数据库变更时给你提供了更多的自由。
6) 分布式数据系统
对分布式系统而言,在你决定是否在各个站点复制所有数据还是把数据保存在一个地方之前应该估计一下未来 5 年或者 10 年的数据量。当你把数据传送到其他站点的时候,最好在数据库字段中设置一些标记,在目的站点收到你的数据之后更新你的标记。为了进行这种数据传输,请写下你自己的批处理或者调度程序以特定时间间隔运行而不要让用户在每天的工作后传输数据。本地拷贝你的维护数据,比如计算常数和利息率等,设置版本号保证数据在每个站点都完全一致。
7) 关系
如果两个实体之间存在多对一关系,而且还有可能转化为多对多关系,那么你最好一开始就设置成多对多关系。从现有的多对一关系转变为多对多关系比一开始就是多对多关系要难得多。
8) 给数据保有和恢复制定计划
考虑数据保存策略并包含在设计过程中,预先设计你的数据恢复过程。采用可以发布给用户/开发人员的数据字典实现方便的数据识别同时保证对数据源文档化。编写在线更新来“更新查询”供以后万一数据丢失可以重新处理更新。
9) 用存储过程让系统做重活
提供一整套常规的存储过程来访问各组以便加快速度和简化客户程序代码的开发。数据库不只是一个存放数据的地方,它也是简化编码之地。
本文详细解析了数据库设计过程、设计技巧以及总结了数据库命名规范……
5 其他设计技巧
1) 避免使用触发器
触发器的功能通常可以用其他方式实现。在调试程序时触发器可能成为干扰。假如你确实需要采用触发器,你最好集中对它文档化。
2) 使用常用英语(或者其他任何语言)而不要使用编码
在创建下拉菜单、列表、报表时最好按照英语名排序。假如需要编码,可以在编码旁附上用户知道的英语。
3) 保存常用信息
让一个表专门存放一般数据库信息非常有用。在这个表里存放数据库当前版本、最近检查/修复(对Access)、关联设计文档的名称、客户等信息。这样可以实现一种简单机制跟踪数据库,当客户抱怨他们的数据库没有达到希望的要求而与你联系时,这样做对非客户机/服务器环境特别有用。
4) 包含版本机制
在数据库中引入版本控制机制来确定使用中的数据库的版本。时间一长,用户的需求总是会改变的。最终可能会要求修改数据库结构。把版本信息直接存放到数据库中更为方便。
5) 编制文档
对所有的快捷方式、命名规范、限制和函数都要编制文档。
采用给表、列、触发器等加注释的 数据库工具。对开发、支持和跟踪修改非常有用。
对数据库文档化,或者在数据库自身的内部或者单独建立文档。这样,当过了一年多时间后再回过头来做第2 个版本,犯错的机会将大大减少。
6) 测试、测试、反复测试
建立或者修订数据库之后,必须用用户新输入的数据测试数据字段。最重要的是,让用户进行测试并且同用户一道保证选择的数据类型满足商业要求。测试需要在把新数据库投入实际服务之前完成。
7) 检查设计
在开发期间检查数据库设计的常用技术是通过其所支持的应用程序原型检查数据库。换句话说,针对每一种最终表达数据的原型应用,保证你检查了数据模型并且查看如何取出数据。
三、数据库命名规范
1 实体(表)的命名
1) 表以名词或名词短语命名,确定表名是采用复数还是单数形式,此外给表的别名定义简单规则(比方说,如果表名是一个单词,别名就取单词的前4 个字母;如果表名是两个单词,就各取两个单词的前两个字母组成4 个字母长的别名;如果表的名字由3 个单词组成,从头两个单词中各取一个然后从最后一个单词中再取出两个字母,结果还是组成4 字母长的别名,其余依次类推)
对工作用表来说,表名可以加上前缀WORK_ 后面附上采用该表的应用程序的名字。在命名过程当中,根据语义拼凑缩写即可。注意:将字段名称会统一成大写或者小写中的一种,故中间加上下划线。
作者: 小灵, 出处:论坛, 责任编辑: 李书琴, 2007-09-27 15:17
本文详细解析了数据库设计过程、设计技巧以及总结了数据库命名规范……
举例:
定义的缩写 Sales: Sal 销售;
Order: Ord 订单;
Detail: Dtl 明细;
则销售订单明细表命名为:Sal_Ord_Dtl;
2) 如果表或者是字段的名称仅有一个单词,那么建议不使用缩写,而是用完整的单词。
举例:
定义的缩写 Material Ma 物品;
物品表名为:Material, 而不是 Ma
但是字段物品编码则是:Ma_ID;而不是Material_ID
3) 所有的存储值列表的表前面加上前缀Z
目的是将这些值列表类排序在数据库最后。
4) 所有的冗余类的命名(主要是累计表)前面加上前缀X
冗余类是为了提高数据库效率,非规范化数据库的时候加入的字段或者表
5) 关联类通过用下划线连接两个基本类之后,再加前缀R的方式命名,后面按照字母顺序罗列两个表名或者表名的缩写。
关联表用于保存多对多关系。
如果被关联的表名大于10个字母,必须将原来的表名的进行缩写。如果没有其他原因,建议都使用缩写。
举例:表Object与自身存在多对多的关系,则保存多对多关系的表命名为:R_Object;
作者: 小灵, 出处:论坛, 责任编辑: 李书琴, 2007-09-27 15:17
本文详细解析了数据库设计过程、设计技巧以及总结了数据库命名规范……
2 属性(列)的命名
1) 采用有意义的列名
表内的列要针对键采用一整套设计规则。每一个表都将有一个自动ID作为主健,逻辑上的主健作为第一组候选主健来定义;
A、如果是数据库自动生成的编码,统一命名为:ID
B、如果是自定义的逻辑上的编码则用缩写加“ID”的方法命名,即“XXXX_ID”
C、如果键是数字类型,你可以用_NO 作为后缀;
D、如果是字符类型则可以采用_CODE 后缀
E、对列名应该采用标准的前缀和后缀。
举例:销售订单的编号字段命名:Sal_Ord_ID;如果还存在一个数据库生成的自动编号,则命名为:ID。
2) 所有的属性加上有关类型的后缀
注意,如果还需要其它的后缀,都放在类型后缀之前。
注: 数据类型是文本的字段,类型后缀TX可以不写。有些类型比较明显的字段,可以不写类型后缀。
3) 采用前缀命名
给每个表的列名都采用统一的前缀,那么在编写SQL表达式的时候会得到大大的简化。这样做也确实有缺点,比如破坏了自动表连接工具的作用,后者把公共列名同某些数据库联系起来。
3 视图的命名
1) 视图以V作为前缀,其他命名规则和表的命名类似;
2) 命名应尽量体现各视图的功能。
4 触发器的命名(尽量不使用)
触发器以TR作为前缀,触发器名为相应的表名加上后缀,Insert触发器加'_I',Delete触发器加'_D',Update触发器加'_U',如:TR_Customer_I,TR_Customer_D,TR_Customer_U。
5 存储过程名
存储过程应以'UP_'开头,和系统的存储过程区分,后续部分主要以动宾形式构成,并用下划线分割各个组成部分。如增加代理商的帐户的存储过程为'UP_Ins_Agent_Account'。
6 变量名
变量名采用小写,若属于词组形式,用下划线分隔每个单词,如@my_err_no。
7 命名中其他注意事项
1) 以上命名都不得超过30个字符的系统限制。变量名的长度限制为29(不包括标识字符@)。
2) 数据对象、变量的命名都采用英文字符,禁止使用中文命名。绝对不要在对象名的字符之间留空格。
3) 小心保留词,要保证你的字段名没有和保留词、数据库系统或者常用访问方法冲突
4) 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了。
数据库建库流程是建库工作中相当重要的部分,流程设计的质量直接影响到实施过程中的可 *** 作性及库应用等诸多方面。本书矿产地数据库建设工作流程主要分为以下几个步骤(图6-3-1)。
1)由综合技术组负责组织修编、制定矿产地数据库的建库技术要求、建库数据标准及规范和数据库结构设计,开发数据录入界面。
2)由相关成员进行矿产地数据库的建库资料收集、录入、MAPGIS 数据库的建立。内容包括:
依据项目总体设计书和中国地质调查局制定的《矿产地数据库建设工作指南》(2001年9月修订版)及相关技术标准,编写课题工作实施方案;
资料的收集和整理;
属性数据库卡片的填制和数据录入;
全国地质底图,主要在程裕祺等编的《1:500万中国地质图》基础上进行编辑,并按地质时代、地质内容划分不同图层;
图6-3-1 数据库建设工作流程图
数据检查及修正;
成果的提交和验收。
3)综合技术组组织对各课题组矿产地数据库进行汇总,建立中国铜镍(铂族)矿产地空间数据库。内容包括:
数据库检查和修正;
全国矿产地数据库的集成;
面向对象程序设计,GIS支持下矿产地空间数据库的C++实现;
建立具有矿床数据库浏览、查询,属性库管理,图形编辑,矿床预测等功能的中国铜镍硫化物矿床矿产地空间数据库信息共享服务体系。
中国地热资源数据库建设工作必须按照其数据组成及属性表规定的数据格式的具体要求,在对相关数据资料进行整理的基础上,按照制定的数据卡片逐项填写内容。并在建立健全检查制度的基础上,确保数据卡片的内容详实、准确。再在 Access 系统中完成属性数据的录入,并进行校核。图形的数字处理在 MapGIS 系统中完成 ( 图 2-5) 。
图 2-5 中国地热资源数据库建设数据流程
以上就是关于工作流程与建库方法全部的内容,包括:工作流程与建库方法、数据入库流程、空间数据库建库工作程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)