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

文档序号:9489524阅读:来源:国知局
048]若在查询请求中至少一个元素对应N个元素值且为或的关系,提取检索出的各分支所包括的所有元素中每个元素的一个元素值组成一条记录并展开;
[0049]若在查询请求中至少一个元素对应N个元素值且N个元素值为且的关系,对于在查询请求中包含N个元素值的元素,提取N个元素值,对于其它元素提取一个元素值组成一条记录并展开,N为大于1的正整数。
[0050]优选地,视图展开单元将记录中的各元素按照结构化对象的数据模型的形式在查询界面展示出来,具体包括:
[0051]将记录中除属于查询请求中的元素外其它元素的元素值相同的多条记录,按照对象的模型合并为一条记录,若合并的多条记录中属于查询请求中元素的元素值为一个,则在合并的记录中显示该元素值,若合并的多条记录中属于查询请求中元素的元素值为多个,将该多个元素值以数组的形式显示。
[0052]优选地,视图展开单元将记录中的各元素按照结构化对象的模型的形式在查询界面展示之前,还包括:
[0053]确定查询请求中所包含的各元素的元素值,若在查询请求中至少一个元素对应N个元素值且为或的关系,将记录中类型为基本元素的元素的元素值相同的多条记录,按照对象的模型合并为一条记录,若合并的多条记录中元素的元素值为一个,则在合并的记录中显示该元素值,若合并的多条记录中元素的元素值为多个,将该多个元素值以数组的形式显不ο
[0054]本发明提供的基于关系型数据库存储的对象化数据模型查询方法及装置,具有以下有益效果:
[0055]能够将对象化数据模型的查询方便地转换为基于二维表的查询,用户可以直观地使用主模型的元素和内嵌子模型元素甚至孙模型的元素作为查询条件进行任意组合,准确地检索出符合条件的主模型记录及其内嵌的子孙模型记录的组合,并将结果以模型对象的展现形式对用户展现,同时其检索效率与一般关系型库二维表的检索效率基本一致。
【附图说明】
[0056]图1为本发明实施例提供的基于关系型数据库存储的对象化数据模型查询方法流程图;
[0057]图2为本发明实施例提供的基于关系型数据库存储的对象化数据模型查询装置结构图。
【具体实施方式】
[0058]下面结合附图和实施例对本发明提供的基于关系型数据库存储的对象化数据模型查询方法进行更详细地说明。
[0059]主数据管理系统的一大特点就是以对象化数据模型的方式来描述数据,将展现方式与内部存储方式相分离,数据的展现更多地以业务对象的方式进行。但受制于底层关系型数据库的二维表存储模式,其基于业务对象的查询访问受到很大制约,只能设置简单属性条件以主模型对象作为检索目标,要么无法使用组合条件、要么无法定位内嵌子模型对象,存在各种缺陷。
[0060]本发明的目的,就是解决基于对象模型的数据管理与基于关系型数据库存储之间的衔接转换差异,使得基于对象模型的数据管理查询检索功能具有同基于二维表的数据库检索一样强大同时更加直观并贴近业务,并保证有相接近的效率,满足实际业务需要,推进对象模型数据管理模式的广泛应用,提高查询效率。
[0061]本发明提供一种基于关系型数据库的对象化模型查询方法,如图1所示,包括:
[0062]步骤101,接收用户在查询界面上发送的查询请求,所述查询请求包括一个条件项,或包括多个条件项及其组合关系,其中,预先按结构化对象的数据模型结构,将关系型数据库中有关联关系的表关联起来,并在查询界面上设置条件项及条件项之间可选的组合关系,一个条件项对应对象的任意元素的元素值;
[0063]面向对象的模型数据管理,首先建立的是对象化的业务描述模型,对象的数据模型包括基本模型、派生模型,基本模型包括至少一个元素,派生模型是由基本模型继承而来,除了用过基本模型的元素外,派生模型包括至少一个元素,例如人作为一个基本模型,人的元素包括姓名、性别、年龄,学生、医生是人的派生模型,学生的元素包括身份证、学号、学校、联系方式等,医生的元素包括医院、职称、科室、到过的地方等。
[0064]内嵌子结构和内嵌子对象数组是元素的常见的两种形式,内嵌子结构包括多个元素,多个元素隶属于内嵌子结构,例如联系方式可以是内嵌子结构,联系方式可以包括手机、邮件、通信地址等元素。在一个元素包括多个相同性质的内容时,该元素为内嵌子对象数组,例如医生到过的地方可以为内嵌子对象数组,医生到过的地方可以是天津、广州、三亚等。
[0065]对象的数据模型从是否有派生关系上可以分为基本模型和派生模型,从是否有内嵌子对象数组上,可以分为父模型-子模型-孙模型等等,一个父模型中可以包含多个相互独立的子模型对象数组,各子模型对象中又可以包含多个独立的孙模型对象数组,如此嵌套,可以构成一个复杂的多层次的结构化对象数据模型。由于允许嵌套,最后会形成一个树状结构的对象模型,所以对象模型,可以理解为包括多个从开始节点到结束节点的多个分支的树状结构,各级节点可以理解为对象的元素。
[0066]带有多个子孙对象数组的对象模型在现实业务应用中存在广泛需求,例如:学校一班级一学生+课程模型,医院一科室一医生模型,家庭一成员一联系方式模型等,虽然在外观上表现为一个完整的对象模型,但后台使用关系型数据库存储时其数据可能分散存储对应在几张甚至十几张表上。
[0067]具体地,本发明实施例在关系型数据库中,对于对象的基本模型,采用一张表存储基本模型的元素,表中的一个字段对应基本模型的一个元素;对于由基本模型派生的派生模型,采用另一张表存储所述派生模型的元素。
[0068]优选地,本发明实施例预先将关系型数据库中有关联关系的表关联起来,可以采用如下任一方式:
[0069]1)采用基本模型的表和派生模型的表中的指定字段,将两个表关联起来;
[0070]例如对于人的基本模型,可以采用一张表存储,表中的字段为身份证号、姓名、性另IJ、年龄,对于学生的派生模型,可以采用另一种表存储,表中的字段为学号、学校和入学时间等,由于身份证号可以唯一标识一个对象,因此通过在学生的表中增加身份证号,将两个表关联起来。
[0071]2)新建一张表,将基本模型的表和派生模型的表关联起来。
[0072]可以新建一张表,表中的字段为身份证和学号,通过人基本表中的身份证号与学生表中的学号建立对应关系,从而将两张表关联起来。
[0073]本发明实施例在关系型数据库中,对象的同级元素存储在同一张表,在其中一个元素为内嵌子结构时,内嵌子结构与同级元素可以使用同一张表或使用另一种表存储。在树状结构的对象化数据模型中,隶属于同一个节点的元素可以理解为同级元素,元素的形式可能是派生模型,可能是内嵌子结构,也可以是内嵌子对象数组,也可以是仅包括一个内容的基本元素。通常情况下,同级元素存储在同一张表,对于形式为内嵌子结构的元素,可以与同级元素使用同一张表存储,也可以使用另一张表存储。
[0074]优选地,在使用另一张表存储时,将关系型数据库中有关联关系的表关联起来,具体可以采用如下任一方式:
[0075]1)采用同级元素的表和内嵌子结构的表中的指定字段,将两个表关联起来;
[0076]例如人的元素包括姓名、年龄、性别、联系方式,联系方式包括手机、邮件、通信地址,联系方式为内嵌子结构,可以将姓名、年龄、性别存储为一张表,将手机、邮件、通信地址存储为另一种表,可以利用两个表中代表人唯一身份的编号字段,将两张表关联起来。
[0077]2)新建一张表,将同级元素的表和内嵌子结构的表关联起来。
[0078]例如人的元素包括姓名、年龄、性别、联系方式,联系方式包括手机、邮件、通信地址,联系方式为内嵌子结构,可以将姓名、年龄、性别存储为一张表,将手机、邮件、通信地址存储为另一种表,可以再新建一个表,将属于同一个人的两张表中的相关记录关联起来。
[0079]本发明实施例在关系型数据库中,对象的同级元素存储在同一张表,在其中一个元素为内嵌子对象数组时,内嵌子对象数组使用另一种表存储。在树状结构的对象化模型中,隶属于同一个节点的元素可以理解为同级元素,元素的形式可能是派生模型,可能是内嵌子结构,也可以是内嵌子对象数组,也可以是仅包括一个内容的基本元素。
[0080]本发明实施例将关系型数据库中有关联关系的表关联起来,具体可以采用如下任一方式:
[0081]1)采用同级元素的表和内嵌子对象数组的表中的指定字段,将两个表关联起来;
[0082]例如对于医院,其元素包括医院名称、医院编号、医院的科室,医院的科室为内嵌子对象数组,可以使用一张表存储医院名称、医院编号,另一种表存储医院编号、科室名称、科室简介等,从而可以通过医院的编号将两张表关联起来。
[0083]2)新建一张表,将同级元素的表和内嵌子对象数组的表关联起来。
[0084]例如对于医院,其元素包括医院名称、医院编号、医院的科室,医院的科室为内嵌子对象数组,可以使用一张表存储医院名称、医院编号,另一种表存储科室编号、科室名称,新建一张表,存储医院编号、科室编号,从而可以通过医院编号和科室编号将两张表关联起来。
[0085]关系型数据库中,对象的同级元素存储在同一张表,在树状结构的对象化模型中,隶属于同一个节点的元素可以理解为同级元素,元素的形式可能是派生模型,可能是内嵌子结构,也可以是内嵌子对象数组,也可以是仅包括一个内容的基本元素。
[0086]对于对象的任一元素内容采用代码的元素,其内容需要依赖其他解释型内容才能进行正确展现。将该代码所映射的内容存储字典表进行存储,将关系型数据库中有关
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1