首页> 中国专利> 基于关系型数据库存储的对象化数据模型查询方法及装置

基于关系型数据库存储的对象化数据模型查询方法及装置

摘要

本发明提供一种基于关系型数据库存储的对象化数据模型查询方法及装置,该方法包括:接收用户发送的查询请求,查询请求包括一个或包括多个条件项及其组合关系,其中,预先按结构化对象的数据模型结构,将关系型数据库中有关联关系的表关联起来,并设置条件项及条件项之间可选的组合关系;基于关系型数据库中表间的关联关系及查询请求条件确定展开方法,将所有表记录的内容按确定的展开方法展开为一张包括多条记录的二维虚拟视图,一条记录中包括结构化对象的数据模型中各分支所包含的所有元素的内容;在二维虚拟视图中查找符合查询条件的记录,按照结构化对象的数据模型的形式在查询界面展示出来。本发明提高了关系型库的检索效率。

著录项

  • 公开/公告号CN105243162A

    专利类型发明专利

  • 公开/公告日2016-01-13

    原文格式PDF

  • 申请/专利号CN201510726279.6

  • 发明设计人 刘畅;周大良;李平立;王生;

    申请日2015-10-30

  • 分类号G06F17/30(20060101);

  • 代理机构11291 北京同达信恒知识产权代理有限公司;

  • 代理人黄志华

  • 地址 215123 江苏省苏州市苏州工业园区星湖街328号创意产业园方正国际大厦

  • 入库时间 2023-12-18 13:28:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-10-30

    授权

    授权

  • 2016-02-10

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20151030

    实质审查的生效

  • 2016-01-13

    公开

    公开

说明书

技术领域

本发明涉及数据库查询技术领域,尤其涉及一种基于关系型数据库存储的 对象化数据模型查询方法及装置。

背景技术

对于传统数据中心的结构化数据都使用关系型数据库进行存储,优点在于 关系明确,数据查询访问效率高,缺点在于数据分散多张表存储,与业务概念 差距遥远,直观性差,理解上存在困难。于是近年来开始逐渐兴起主数据管理 (MDM)系统,主数据管理系统以对象化数据模型的方式来管理数据,更贴 近于业务实践,无论对数据的管理者还是使用者来说都更加直观和易用。

但由于目前数据中心广泛使用的都是关系型数据库,因此基于对象模型的 数据管理,其底层存储仍然主要是关系型数据库。由于面向对象的模型访问和 关系型数据访问的差异,使得基于关系型数据库存储的对象模型数据在访问查 询时遇到很大障碍,查询的方式和结果都受到限制,难以充分发挥基于对象模 型的检索意图。

现有的基于对象模型的查询方式,基本都是基于主模型元素的条件,对主 模型对象进行过滤。或者虽然可以同时设定主模型元素条件和其内嵌子模型数 组的条件组合,但只能对主模型对象进行定位,不能准确地定位出符合条件的 主模型对象和其内嵌子模型对象组合,大大限制了对象模型化数据管理的应用 范围,使其难以完成较为复杂的查询功能。

发明内容

本发明提供一种基于关系型数据库存储的对象化数据模型查询方法及装 置,能够将对象化模型的查询方便地转换为基于二维表的查询,提高对关系型 数据库的查询效率。

本发明提供一种基于关系型数据库存储的对象化数据模型查询方法,包 括:

接收用户在查询界面上发送的查询请求,所述查询请求包括一个条件项, 或包括多个条件项及其组合关系,其中,预先按结构化对象的数据模型结构, 将关系型数据库中有关联关系的表关联起来,并在查询界面上设置条件项及条 件项之间可选的组合关系,一个条件项对应对象的任意元素的元素值;

基于关系型数据库中表间的关联关系及查询请求条件确定展开方法,将所 有表记录的内容按确定的展开方法展开为一张包括多条记录的二维虚拟视图, 其中,一条记录中包括结构化对象的数据模型中各分支所包含的所有元素的内 容;

基于所述二维虚拟视图,在所述二维虚拟视图中查找符合查询条件的记 录,将记录中的各元素按照结构化对象的数据模型的形式在查询界面展示出 来。

优选地,所述关系型数据库中,对于对象的基本模型,采用一张表存储基 本模型的元素,表中的一个字段对应基本模型的一个元素;对于由基本模型派 生的派生模型,采用另一张表存储所述派生模型的元素,将关系型数据库中有 关联关系的表关联起来,具体包括:

采用基本模型的表和派生模型的表中的指定字段,将两个表关联起来;或 者

新建一张表,将基本模型的表和派生模型的表关联起来。

优选地,所述关系型数据库中,对象的同级元素存储在同一张表,在其中 一个元素为内嵌子结构时,内嵌子结构与同级元素使用同一张表或使用另一种 表存储,在使用另一张表存储时,将关系型数据库中有关联关系的表关联起来, 具体包括:

采用同级元素的表和内嵌子结构的表中的指定字段,将两个表关联起来; 或者

新建一张表,将同级元素的表和内嵌子结构的表关联起来。

优选地,所述关系型数据库中,对象的同级元素存储在同一张表,在其中 一个元素为内嵌子对象数组时,内嵌子对象数组使用另一种表存储,将关系型 数据库中有关联关系的表关联起来,具体包括:

采用同级元素的表和内嵌子对象数组的表中的指定字段,将两个表关联起 来;或者

新建一张表,将同级元素的表和内嵌子对象数组的表关联起来。

优选地,所述关系型数据库中,对象的同级元素存储在同一张表,对于对 象的任一元素内容采用代码的元素,将该代码所映射的内容存储字典表进行存 储,将关系型数据库中有关联关系的表关联起来,具体包括:

将存储内容采用代码的表与字典表关联起来。

优选地,基于关系型数据库中表间的关联关系及查询请求条件确定展开方 法,将所有表记录的内容按确定的展开方法展开为一张包括多条记录的二维虚 拟视图,具体包括:

基于关系型数据库中表间的关联关系,确定结构化对象的数据模型中各分 支所包括的所有元素,并检索出每个元素的所有元素值;

确定查询请求中所包含的各元素的元素值,若在查询请求中每个元素仅对 应一个元素值,提取检索出的各分支所包括的所有元素中每个元素的一个元素 值组成一条记录并展开;

若在查询请求中至少一个元素对应N个元素值且为或的关系,提取检索出 的各分支所包括的所有元素中每个元素的一个元素值组成一条记录并展开;

若在查询请求中至少一个元素对应N个元素值且N个元素值为且的关系, 对于在查询请求中包含N个元素值的元素,提取N个元素值,对于其它元素 提取一个元素值组成一条记录并展开,N为大于1的正整数。

优选地,将记录中的各元素按照结构化对象的数据模型的形式在查询界面 展示出来,具体包括:

将记录中除属于查询请求中的元素外其它元素的元素值相同的多条记录, 按照对象的模型合并为一条记录,若合并的多条记录中属于查询请求中元素的 元素值为一个,则在合并的记录中显示该元素值,若合并的多条记录中属于查 询请求中元素的元素值为多个,将该多个元素值以数组的形式显示。

优选地,将记录中的各元素按照结构化对象的模型的形式在查询界面展示 之前,还包括:

确定查询请求中所包含的各元素的元素值,若在查询请求中至少一个元素 对应N个元素值且为或的关系,将记录中类型为基本元素的元素的元素值相同 的多条记录,按照对象的模型合并为一条记录,若合并的多条记录中元素的元 素值为一个,则在合并的记录中显示该元素值,若合并的多条记录中元素的元 素值为多个,将该多个元素值以数组的形式显示。

本发明还提供一种基于关系型数据库存储的对象化数据模型查询装置,其 特征在于,包括:

请求接收单元,用于接收用户在查询界面上发送的查询请求,所述查询请 求包括一个条件项,或包括多个条件项及其组合关系,其中,预先按结构化对 象的数据模型结构,将关系型数据库中有关联关系的表关联起来,并在查询界 面上设置条件项及条件项之间可选的组合关系,一个条件项对应对象的任意元 素的元素值;

视图展开单元,用于基于关系型数据库中表间的关联关系及查询请求条件 确定展开方法,将所有表记录的内容按确定的展开方法展开为一张包括多条记 录的二维虚拟视图,其中,一条记录中包括结构化对象的数据模型中各分支所 包含的所有元素的内容;

查询显示单元,用于基于所述二维虚拟视图,在所述二维虚拟视图中查找 符合查询条件的记录,将记录中的各元素按照结构化对象的数据模型的形式在 查询界面展示出来。

优选地,所述关系型数据库中,对于对象的基本模型,采用一张表存储基 本模型的元素,表中的一个字段对应基本模型的一个元素;对于由基本模型派 生的派生模型,采用另一张表存储所述派生模型的元素,请求接收单元将关系 型数据库中有关联关系的表关联起来,具体包括:

采用基本模型的表和派生模型的表中的指定字段,将两个表关联起来;或 者

新建一张表,将基本模型的表和派生模型的表关联起来。

优选地,所述关系型数据库中,对象的同级元素存储在同一张表,在其中 一个元素为内嵌子结构时,内嵌子结构与同级元素使用同一张表或使用另一种 表存储,在使用另一张表存储时,请求接收单元将关系型数据库中有关联关系 的表关联起来,具体包括:

采用同级元素的表和内嵌子结构的表中的指定字段,将两个表关联起来; 或者

新建一张表,将同级元素的表和内嵌子结构的表关联起来。

优选地,所述关系型数据库中,对象的同级元素存储在同一张表,在其中 一个元素为内嵌子对象数组时,内嵌子对象数组使用另一种表存储,请求接收 单元将关系型数据库中有关联关系的表关联起来,具体包括:

采用同级元素的表和内嵌子对象数组的表中的指定字段,将两个表关联起 来;或者

新建一张表,将同级元素的表和内嵌子对象数组的表关联起来。

优选地,所述关系型数据库中,对象的同级元素存储在同一张表,对于对 象的任一元素内容采用代码的元素,将该代码所映射的内容存储字典表进行存 储,请求接收单元将关系型数据库中有关联关系的表关联起来,具体包括:

将存储内容采用代码的表与字典表关联起来。

优选地,视图展开单元基于关系型数据库中表间的关联关系及查询请求条 件确定展开方法,将所有表记录的内容按确定的展开方法展开为一张包括多条 记录的二维虚拟视图,具体包括:

基于关系型数据库中表间的关联关系,确定结构化对象的数据模型中各分 支所包括的所有元素,并检索出每个元素的所有元素值;

确定查询请求中所包含的各元素的元素值,若在查询请求中每个元素仅对 应一个元素值,提取检索出的各分支所包括的所有元素中每个元素的一个元素 值组成一条记录并展开;

若在查询请求中至少一个元素对应N个元素值且为或的关系,提取检索出 的各分支所包括的所有元素中每个元素的一个元素值组成一条记录并展开;

若在查询请求中至少一个元素对应N个元素值且N个元素值为且的关系, 对于在查询请求中包含N个元素值的元素,提取N个元素值,对于其它元素 提取一个元素值组成一条记录并展开,N为大于1的正整数。

优选地,视图展开单元将记录中的各元素按照结构化对象的数据模型的形 式在查询界面展示出来,具体包括:

将记录中除属于查询请求中的元素外其它元素的元素值相同的多条记录, 按照对象的模型合并为一条记录,若合并的多条记录中属于查询请求中元素的 元素值为一个,则在合并的记录中显示该元素值,若合并的多条记录中属于查 询请求中元素的元素值为多个,将该多个元素值以数组的形式显示。

优选地,视图展开单元将记录中的各元素按照结构化对象的模型的形式在 查询界面展示之前,还包括:

确定查询请求中所包含的各元素的元素值,若在查询请求中至少一个元素 对应N个元素值且为或的关系,将记录中类型为基本元素的元素的元素值相同 的多条记录,按照对象的模型合并为一条记录,若合并的多条记录中元素的元 素值为一个,则在合并的记录中显示该元素值,若合并的多条记录中元素的元 素值为多个,将该多个元素值以数组的形式显示。

本发明提供的基于关系型数据库存储的对象化数据模型查询方法及装置, 具有以下有益效果:

能够将对象化数据模型的查询方便地转换为基于二维表的查询,用户可以 直观地使用主模型的元素和内嵌子模型元素甚至孙模型的元素作为查询条件 进行任意组合,准确地检索出符合条件的主模型记录及其内嵌的子孙模型记录 的组合,并将结果以模型对象的展现形式对用户展现,同时其检索效率与一般 关系型库二维表的检索效率基本一致。

附图说明

图1为本发明实施例提供的基于关系型数据库存储的对象化数据模型查询 方法流程图;

图2为本发明实施例提供的基于关系型数据库存储的对象化数据模型查询 装置结构图。

具体实施方式

下面结合附图和实施例对本发明提供的基于关系型数据库存储的对象化 数据模型查询方法进行更详细地说明。

主数据管理系统的一大特点就是以对象化数据模型的方式来描述数据,将 展现方式与内部存储方式相分离,数据的展现更多地以业务对象的方式进行。 但受制于底层关系型数据库的二维表存储模式,其基于业务对象的查询访问受 到很大制约,只能设置简单属性条件以主模型对象作为检索目标,要么无法使 用组合条件、要么无法定位内嵌子模型对象,存在各种缺陷。

本发明的目的,就是解决基于对象模型的数据管理与基于关系型数据库存 储之间的衔接转换差异,使得基于对象模型的数据管理查询检索功能具有同基 于二维表的数据库检索一样强大同时更加直观并贴近业务,并保证有相接近的 效率,满足实际业务需要,推进对象模型数据管理模式的广泛应用,提高查询 效率。

本发明提供一种基于关系型数据库的对象化模型查询方法,如图1所示, 包括:

步骤101,接收用户在查询界面上发送的查询请求,所述查询请求包括一 个条件项,或包括多个条件项及其组合关系,其中,预先按结构化对象的数据 模型结构,将关系型数据库中有关联关系的表关联起来,并在查询界面上设置 条件项及条件项之间可选的组合关系,一个条件项对应对象的任意元素的元素 值;

面向对象的模型数据管理,首先建立的是对象化的业务描述模型,对象的 数据模型包括基本模型、派生模型,基本模型包括至少一个元素,派生模型是 由基本模型继承而来,除了用过基本模型的元素外,派生模型包括至少一个元 素,例如人作为一个基本模型,人的元素包括姓名、性别、年龄,学生、医生 是人的派生模型,学生的元素包括身份证、学号、学校、联系方式等,医生的 元素包括医院、职称、科室、到过的地方等。

内嵌子结构和内嵌子对象数组是元素的常见的两种形式,内嵌子结构包括 多个元素,多个元素隶属于内嵌子结构,例如联系方式可以是内嵌子结构,联 系方式可以包括手机、邮件、通信地址等元素。在一个元素包括多个相同性质 的内容时,该元素为内嵌子对象数组,例如医生到过的地方可以为内嵌子对象 数组,医生到过的地方可以是天津、广州、三亚等。

对象的数据模型从是否有派生关系上可以分为基本模型和派生模型,从是 否有内嵌子对象数组上,可以分为父模型-子模型-孙模型等等,一个父模型中 可以包含多个相互独立的子模型对象数组,各子模型对象中又可以包含多个独 立的孙模型对象数组,如此嵌套,可以构成一个复杂的多层次的结构化对象数 据模型。由于允许嵌套,最后会形成一个树状结构的对象模型,所以对象模型, 可以理解为包括多个从开始节点到结束节点的多个分支的树状结构,各级节点 可以理解为对象的元素。

带有多个子孙对象数组的对象模型在现实业务应用中存在广泛需求,例 如:学校—班级—学生+课程模型,医院—科室—医生模型,家庭—成员—联 系方式模型等,虽然在外观上表现为一个完整的对象模型,但后台使用关系型 数据库存储时其数据可能分散存储对应在几张甚至十几张表上。

具体地,本发明实施例在关系型数据库中,对于对象的基本模型,采用一 张表存储基本模型的元素,表中的一个字段对应基本模型的一个元素;对于由 基本模型派生的派生模型,采用另一张表存储所述派生模型的元素。

优选地,本发明实施例预先将关系型数据库中有关联关系的表关联起来, 可以采用如下任一方式:

1)采用基本模型的表和派生模型的表中的指定字段,将两个表关联起来;

例如对于人的基本模型,可以采用一张表存储,表中的字段为身份证号、 姓名、性别、年龄,对于学生的派生模型,可以采用另一种表存储,表中的字 段为学号、学校和入学时间等,由于身份证号可以唯一标识一个对象,因此通 过在学生的表中增加身份证号,将两个表关联起来。

2)新建一张表,将基本模型的表和派生模型的表关联起来。

可以新建一张表,表中的字段为身份证和学号,通过人基本表中的身份证 号与学生表中的学号建立对应关系,从而将两张表关联起来。

本发明实施例在关系型数据库中,对象的同级元素存储在同一张表,在其 中一个元素为内嵌子结构时,内嵌子结构与同级元素可以使用同一张表或使用 另一种表存储。在树状结构的对象化数据模型中,隶属于同一个节点的元素可 以理解为同级元素,元素的形式可能是派生模型,可能是内嵌子结构,也可以 是内嵌子对象数组,也可以是仅包括一个内容的基本元素。通常情况下,同级 元素存储在同一张表,对于形式为内嵌子结构的元素,可以与同级元素使用同 一张表存储,也可以使用另一张表存储。

优选地,在使用另一张表存储时,将关系型数据库中有关联关系的表关联 起来,具体可以采用如下任一方式:

1)采用同级元素的表和内嵌子结构的表中的指定字段,将两个表关联起 来;

例如人的元素包括姓名、年龄、性别、联系方式,联系方式包括手机、邮 件、通信地址,联系方式为内嵌子结构,可以将姓名、年龄、性别存储为一张 表,将手机、邮件、通信地址存储为另一种表,可以利用两个表中代表人唯一 身份的编号字段,将两张表关联起来。

2)新建一张表,将同级元素的表和内嵌子结构的表关联起来。

例如人的元素包括姓名、年龄、性别、联系方式,联系方式包括手机、邮 件、通信地址,联系方式为内嵌子结构,可以将姓名、年龄、性别存储为一张 表,将手机、邮件、通信地址存储为另一种表,可以再新建一个表,将属于同 一个人的两张表中的相关记录关联起来。

本发明实施例在关系型数据库中,对象的同级元素存储在同一张表,在其 中一个元素为内嵌子对象数组时,内嵌子对象数组使用另一种表存储。在树状 结构的对象化模型中,隶属于同一个节点的元素可以理解为同级元素,元素的 形式可能是派生模型,可能是内嵌子结构,也可以是内嵌子对象数组,也可以 是仅包括一个内容的基本元素。

本发明实施例将关系型数据库中有关联关系的表关联起来,具体可以采用 如下任一方式:

1)采用同级元素的表和内嵌子对象数组的表中的指定字段,将两个表关 联起来;

例如对于医院,其元素包括医院名称、医院编号、医院的科室,医院的科 室为内嵌子对象数组,可以使用一张表存储医院名称、医院编号,另一种表存 储医院编号、科室名称、科室简介等,从而可以通过医院的编号将两张表关联 起来。

2)新建一张表,将同级元素的表和内嵌子对象数组的表关联起来。

例如对于医院,其元素包括医院名称、医院编号、医院的科室,医院的科 室为内嵌子对象数组,可以使用一张表存储医院名称、医院编号,另一种表存 储科室编号、科室名称,新建一张表,存储医院编号、科室编号,从而可以通 过医院编号和科室编号将两张表关联起来。

关系型数据库中,对象的同级元素存储在同一张表,在树状结构的对象化 模型中,隶属于同一个节点的元素可以理解为同级元素,元素的形式可能是派 生模型,可能是内嵌子结构,也可以是内嵌子对象数组,也可以是仅包括一个 内容的基本元素。

对于对象的任一元素内容采用代码的元素,其内容需要依赖其他解释型内 容才能进行正确展现。将该代码所映射的内容存储字典表进行存储,将关系型 数据库中有关联关系的表关联起来,具体包括:

将存储内容采用代码的表与字典表关联起来。

例如对于科室,可以11、12等代码代表其具体对应的科室名称,字典表 至少包括代码字段、代码解释字段。为了防止一个代码在多个表中可能对应不 同的内容,优选地,可以在字段中增加一个类型字段,根据代码所代表的含义 映射到该字段,在字段对应的记录中查找相应的代码对应的代码解释内容。

本发明实施例根据对象的模型的常用模式,给出了将关系型数据库中有关 联关系的表关联起来,具体的关联方式不限于此,关联的目的是可以根据表内 容及这些关联关系可以查找到树状结构的对象模型中任一级的任意元素。

由于预先建立了表间的关联关系,因此相对于建立了对象的数据模型与数 据库的多张表的映射关系,通过关系型数据库二维表的关联关系实现模拟对象 数据模型的树状结构。

为了实现能够对树状结构的对象各级元素作为查询条件进行任意组合,本 发明实施增加了查询界面,该查询界面为动态添加条件项的界面,条件项的数 目可以根据查询的需要动态进行增加,每个条件项对一个元素设置条件,可以 选择对象的任意元素的元素值,操作符可以是等于、不等于、大于、小于、包 含、区间,内嵌子对象数组中的同一个元素允许出现在一个以上的条件项目里, 条件项之间可以设置与/或关系组合,从而实现复杂组合条件的设置。

步骤102,基于关系型数据库中表间的关联关系及查询请求条件确定展开 方法,将所有表记录的内容按确定的展开方法展开为一张包括多条记录的二维 虚拟视图,其中,一条记录中包括结构化对象的数据模型中各分支所包含的所 有元素的内容;

如前所述,基于关系型数据库中表间的关联关系,可以查找到树状结构的 对象中从开始节点到每个结束节点的各分支所包括的所有元素,并检索出每个 元素的所有元素值。

该步骤实际是基于关系型数据库中表间的关联关系,将后台关系型数据库 实际的多张表通过join或leftjoin模式(派生使用join模式,内嵌子对象数组 采用leftjoin)展开为一张大的二维虚拟视图,一条记录可以理解为包括各分支 所有元素的记录,因此在该二维虚拟视图中,无论是哪一级节点的元素,即无 论是主对象的元素还是子孙对象的元素,都被展开为二维虚拟视图中的同级元 素。

步骤103,基于所述二维虚拟视图,在所述二维虚拟视图中查找符合查询 条件的记录,将记录中的各元素按照结构化对象的数据模型的形式在查询界面 展示出来。

记录中会包含对象的各分支所有元素,而查询条件是基于对象的任意元素 设置的,因此,可以将查询请求中元素的元素值与记录中相应元素的元素值进 行比对,从而筛选出符合条件的记录,该记录的展现形式为将各级元素作为同 级元素的展现形式,需要按照对象的数据模型,将其转换为树状结构的展现形 式,从而符合查询需求。

优选地,步骤102中,将记录中的各元素按照结构化对象的数据模型的形 式在查询界面展示出来,具体包括:

基于关系型数据库中表间的关联关系,确定结构化对象的数据模型中各分 支所包括的所有元素,并检索出每个元素的所有元素值;

确定查询请求中所包含的各元素的元素值,若在查询请求中每个元素仅对 应一个元素值,提取检索出的各分支所包括的所有元素中每个元素的一个元素 值组成一条记录并展开;

确定查询请求中所包含的各元素的元素值,若在查询请求中至少一个元素 对应N个元素值且为或的关系,提取检索出的各分支所包括的所有元素中每个 元素的一个元素值组成一条记录并展开;

若在查询请求中至少一个元素对应N个元素值且N个元素值为且的关系, 对于在查询请求中包含N个元素值的元素,提取N个元素值,对于其它元素 提取一个元素值组成一条记录并展开,N为大于1的正整数。

举例说明,人-姓名+年龄+性别+到过的地方+从事过的职业,到过的地方 为子对象数组1,从事过的职业也为子对象数组2,对于张三这个对象,子对 象数组1可以包括如下内容:天津、广州、三亚、海口,子对象数组2包括教 师、医生,基于表间的关联关系,在进行二维虚拟视图展示时,需要张三的姓 名+年龄+性别+到过的地方+从事过的职业。如果在查询请求中设置的是要查询 到过天津的记录,则需要针对到过的地方设置一个元素值(天津),则针对张 三的记录的展开形式为:

张三,40,男,天津,教师;

张三,40,男,广州,教师;

张三,40,男,三亚,教师;

张三,40,男,海口,教师;

张三,40,男,天津,医生;

张三,40,男,广州,医生;

张三,40,男,三亚,医生;

张三,40,男,海口,医生。

同样,针对李四等其他对象,也是采用这种展开形式,即提取检索出的各 分支所包括的所有元素中每个元素的一个元素值组成一条记录并展开,同一元 素有多个不同的元素值时,采用多条记录展示。

若在查询请求中至少一个元素对应N个元素值,例如需要查询既到过天津 又到过广州的人,如果在查询请求中设置的是要查询到过天津且到过广州的记 录,则需要针对到过的地方设置两个元素值(天津、广州),设置其组合关系 为和的关系,则在展示时,对于到过的地点这个元素,需要提取2个值,对于 其它元素提取一个元素值组成一条记录并展开,具体的展开方式如下:

张三,40,男,天津,广州,教师;

张三,40,男,天津,三亚,教师;

张三,40,男,天津,海口,教师;

张三,40,男,广州,三亚,教师;

张三,40,男,广州,海口,教师;

张三,40,男,海口,三亚,教师;

张三,40,男,天津,广州,医生;

张三,40,男,天津,三亚,医生;

张三,40,男,天津,海口,医生;

张三,40,男,广州,三亚,医生;

张三,40,男,广州,海口,医生;

张三,40,男,海口,三亚,医生。

同样,针对李四等其他对象,也是采用这种展开形式。

步骤102,实现的是将针对对象模型中每个元素设置的查询条件转换为针 对虚拟二维视图中的元素的查询条件,对于同一子对象的同一元素被设置两个 以上同时要求符合条件的情况,由于其对应的表被leftjoin多次,必须将多个 条件分别对应到不同的元素上。

优选地,步骤103中,将记录中的各元素按照结构化对象的数据模型的形 式在查询界面展示出来,具体包括:

将记录中类型为基本元素的元素的元素值相同的多条记录,按照对象的数 据模型合并为一条记录,若合并的多条记录中元素的元素值为一个,则在合并 的记录中显示该元素值,若合并的多条记录中元素的元素值为多个,将该多个 元素值以数组的形式显示。

仍以上述举例进行说明,如果在查询请求中设置的是要查询到过天津的记 录,则会检索出如下记录:

张三,40,男,天津,教师;

张三,40,男,天津,医生;

由于在对象的模型中,姓名、性别和年龄为基本元素,因此可以将张三的 两条记录合并为一条记录:

张三,40,男,天津,{教师,医生}

如果在查询请求中设置的是要查询到过天津且到过广州的记录,则会检索 出如下记录:

张三,40,男,天津,广州,教师;

张三,40,男,天津,广州,医生;

由于在对象的模型中,姓名、性别和年龄为基本元素,因此可以将张三的 两条记录合并为一条记录:

张三,40,男,{天津,广州},{教师,医生}

可见,检索出来的记录上的每个元素值都与虚拟二维表的元素相对应。获 取这些符合条件的记录后,对这些记录的元素进行重新再组装,按照二维视图 展开的方式进行逆向折叠映射,将每个元素值对应到对象模型相应的元素上。 对于同一个子对象的同一个元素被设置两个以上同时要求符合条件的情况,折 叠映射后会产生两个或以上的同类子对象,形成数组。

优选地,本发明实施例将记录中的各元素按照结构化对象的数据模型的形 式在查询界面展示之前,还包括:

确定查询请求中所包含的各元素的元素值,若在查询请求中至少一个元素 对应N个元素值且为或的关系,将记录中类型为基本元素的元素的元素值相同 的多条记录,按照对象的模型合并为一条记录,若合并的多条记录中元素的元 素值为一个,则在合并的记录中显示该元素值,若合并的多条记录中元素的元 素值为多个,将该多个元素值以数组的形式显示。

仍以上述举例进行说明,如果在查询请求中设置的是要查询到过天津或广 州的记录,则会检索出如下记录:

张三,40,男,天津,教师;

张三,40,男,天津,医生;

张三,40,男,广州,教师;

张三,40,男,广州,医生。

由于在对象的模型中,姓名、性别和年龄为基本元素,因此可以将张三的 两条记录合并为一条记录:

张三,40,男,{天津,广州},{教师,医生}

虚拟二维视图查询的结果是完全展开的结果,步骤103中进行的组装会将 完全展开的结果转换为对象模型的表现形式,其表现形式是将符合条件的排列 组合以对象模型的方式全部罗列一遍。

在此基础上,可以根据应用的需要进行结果的合并,例如按照主对象进行 唯一性合并,于是就将查询结果按照主对象进行唯一性归并,各个对应的子对 象数组也分别进行归并,于是就得到了满足查询条件的所有主对象,同时这些 主对象中出现的子对象数组也是满足查询条件的。

本发明使用关系型数据库来存储结构化的对象模型,将结构化对象模型的 基本属性、派生、内嵌子结构、内嵌子对象数组等特性都使用一定的关系表及 相互关系进行描述,使得结构化对象数据可以使用多张关系表进行存储和映 射。将对象模型对应的后台多张关系表按照对象模型的特性和查询条件特性构 建成一张虚拟的二维视图;将针对结构化对象模型设置的结构化组合查询条件 转换映射为针对虚拟二维视图的查询条件;将针对二维视图查询得到的结果单 个记录使用反向折叠映射方式拼装为结构化模型对象对应的数据结构;将查询 得到的多个结构化模型对象对应的数据结构按照应用需要的归并项进行数组 归并,得到符合查询条件和结果形式的主对象及其对应的子对象数组。

采用本发明的装置和方法,能够将对象化数据模型的查询方便地转换为基 于二维表的查询,用户可以直观地使用主模型的元素和内嵌子模型元素甚至孙 模型的元素作为查询条件进行任意组合,准确地检索出符合条件的主模型对象 记录及其内嵌的子孙模型对象记录的组合,并将其查询结果重新组装符合模型 对象外表的表现形式,同时其检索效率与一般关系型库二维表的检索效率基本 一致,使得基于模型对象的检索查询能力可以满足实际应用的需求。

基于同一发明构思,本发明实施例中还提供了一种基于关系型数据库存储 的对象化数据模型查询装置,由于该装置解决问题的原理与一种基于关系型数 据库的对象化模型查询方法相似,因此该装置的实施可以参见方法的实施,重 复之处不再赘述。

本发明提供一种基于关系型数据库的对象化模型查询装置,如图2所示, 包括:

请求接收单元201,用于接收用户在查询界面上发送的查询请求,所述查 询请求包括一个条件项,或包括多个条件项及其组合关系,其中,预先按结构 化对象的数据模型结构,将关系型数据库中有关联关系的表关联起来,并在查 询界面上设置条件项及条件项之间可选的组合关系,一个条件项对应对象的任 意元素的元素值;

视图展开单元202,用于基于关系型数据库中表间的关联关系及查询请求 条件确定展开方法,将所有表记录的内容按确定的展开方法展开为一张包括多 条记录的二维虚拟视图,其中,一条记录中包括结构化对象的数据模型中各分 支所包含的所有元素的内容;

查询显示单元203,用于基于所述二维虚拟视图,在所述二维虚拟视图中 查找符合查询条件的记录,将记录中的各元素按照结构化对象的数据模型的形 式在查询界面展示出来。

优选地,所述关系型数据库中,对于对象的基本模型,采用一张表存储基 本模型的元素,表中的一个字段对应基本模型的一个元素;对于由基本模型派 生的派生模型,采用另一张表存储所述派生模型的元素,请求接收单元将关系 型数据库中有关联关系的表关联起来,具体包括:

采用基本模型的表和派生模型的表中的指定字段,将两个表关联起来;或 者

新建一张表,将基本模型的表和派生模型的表关联起来。

优选地,所述关系型数据库中,对象的同级元素存储在同一张表,在其中 一个元素为内嵌子结构时,内嵌子结构与同级元素使用同一张表或使用另一种 表存储,在使用另一张表存储时,请求接收单元将关系型数据库中有关联关系 的表关联起来,具体包括:

采用同级元素的表和内嵌子结构的表中的指定字段,将两个表关联起来; 或者

新建一张表,将同级元素的表和内嵌子结构的表关联起来。

优选地,所述关系型数据库中,对象的同级元素存储在同一张表,在其中 一个元素为内嵌子对象数组时,内嵌子对象数组使用另一种表存储,请求接收 单元将关系型数据库中有关联关系的表关联起来,具体包括:

采用同级元素的表和内嵌子对象数组的表中的指定字段,将两个表关联起 来;或者

新建一张表,将同级元素的表和内嵌子对象数组的表关联起来。

优选地,所述关系型数据库中,对象的同级元素存储在同一张表,对于对 象的任一元素内容采用代码的元素,将该代码所映射的内容存储字典表进行存 储,请求接收单元将关系型数据库中有关联关系的表关联起来,具体包括:

将存储内容采用代码的表与字典表关联起来。

优选地,视图展开单元基于关系型数据库中表间的关联关系及查询请求条 件确定展开方法,将所有表记录的内容按确定的展开方法展开为一张包括多条 记录的二维虚拟视图,具体包括:

基于关系型数据库中表间的关联关系,确定结构化对象的数据模型中各分 支所包括的所有元素,并检索出每个元素的所有元素值;

确定查询请求中所包含的各元素的元素值,若在查询请求中每个元素仅对 应一个元素值,提取检索出的各分支所包括的所有元素中每个元素的一个元素 值组成一条记录并展开;

若在查询请求中至少一个元素对应N个元素值且为或的关系,提取检索出 的各分支所包括的所有元素中每个元素的一个元素值组成一条记录并展开;

若在查询请求中至少一个元素对应N个元素值且N个元素值为且的关系, 对于在查询请求中包含N个元素值的元素,提取N个元素值,对于其它元素 提取一个元素值组成一条记录并展开,N为大于1的正整数。

优选地,视图展开单元将记录中的各元素按照结构化对象的数据模型的形 式在查询界面展示出来,具体包括:

将记录中除属于查询请求中的元素外其它元素的元素值相同的多条记录, 按照对象的模型合并为一条记录,若合并的多条记录中属于查询请求中元素的 元素值为一个,则在合并的记录中显示该元素值,若合并的多条记录中属于查 询请求中元素的元素值为多个,将该多个元素值以数组的形式显示。

优选地,视图展开单元将记录中的各元素按照结构化对象的模型的形式在 查询界面展示之前,还包括:

确定查询请求中所包含的各元素的元素值,若在查询请求中至少一个元素 对应N个元素值且为或的关系,将记录中类型为基本元素的元素的元素值相同 的多条记录,按照对象的模型合并为一条记录,若合并的多条记录中元素的元 素值为一个,则在合并的记录中显示该元素值,若合并的多条记录中元素的元 素值为多个,将该多个元素值以数组的形式显示。

现有的基于对象模型的查询方式,基本都是基于主模型元素的条件,对主 模型对象进行过滤。或者虽然可以同时设定主模型元素条件和其内嵌子模型数 组的条件组合,但只能对主模型对象进行定位,不能准确地定位出符合条件的 主模型对象和其内嵌子模型对象组合。

采用本发明的装置和方法,能够将对象化模型的查询方便地转换为基于二 维表的查询,用户可以直观地使用主模型的元素和内嵌子模型元素甚至孙模型 的元素作为查询条件进行任意组合,准确地检索出符合条件的主模型对象记录 及其内嵌的子孙模型对象记录的组合,并将结果以模型对象的展现形式对用户 展现,同时其检索效率与一般关系型库二维表的检索效率基本一致。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产 品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和 /或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入 式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算 机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一 个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设 备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中 的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个 流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使 得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处 理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个 流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基 本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要 求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发 明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号