一种决策支持系统中数据完整性的解决方法

文档序号:6491423阅读:258来源:国知局
一种决策支持系统中数据完整性的解决方法
【专利摘要】本发明公开了一种决策支持系统中数据完整性的解决方法,包括以下步骤:用桶排序算法描述数据采集过程中的数据完整性;数据库拓补结构表示;把相关的表联系起来,把前面的表的主键作为桶用于下一个表的主建和外部键的比较。由于本发明使用桶排序算法来进行数据完整性检查的算法描述,将算法的时间复杂度降低到o(N),而这样可以做到把以文本形式保存的海量原始数据导入数据库中,自动实现数据完整性约束检查。本发明采用的桶排序算法完成的完整性检查方法,降低了海量数据的处理难度和时间,减小系统运行代价。
【专利说明】一种决策支持系统中数据完整性的解决方法
【技术领域】
[0001]本发明涉及一种解决数据完整性的方法,特别是一种决策支持系统中解决数据完整性的方法。
【背景技术】
[0002]近年来,数据采集及其应用技术受到人们越来越广泛的关注,数据采集系统也迅速地得到应用。在科学研究中,应用数据采集系统可获得大量的动态信息,是研究瞬间物理过程的有力工具,也是获取科学奥秘的重要手段之一。数据采集与处理越及时,工作效率就越高,得到的效果就越好。防洪系统中,防洪工程的种类繁多、功能差异大、覆盖面广、地域差别大、经纬度跨度大,各类工程之间既有共性,个性也很突出。防洪工程数据库按照防洪工程的类别组织分类,每类工程组成一个类别,工程之间有一个关联表联系相关的工程,工程的内部是互相关联的表集。比如黑龙江防洪防汛系统共有18类工程,180多个数据表,并按照城市、地区分类共有十几个基础数据采集点。
[0003]数据完整性约束有三种,即,域完整性约束,实体完整性约束和参照完整性约束。在数据库管理系统中,要求只有符合完整性约束的数据才能录入数据库中。防洪系统的基础数据库的数据采集使用excel文件录入原始数据,这就要求对excel文件进行完整性检查,然后才能把文件内的数据导入到数据库中。
[0004]由此,系统在数据采集时,有关水利工程的数据都以文本的形式保存在excel文件中,在数据导入到数据库前要求对数据进行完整性检查,数据完整性检查工作是一个无序数据的比较排序问题,其中主键和外部键的数据完整性检查是一个比较排序问题,而比较排序的最优时间复杂度为o(nlogn),并不能很好的解决大量文本数据的比较。
[0005]本发明针对不足,根据数据库表结构的关系,证明了表之间的主键包含关系是一个偏序关系,并在此基础上应用桶排序算法,给出了一个时间复杂度为ο (η)的算法同时实现了主键和外部键的比较,成功的解决了系统的数据采集工作。

【发明内容】

[0006]为解决现有技术存在的上述问题,本发明要设计一种将桶排序算法应用于决策支持系统中数据完整性的检查中的方法。该方法给出了一个时间复杂度为ο (η)的算法同时实现了主键和外部键的比较,成功的解决了系统的数据采集工作。
[0007]为了实现上述目的,本发明的技术方案如下:一种数据采集过程中的数据完整性算法,包括以下步骤:
[0008]Α、用桶排序算法描述数据采集过程中的数据完整性算法
[0009]Al、在18类防洪工程中,每类工程都有一个“工程名称与代码”表,其它表的主键都包含这个表的主键。在一类工程内部,每一个表的主键都由另一个表的主键加上一个或多个属性作为此表的主键,主键的包含关系如图1所示。位于O层根节点的表是“工程名称与代码”,它的主键由它自身组成,非O层节点的表的主键由它上一层的表的主键加上其它的属性组成。在实际应用过程中,对于O层的表的记录数目小于100条,对于I层节点的表的记录数目在1000条左右,对于2层节点以上的表的记录数目大于10000行(如,河流和堤防的横断面)。
[0010]假设:防洪工程数据库表的主键包含关系是一个偏序关系。
[0011]证明:假设数据库中一类工程的所有表为一个集合,每个表为集合中的一个元素,表之间的主建的包含关系,作为元素之间的关系。
[0012]①自反性
[0013]集合中的元素的主键,主键自包含本身,所以具有自反性
[0014]②反对称性
[0015]集合中的元素,如图1所示,子节点元素的主键包含父节点的主键,但是父节点的主键不包含子节点的主键。所以具有反对称性。
[0016]③传递性
[0017]集合中的元素,如图1所示,子节点的包含在此节点分支上的所有父节点的主键,所以具有传递关系。
[0018]A2、数据库拓补结构表示
[0019]防洪工程数据库是一个分布式数据库,它的数据“均匀分布”在各个站点中,每个站点具有一套相同的关系,网络拓补结构如图2所示。在数据采集时,各站点使用一套相同的excel表格收集工程数据,同一类的防洪工程数据存放在同一个excel文件中的sheet中。由偏序关系的性质我们可以知道,顶层节点覆盖了底层节点,所以在实现主键完整性时,我们只需要保证根节点的数据在各个站点之间符合数据完整性,即可保证整个数据库在各个地区之间的数据主键不冲突,这种结构也可用于数据库的查询优化中。
[0020]B、数据采集完整性检查
[0021]常见的数据完整性约束有三种,即,域完整性约束,实体完整性约束和参照完整性约束。域完整性(Field Integrity)保证一个数据库不包含无意义的或不合理的值,即保证表的某一列的任何值是该列域(即合法的数据集合)的成员。方法是限制列的数据类型、精度、范围、格式和长度等。实体完整性(Entity Integrity)保证一个表中的每一行必须是唯一的(元组的唯一性)。为保证实体完整性,需指定一个表中的一列或一组列作为它的主键(Primary Key)。一个表中每行的主键必须确实含有一个值。一个表只能含有一个主键。
[0022]参照完整性(Reference Integrity)定义了一个关系数据库中不同的列和不同的表之间的关系(主键与外键)。要求一列或一组列中的值必须要与相关的一列或一组列中的值相匹配。从属的一列或一组列称之为外键(Foreign Key)。子表某行的外键必须与主表的主键相匹配,只要依赖于某主键的外键仍存在,主表中包含该主键的行就不能删除。
[0023]与现有技术相比,本发明具有以下有益效果:
[0024]1、由于系统中只有符合完整性约束的数据才能录入数据库中,这就要求对excel文件进行完整性检查,然后才能把文件内的数据导入到数据库中,本发明中主要介绍实体完整性和参照完整性的实现,并因此使用桶排序算法进行优化。
[0025]2、由于本发明中防洪工程数据库的表之间的主键包含关系是一个偏序关系,且偏序关系具有传递性和覆盖性,我们在设计主键和外部键的完整性约束检查的算法时可以进行优化。采用时间复杂度为O (η)的桶排序算法,同时利用传递性对数据采集系统的数据录入程序进行了优化,减轻了用户的工作量。
[0026]3、由偏序关系的性质我们可以知道,顶层节点覆盖了底层节点,所以在实现主键完整性时,我们只需要保证根节点的数据在各个站点之间符合数据完整性,即可保证整个数据库在各个地区之间的数据主键不冲突,所以本发明使用桶排序算法,把相关的表联系起来,把前面的表的主键作为桶用于下一个表的主建和外部键的比较,这样很好的解决了上诉问题。
【专利附图】

【附图说明】
[0027]本发明共有附图2张,其中:
[0028]图1是本发明的数据库表的树形结构图;
[0029]图2是本发明的数据库拓扑结构图。
【具体实施方式】
[0030]下面结合附图对本发明进行进一步地描述。算法的主要采取分治术的思想,把相关的表联系起来,把前面的表的主键作为桶用于下一个表的主建和外部键的比较。算法描述如下:
[0031]步骤O:根据数据库的表结构,建立如图1的树型关系的存储结构
[0032]步骤1:对于O层节点的数据表,采用时间复杂度为o(nlogn)的比较排序算法进行排序,若出现相同的数据项,把错误结果输出到文件中。用排序后的数据作为键值建立桶。
[0033]步骤2:对于I层的叶子节点的数据表,根据步骤I生成的桶,把表的主键装入到桶中。若在装入过程中发现桶不存在,则提示外部键不存在错误。所有数据装完桶后,对每个桶内的数据用o(nlogn)的算法进行比较排序,如存在相同项,提示主键冲突错误。排序后,数据出桶。重复此过程到不存在I层叶子节点为止。
[0034]步骤3:若存在I层的非叶子节点,根据步骤I的数据恢复根结点的桶。
[0035]步骤4:选择一个尚未检查的I层节点,把主键数据装入桶中,若桶不存在则提示外部键不存在。然后对桶内数据进行排序,若存在相同项,则提示主键冲突错误。若此节点是非叶子节点,则用排序好的数据建立新的桶,转步骤5。否则,转步骤3。
[0036]步骤5:(用深度优先法遍历此子树)根据上一层节点生成的桶,对此层节点的数据入桶、并进行排序,检查主键和外部键的关系。若此节点为非叶子节点,建立新的桶,转步骤
5。若此节点为叶子节点,则返回步骤4。
[0037]设一类工程的数据记录总数为N,图1中根节点的表的记录数据目为n,由于η远远小于N,我们可以认为o(nlogn)近似等于o(n)。则在第I步中执行排序算法的时间复杂度为T(n),建立桶的时间为T (η),出桶的时间为T (η),总时间为3Τ (η)。在步骤2中,需要把叶子节点的表中的记录入桶,入桶的时间为TO ;然后对桶内的数据使用ο (nlogn)的算法进行排序,由于桶内的数据记录数远远小于,可以认为排序的总时间为TO ;出桶的时间为T(),总时间为3T0。每次调用步骤3需要恢复根结点的桶,时间为T(l)。在步骤4和步骤5中,每一层的表格根据上一层建立的桶把记录入桶分类,然后再在桶内排序,每个表格的时间同步骤2,也为3T(n)。
[0038]而N= (N为总记录数,k为表格的数目,为第i个表格的记录数)
[0039]则T (N) ==o (kN) =O (N) (k 为常数)
[0040]所以算法的时间复杂度为O (N)。
【权利要求】
1.一种决策支持系统中数据完整性的解决方法,其特征在于包括以下步骤: A、用桶排序算法描述数据采集过程中的数据完整性算法 Al、在18类防洪工程中,每类工程都有一个“工程名称与代码”表,其它表的主键都包含这个表的主键;在一类工程内部,每一个表的主键都由另一个表的主键加上一个或多个属性作为此表的主键,主键的包含关系如图1所示;位于O层根节点的表是“工程名称与代码”,它的主键由它自身组成,非O层节点的表的主键由它上一层的表的主键加上其它的属性组成;在实际应用过程中,对于O层的表的记录数目小于100条,对于I层节点的表的记录数目在1000条左右,对于2层节点以上的表的记录数目大于10000行; 假设:防洪工程数据库表的主键包含关系是一个偏序关系; 证明:假设数据库中一类工程的所有表为一个集合,每个表为集合中的一个元素,表之间的主建的包含关系,作为元素之间的关系; ①自反性 集合中的元素的主键,主键自包含本身,所以具有自反性 ②反对称性 集合中的元素,如图1所示,子节点元素的主键包含父节点的主键,但是父节点的主键不包含子节点的主键;所以具有反对称性; ③传递性 集合中的元素,如图1所示,子节点的包含在此节点分支上的所有父节点的主键,所以具有传递关系; A2、数据库拓补结构表示 防洪工程数据库是一个分布式数据库,它的数据“均匀分布”在各个站点中,每个站点具有一套相同的关系,网络拓补结构如图2所示;在数据采集时,各站点使用一套相同的excel表格收集工程数据,同一类的防洪工程数据存放在同一个excel文件中的sheet中;由偏序关系的性质我们可以知道,顶层节点覆盖了底层节点,所以在实现主键完整性时,我们只需要保证根节点的数据在各个站点之间符合数据完整性,即可保证整个数据库在各个地区之间的数据主键不冲突,这种结构也可用于数据库的查询优化中; B、数据采集完整性检查 常见的数据完整性约束有三种,即,域完整性约束,实体完整性约束和参照完整性约束;域完整性(Field Integrity)保证一个数据库不包含无意义的或不合理的值,即保证表的某一列的任何值是该列域即合法的数据集合的成员;方法是限制列的数据类型、精度、范围、格式和长度等;实体完整性(Entity Integrity)保证一个表中的每一行必须是唯一的(元组的唯一性);为保证实体完整性,需指定一个表中的一列或一组列作为它的主键(Primary Key);一个表中每行的主键必须确实含有一个值;一个表只能含有一个主键; 参照完整性(Reference Integrity)定义了一个关系数据库中不同的列和不同的表之间的关系;要求一列或一组列中的值必须要与相关的一列或一组列中的值相匹配;从属的一列或一组列称之为外键(Foreign Key);子表某行的外键必须与主表的主键相匹配,只要依赖于某主键的外键仍存在,主表中包含该主键的行就不能删除。
【文档编号】G06F17/30GK103838738SQ201210476179
【公开日】2014年6月4日 申请日期:2012年11月21日 优先权日:2012年11月21日
【发明者】刘博 , 梅昱婷 申请人:大连灵动科技发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1