本发明属于电子政务平台数据交换技术领域,具体涉及一种数据驱动映射转换方法。
背景技术:
在进行电子政务平台数据交换前,还需要将数据从相应的数据库中提取出来生成xml,然后在数据发送界面将数据发送出去,为了能够提取到相应的交换数据,需要实现交换数据的提取方法。
大部分结构化数据都来源于关系型数据库,非结构化数据也可切通过数据清洗后录入存入关系型数据库。为了实现xml与数据之间的相互转换,核心就是实现xml与数据库数据之间的相互映射。由于xml中的数据都只是文本信息,不能独立支撑起一个数据模型,需要建立一种转换关系。
技术实现要素:
本发明的目的在于提供一种数据驱动映射转换方法,能够实现xml与数据库数据之间的相互映射。
本发明所采用的技术方案是:一种数据驱动映射转换方法,包括以下步骤:
步骤1:将关系型数据库中的数据提取通用关系模式;
步骤2:将数据库中的数据提取出通用关系模型后,再根据数据表相互之间外键约束关系将各个表构建成一棵树的结构,以便能够更清晰地描述xml文档中数据之间的关系;
步骤3:将步骤2生成的树结构用于模型映射。
本发明的特点还在于,
步骤1具体包括:在关系型数据库中,数据类型约束,主键约束,外键约束和完整新约束四种;在数据库er模型中,定义r来表示通用的数据关系模式,r可用一个五元数组来表示,令r=(t,c,m,pk,fk):
1)t代表存在一个数据表的集合,c代表表中列名的集合,任意c∈c;
2)m代表对应一个c∈c到它的类型定义的映射,令m(c)=(t,l,p,f,n,u,d),t表示数据的类型,l表示数据的长度,p表示数据是否为主键,f表示数据是否为外键,n表示数据是否为空,u表示数据是否唯一,d表示数据是否缺省,其中p,f,u,n,d的取值均为y或者n;
3)pk表示主键约束,fk代表外键约束。
步骤2中通过如下算法构建出树形结构:
步骤2.1:根据定义r=(t,c,m,pk,fk)获取所有表的信息并建立节点;
步骤2.2:对表中的所有列节点进行一次遍历,如果列节点存在外键约束,则寻找对应相关联的表作为其孩子节点;
步骤2.3:将剩余没有作为其他孩子节点的节点与之前形成的子树重新组织成一棵树。
步骤3中的映射内容分为两个部分;一部分是将关系模型中的表名和列名映射成xml中元素和标签名;另一部分涉及到元素的约束,包括主键约束,外键约束和完整性约束。
步骤3中模型映射的步骤如下:
步骤3.1:数据库名称与xml的根节点相对应,即r,将数据库名映射成根元素;
步骤3.2:数据表名与根元素下的一级子元素相对应,即为关系模式中的t,将表名映射成子元素的标签,并且每一个子元素都为复杂类型;
步骤3.3:表中的列名与子元素下的组成元素相对应,将列名映射成组成元素,并未送些元素设置对应的类型、长度约束;
步骤3.4:将关系模型中的主键约束映射成key约束,将外键约束映射成keyref约束。
本发明的有益效果是:本发明一种数据驱动映射转换方,利用xml的结构来保存关系型数据库中的关系模式,是一种相比于数据库模板映射转换更为深层次的映射关系,通过找到xml结构与数据库之间的映射关系,生成具体的模型来体现这种映射。
具体实施方式
下面结合具体实施方式对本发明进行详细说明。
本发明提供了一种数据驱动映射转换方法,包括以下步骤:
步骤1:将关系型数据库中的数据提取通用关系模式,具体包括:在关系型数据库中,数据类型约束,主键约束,外键约束和完整新约束四种;在数据库er模型中,定义r来表示通用的数据关系模式,r可用一个五元数组来表示,令r=(t,c,m,pk,fk):
1)t代表存在一个数据表的集合,c代表表中列名的集合,任意c∈c;
2)m代表对应一个c∈c到它的类型定义的映射,令m(c)=(t,l,p,f,n,u,d),t表示数据的类型,l表示数据的长度,p表示数据是否为主键,f表示数据是否为外键,n表示数据是否为空,u表示数据是否唯一,d表示数据是否缺省,其中p,f,u,n,d的取值均为y或者n;
3)pk表示主键约束,fk代表外键约束。;
步骤2:将数据库中的数据提取出通用关系模型后,再根据数据表相互之间外键约束关系将各个表构建成一棵树的结构,以便能够更清晰地描述xml文档中数据之间的关系,通过如下算法构建出树形结构:
步骤2.1:根据定义r=(t,c,m,pk,fk)获取所有表的信息并建立节点;
步骤2.2:对表中的所有列节点进行一次遍历,如果列节点存在外键约束,则寻找对应相关联的表作为其孩子节点;
步骤2.3:将剩余没有作为其他孩子节点的节点与之前形成的子树重新组织成一棵树。
步骤3:将步骤2生成的树结构用于模型映射,映射内容分为两个部分;一部分是将关系模型中的表名和列名映射成xml中元素和标签名;另一部分涉及到元素的约束,包括主键约束,外键约束和完整性约束;模型映射的步骤如下:
步骤3.1:数据库名称与xml的根节点相对应,即r,将数据库名映射成根元素;
步骤3.2:数据表名与根元素下的一级子元素相对应,即为关系模式中的t,将表名映射成子元素的标签,并且每一个子元素都为复杂类型;
步骤3.3:表中的列名与子元素下的组成元素相对应,将列名映射成组成元素,并未送些元素设置对应的类型、长度约束;
步骤3.4:将关系模型中的主键约束映射成key约束,将外键约束映射成keyref约束。
通过上述方式,本发明一种数据驱动映射转换方,利用xml的结构来保存关系型数据库中的关系模式,是一种相比于数据库模板映射转换更为深层次的映射关系,通过找到xml结构与数据库之间的映射关系,生成具体的模型来体现这种映射。
1.一种数据驱动映射转换方法,其特征在于,包括以下步骤:
步骤1:将关系型数据库中的数据提取通用关系模式;
步骤2:将数据库中的数据提取出通用关系模型后,再根据数据表相互之间外键约束关系将各个表构建成一棵树的结构,以便能够更清晰地描述xml文档中数据之间的关系;
步骤3:将步骤2生成的树结构用于模型映射。
2.如权利要求1所述的一种数据驱动映射转换方法,其特征在于,所述步骤1具体包括:在关系型数据库中,数据类型约束,主键约束,外键约束和完整新约束四种;在数据库er模型中,定义r来表示通用的数据关系模式,r可用一个五元数组来表示,令r=(t,c,m,pk,fk):
1)t代表存在一个数据表的集合,c代表表中列名的集合,任意c∈c;
2)m代表对应一个c∈c到它的类型定义的映射,令m(c)=(t,l,p,f,n,u,d),t表示数据的类型,l表示数据的长度,p表示数据是否为主键,f表示数据是否为外键,n表示数据是否为空,u表示数据是否唯一,d表示数据是否缺省,其中p,f,u,n,d的取值均为y或者n;
3)pk表示主键约束,fk代表外键约束。
3.如权利要求2所述的一种数据驱动映射转换方法,其特征在于,所述步骤2中通过如下算法构建出树形结构:
步骤2.1:根据定义r=(t,c,m,pk,fk)获取所有表的信息并建立节点;
步骤2.2:对表中的所有列节点进行一次遍历,如果列节点存在外键约束,则寻找对应相关联的表作为其孩子节点;
步骤2.3:将剩余没有作为其他孩子节点的节点与之前形成的子树重新组织成一棵树。
4.如权利要求3所述的一种数据驱动映射转换方法,其特征在于,所述步骤3中的映射内容分为两个部分;一部分是将关系模型中的表名和列名映射成xml中元素和标签名;另一部分涉及到元素的约束,包括主键约束,外键约束和完整性约束。
5.如权利要求4所述的一种数据驱动映射转换方法,其特征在于,所述步骤3中模型映射的步骤如下:
步骤3.1:数据库名称与xml的根节点相对应,即r,将数据库名映射成根元素;
步骤3.2:数据表名与根元素下的一级子元素相对应,即为关系模式中的t,将表名映射成子元素的标签,并且每一个子元素都为复杂类型;
步骤3.3:表中的列名与子元素下的组成元素相对应,将列名映射成组成元素,并未送些元素设置对应的类型、长度约束;
步骤3.4:将关系模型中的主键约束映射成key约束,将外键约束映射成keyref约束。