CN106484699B - 数据库查询字段的生成方法及装置 - Google Patents
数据库查询字段的生成方法及装置 Download PDFInfo
- Publication number
- CN106484699B CN106484699B CN201510527568.3A CN201510527568A CN106484699B CN 106484699 B CN106484699 B CN 106484699B CN 201510527568 A CN201510527568 A CN 201510527568A CN 106484699 B CN106484699 B CN 106484699B
- Authority
- CN
- China
- Prior art keywords
- query
- field
- definition rule
- field definition
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000012795 verification Methods 0.000 claims description 77
- 230000006870 function Effects 0.000 claims description 24
- 230000014509 gene expression Effects 0.000 claims description 17
- 238000009795 derivation Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库查询字段的生成方法及装置,涉及数据库技术领域,为解决使用者无法自由定义查询字段的问题而发明。本发明的方法包括:接收基于基础数据结构制定的字段定义规则,所述字段定义规则包含所述基础数据结构中的一个或多个查询字段,以及所述一个或多个查询字段之间的运算关系;验证所述字段定义规则是否符合所述基础数据结构的查询规则;若所述字段定义规则符合所述基础数据结构的查询规则,则在数据库中生成对应所述字段定义规则的关系表,以及生成对应所述字段定义规则的自定义查询字段,并保存所述自定义查询字段。本发明主要应用于对关系型数据库进行字段自定义的过程中。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据库查询字段的生成方法及装置。
背景技术
在关系型数据库中,数据以二维关系表的形式进行存储,关系表中的一行数据称为一条记录,一列数据称为一个字段。例如在图1所示的学生信息表中,“姓名”、“年龄”、“性别”、“年级”等列各自为一个字段,而包含“文吉”、“20”、“男”、“大一”等信息在内的一整行数据内容则为一条记录。在进行数据查询时,字段通常作为查询维度使用,例如查找性别为“男”的所有学生信息,或者查找年龄介于“20岁”到“23岁”之间的所有学生信息。因此在使用者的角度上,一般也将关系表中的字段称为查询字段。
实际应用中,数据库中的查询字段是由数据库开发者根据关系表内容预先定义好的,使用者无法对其进行更改,只能在已有查询字段的数量和种类范围内对查询字段进行选择使用,因此这种预先定义好的查询字段也称为基础查询字段。例如在图1所示的学生信息表中,“姓名”、“年龄”、“性别”、“年级”等字段属于不可更改的基础查询字段,使用者可以选择“姓名”一个维度进行查询,也可以选择“年龄”+“性别”的维度组合进行查询,但却无法更改定义好的基础查询字段。但是不同使用者的查询目的千差万别,查询维度和查询粒度也各有不同,预先定义好的基础查询字段数量少、种类单一,很难满足所有使用者的查询需求。
为解决该问题,现有技术给出了一种自定义查询字段的方案(《自定义字段》百度文库)。在该方案中,数据库可以通过自动生成数据库操作语句的方式对使用者的字段更改操作进行响应,生成新的自定义查询字段。
而在上述生成查询字段的方案中,发明人发现:现有技术仅能够为使用者提供查询字段的增删操作,即使用者通过增加操作选择某些基础查询字段组合成新的查询字段,或者通过删除操作从组合的查询字段中删除某些基础查询字段。这种字段定义方式本质上是通过增删手段对已有基础查询字段进行的机械组合,属于查询维度的简单叠加,字段组合的基础仍然是数据库开发者预先开发好的基础查询字段。因此,如何真正突破基础查询字段的限制,实现查询字段的自由定义,就成为摆在人们面前的一道难题。
发明内容
本发明提供了一种数据库查询字段的生成方法及装置,能够解决现有技术中使用者无法自由定义查询字段的问题。
为解决上述技术问题,一方面,本发明提供了一种数据库查询字段的生成方法,所述方法包括:
接收基于基础数据结构制定的字段定义规则,所述字段定义规则包含所述基础数据结构中的一个或多个查询字段,以及所述一个或多个查询字段之间的运算关系;
验证所述字段定义规则是否符合所述基础数据结构的查询规则;
若所述字段定义规则符合所述基础数据结构的查询规则,则在数据库中生成对应所述字段定义规则的关系表,以及生成对应所述字段定义规则的自定义查询字段,并保存所述自定义查询字段。
另一方面,本发明还提供了一种数据库查询字段的生成装置,所述装置包括:
接收单元,用于接收基于基础数据结构制定的字段定义规则,所述字段定义规则包含所述基础数据结构中的一个或多个查询字段,以及所述一个或多个查询字段之间的运算关系;
验证单元,用于验证所述接收单元接收的所述字段定义规则是否符合所述基础数据结构的查询规则;
生成单元,用于当所述验证单元验证所述字段定义规则符合所述基础数据结构的查询规则时,在数据库中生成对应所述字段定义规则的关系表,以及生成对应所述字段定义规则的自定义查询字段;
保存单元,用于保存所述生成单元生成的所述自定义查询字段。
本发明提供的数据库查询字段的生成方法及装置,允许使用者对基础数据结构中的查询字段添加运算关系,得到字段生成规则,并对使用者编辑的字段生成规则进行验证。在通过验证后生成对应字段生成规则的自定义查询字段,供使用者后续直接使用。通过各种不同的运算关系,使用者可以基于有限的查询字段编辑出变换无穷的自定义查询字段。与现有技术中对基础查询字段进行机械组合相比,本发明能够让使用者创造出基础数据结构中没有的查询字段,真正实现查询字段的自由定义,满足各类使用者的查询需求。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了一种学生信息表的示意图;
图2示出了本发明实施例提供的一种数据库查询字段的生成方法的流程图;
图3示出了本发明实施例提供的一种基础数据结构的示意图;
图4示出了本发明实施例提供的另一种数据库查询字段的生成方法的流程图;
图5示出了本发明实施例提供的一种前端编辑界面的示意图;
图6示出了本发明实施例提供的一种数据库查询字段的生成装置的组成框图;
图7示出了本发明实施例提供的另一种数据库查询字段的生成装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为解决现有技术中使用者无法自由定义查询字段的问题,本发明实施例提供了一种数据库查询字段的生成方法。该方法主要但不仅限应用于关系型数据库中。所述关系型数据库包括:Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。如图2所示,该方法包括:
201、接收基于基础数据结构制定的字段定义规则。
所述基础数据结构是指使用者使用的数据库的关系表结构,例如对于高校业务场景,所述基础数据结构为学生信息管理数据库,对于企业业务场景,所述基础数据结构则为公司内部数据库。通常关系型数据库由一张或多张关系表构成,当有多张数据库关系表时,数据库关系表之间具有至少一个相同的查询字段,以便通过相同的查询字段建立表与表之间的表关系。实际应用中,多张数据库关系表来源于相同的数据库,也可以来源于不同的数据库,对于后者情况,即相当于对不同数据库中的关系表进行结合,用作上述基础数据结构。本实施例不对基础数据结构的范围和大小进行限制。
字段定义规则是由使用者基于数据库提供的结构化框架编辑而成的字段定义关系。数据库后台预先制定基于基础数据结构的结构化框架,并通过前端人机交互界面予以展示。使用者在专门的编辑界面中编辑字段定义规则,并上报给数据库后台进行验证。
本实施例中,编辑界面为使用者提供基础数据结构中的所有查询字段,以及允许使用者使用的运算符。使用者选择编辑所需的一个或多个查询字段,确定查询字段顺序,并基于运算符建立查询字段之间的运算关系,获得字段定义规则。与此对应的,数据库接收到前端发送的字段定义规则中包含了使用者在基础数据结构中选择的一个或多个查询字段,以及使用者确定的一个或多个查询字段之间的运算关系。
202、验证字段定义规则是否符合基础数据结构的查询规则。
虽然查询字段和运算符是由结构化框架提供的,但是查询字段与运算符之间的组合关系则是使用者根据实际需求自行制定的,因此字段定义规则难免存在不符合运算规则的可能。鉴于此,在获得字段定义规则后,数据库需要验证其是否符合基础数据结构的查询规则,以此保证字段定义规则符合常规的运算逻辑,并且能够在数据库中进行查询时能够获得对应的查询结果。
本实施例中对字段定义规则的验证手段包括但不限于是语法验证及语义验证。实际应用中可以单独使用其中一种验证手段,也可以将两种验证手段结合使用。对于后者方式,本实施例并不限定使用两种验证手段的先后顺序。
203、若字段定义规则符合基础数据结构的查询规则,则在数据库中生成对应字段定义规则的关系表,以及生成对应字段定义规则的自定义查询字段,并保存自定义查询字段。
当字段定义规则通过步骤202的验证后,在数据库中生成对应字段定义规则的关系表。如前所述,数据库本质上由一张或多张关系表构成,而字段定义规则则是对不同查询字段进行运算处理获得区别于已有查询字段的新的自定义查询字段,因此为了保证使用者后续能够通过自定义查询字段进行数据库查询,需要在数据库中生成对应字段定义规则的关系表,即生成一个包含自定义查询字段的关系表,同时该关系表还应当包含至少一个其他关系表中已有的查询字段,以便不同关系表之间能够建立表关系。
对于通过验证的字段定义规则,数据库生成并保存自定义查询字段。新生成的自定义查询字段应当至少包括自定义查询字段名称,以及字段内容,其中,字段内容为前述一个或多个查询字段的内容经过运算得到的内容结果。
在保存自定义查询字段后,数据库后台通知前端修改数据查询界面,增设新定义的自定义查询字段。实际应用中,自定义查询字段可以与已有的查询字段设置在同一个窗口/菜单中,也可以与已有查询字段相区别,单独设置在自定义窗口/菜单中,本实施例对自定义查询字段的界面表现形式不作限制。此外,本实施例同样不作限制的还包括前端修改数据查询界面的时机。前端可以周期性增设一段时间内增加的自定义查询字段,也可以基于使用者的触发操作增加自定义查询字段,而更为适于实际应用的情况则是,在数据库后端每生成一个自定义查询字段后,前端自动进行页面修改,增设数据库新生成的自定义查询字段,以保证与数据库后台的及时同步。
当然,除增设自定义查询字段外,前端还可以在页面中提供编辑/删除自定义查询字段的控件。使用者可以基于该控件对已增设的自定义查询字段进行删除或顺序调整,或者针对某个自定义查询字段进行字段定义规则的二次编辑,获得新的自定义查询字段。
进一步的,前端还可以从字段名称、字段使用热度、字段查询贡献率等维度对界面中的自定义查询字段进行动态排序,以方便使用者选择使用。
本实施例提供的数据库查询字段的生成方法,允许使用者对基础数据结构中的查询字段添加运算关系,得到字段生成规则,并对使用者编辑的字段生成规则进行验证。在通过验证后生成对应字段生成规则的自定义查询字段,供使用者后续直接使用。通过各种不同的运算关系,使用者可以基于有限的查询字段编辑出变换无穷的自定义查询字段。与现有技术中对基础查询字段进行机械组合相比,本实施例能够让使用者创造出基础数据结构中没有的查询字段,真正实现查询字段的自由定义,满足各类使用者的查询需求。
进一步的,作为对图2所示方法的细化及扩展,本发明另一实施例还提供了一种数据库查询字段的生成方法。为便于读者理解,本实施例将以学校业务场景为例,基于学生信息管理数据库进行示例性说明。如图3所示,在一种较为简单的数据结构中,学生信息管理数据库由A、B两张关系表构成。其中,表A包含“学生ID”、“学生姓名”、“学生性别”及“学生年龄”4个字段;表B包含“学生ID”、“语文成绩”、“英语成绩”3个字段。表A和表B均包含5条学生信息记录,并且通过共同的字段“学生ID”建立表关系。
如图4所示,本实施例提供的方法包括:
401、构建基础数据结构。
在图3所示示例中,表A和表B来源于同一个数据库(学生信息管理数据库),两者通过相同的查询字段“学生ID”进行关联,构成一个基础数据结构。需要说明的是,本实施例是以两张关系表为例进行的说明,图3示例中表A和表B之间具有一个相同的查询字段,但是在实际应用中关系表之间也可以具有两个以上的相同查询字段,例如,表C和表D(未在附图中示出)分别具有相同的查询字段“学生ID”和“学生性别”。此外,对于三张以上关系表组成的基础数据结构,所谓“具有相同的查询字段”是指具有能够将所有关系表关联起来的相同字段,而非一定是任意两张关系表之间都要具有相同的查询字段。举例而言,表A和表B通过相同的查询字段“学生ID”进行关联;表B和表C通过相同的查询字段“语文成绩”进行关联;表C和表D通过相同的查询字段“学生是否获得过奖学金”进行关联。由此得到“表A->表B->表C->表D”的完成表关系,而不必要求四张关系表都具有诸如“学生ID”或“语文成绩”等查询字段。
402、接收基于基础数据结构制定的字段定义规则。
在图3所示示例中,前端在编辑界面中显示的、可供使用者编辑选择的查询字段来源于步骤401构建的基础数据结构,这些查询字段包括:“学生ID”、“学生姓名”、“学生性别”、“学生年龄”、“语文成绩”及“英语成绩”共6个查询字段。使用者可以从中选择任意一个或多个查询字段进行规则编辑。
除查询字段外,字段定义规则中还包括使用者根据查询需求设置的查询字段之间的运算关系,所述运算关系由运算符表示。本实施例中,允许使用者设置的运算关系包括但不限于是:代数运算、开根运算、求导运算、积分运算、卷积运算、取整运算、除余运算及逻辑运算。
其中,代数运算为包括“加”、“减”、“乘”、“除”在内的四则运算,逻辑运算包括“与”、“或”、“非”三种逻辑表达式。逻辑运算符主要用于字段内容为属性信息的查询字段运算,而其他运算符则主要用于字段内容为数值的查询字段运算。
前端通过编辑界面接收到使用者编辑的字段定义规则后,将其返回给数据库后台。
基于图3所示示例,本实施例给出几种具体的字段定义规则,应当明确,该具体规则仅为对本实施例的示例性说明,不作为对实际应用中所有可能规则的穷尽枚举。
1、“语文成绩”结合“取整运算”,可以生成“整数语文成绩”的自定义查询字段;
2、“语文成绩”+“英语成绩”,可以生成“语文英语成绩之和”的自定义查询字段;
3、(“语文成绩”+“英语成绩”)/2,可以生成“语文英语平均成绩”的自定义查询字段;
4、“学生性别(男)”and“语文成绩(大于90分)”,可以生成“语文成绩大于90分的男同学”的自定义查询字段。
5、“语文成绩(大于90分)”and“英语成绩(大于90分)”,可以生成“是否优秀”的自定义查询字段。
本实施例中,数据库可以接收表达式形式的字段定义规则,例如在图5中,前端编辑界面中显示有表达式输入框,使用者可以在输入框中手动输入查询字段及运算符。同时编辑界面中也可以显示有查询字段和运算符的列表菜单,使用者手动选择所需的查询字段和运算符,前端根据使用者的选择内容和选择顺序在输入框中自动生成表达式。
进一步的,对于涉及复杂运算逻辑的情况,为简化使用者的操作,数据库也可以为前端提供预编函数库。该函数库中包含不同功能的方法函数,例如求和函数、卷积函数等。使用者只需要在编辑界面中选择需要的查询字段和功能函数即可。这种方式的优势在于,能够免去使用者对表达式顺序的排列。例如,如果要对字段1至字段4进行求和,手动编辑表达式的操作包括:选择字段1、选择运算符“+”、选择字段2、选择运算符“+”、选择字段3、选择运算符“+”、选择字段4,使用者需要选择三次运算符“+”。而如果使用求和函数,则使用者选择一次求和函数“sum”,并分别选择字段1、2、3、4即可获得求和表达式。
在使用者编辑完成字段定义规则后,数据库接收前端返回的字段规则的表达式,或者获取前端返回的字段规则的功能函数。
403、对字段定义规则进行语法验证。
表达式中查询字段和运算符的位置关系是由使用者人为设置的,因此难免出现不符合运算规则的问题。例如“字段1字段2+字段3”、“字段1+-*字段2”或者“字段1+字段2)/2”等。为解决此类问题,本实施例需要对使用者编辑的表达式进行语法验证,在语法结构上对表达式的规范性进行初步判断。需要说明的是,对于功能函数形式的字段定义规则,由于存在程序性错误或者与查询字段结合发生错误的可能,因此也需要进行语法验证。
本实施例采用状态机检测字段定义规则中查询字段、运算符以及查询字段和运算符的顺序关系是否符合预设的语法规则。其中,对查询字段和运算符的验证主要目的在于保证查询字段内容的可运算性,如果查询字段内容为“是/否”等属性内容,那么将其与代数运算符结合就会产生运算错误;同样,如果查询字段内容为数值,那么将其与逻辑运算符结合也会产生运算错误。而对于查询字段和运算符的顺序关系的验证主要目的则为克服诸如多个运算符相邻、缺少括号等导致运算优先级混乱的语法结构问题。
在将字段定义规则输入状态机后,规则的状态会发生改变,基于此定义规则的几种状态包括:“开始”、“正确”、“错误”、“操作数”、“操作符”、“表达式”和“函数”。其中,“操作数”和“表达式”为查询字段,“操作符”为运算符。
接收到输入以后,将规则进行拆分,并将拆分的结果放入数组中去。数组中的顺序和输入的顺序一致。拆分准则为:每遇到一个“操作数”、“操作符”、“函数”、“(”、“)”,都将其放入到数组中去。例如对于规则“学生性别+(语文成绩+sum(英语成绩))”,得到的数组如下:
从头开始遍历该数组,起始时设置状态为:“开始”,在此状态下,只能接收操作数、表达式或者函数,而不能接收操作符(例如+),否则进入“错误”的状态;当接收到操作数后,状态变为操作数,下一个接收的应是操作符,若接收的不是操作符而是操作数或函数,则进入“错误”状态;当下一个接收到操作符后,状态变为操作符,下一个接收的应是操作数而非操作符,否则进入“错误”状态。如此循环,当数组中的每一位操作数或操作符都与对应位置的语法规则相符合,即在数组遍历过程中没有出现“错误”状态时,公式的正确性得到验证,语法验证完成。
若在数组中的任何位置产生了错误的状态,那么遍历过程终止,跳转到步骤407,报错修改;若数组遍历完毕后,包括最后一位在内的所有位置的状态均为“正确”时,语法验证通过,执行步骤404,进一步进行语义验证。
404、对字段定义规则进行语义验证。
依据字段定义规则在基础数据结构的数据库关系表中进行数据查询,若获得查询结果,则字段定义规则通过语义验证。
本实施例中,语法验证的目的在于通过积极手段对字段语法结构的规范性进行检测,而语义验证则是从实践的角度对字段定义规则的可用性进行“后验”式评价。因此只要语义验证能够获得查询结果就可以认为字段定义规则通过检测。
由于字段定义规则的制定基础是基础数据结构(例如学生信息管理数据库),并且生成的自定义查询字段也是用于在基础数据结构进行查询使用,因此可以以基础数据结构作为样本空间进行语义验证。
进一步的,考虑到实际应用中使用的数据库数据量级过于庞大,如果用整个数据库的关系表进行查询验证将过于消耗查询资源和查询时间。因此在本实施例的一种改进方式中,可以对语义验证的样本空间进行“瘦身”。从基础数据结构的数据库关系表中提取验证关系表。为保证验证的有效性,应当使该验证关系表与数据库关系表具有相同的查询字段,但验证关系表的记录条数可以少于数据库关系表的记录条数。利用提取的验证关系表对字段定义规则进行验证,若获得查询结果,则字段定义规则通过语义验证。
实际应用中,提取验证关系表的方式多种多样,具体而言,可以通过设置“TOPN”的方式将数据库关系表中的前N条记录提取出来获得验证关系表;也可以通过条件限定的方式缩小数据库表中的记录范围,从而获得验证关系表,例如将日期限定为“2015.7.1至2015.8.5”或者将学生性别限定为“男”;或者,还可以对数据库关系表中的记录进行抽样提取,例如“逢五抽一”、“逢十抽一”;再者,还可以根据哈希算法将记录序号符合算法条件的记录提取出来,例如提取记录序号尾数为“0”的记录。以上的记录提取方式各有差异,但目的都在于从较大的样本空间中提取出一个相对较小的样本空间用于语义验证。
通过上述的记录提取方式,可以从千万级别的数据库关系表中提取出一个只有几万或者几千条记录验证关系表,从记录条数的数量差异上看,利用验证关系表进行语义验证相对使用数据库关系表进行语义验证而言,能够将验证耗时缩短1000倍以上。
由于验证关系表中的记录条数少于整个数据库关系表中的记录条数,因此能够减少查询时遍历的数据量,特别是在分布式数据库系统中,数据量的减少可以大大降低跨服务器等待延时的概率,降低语义验证的资源消耗和等待时间。
在本步骤执行完毕后,若获得查询结果则顺序执行步骤405和步骤406;若未获得查询结果,则跳转执行步骤407,进行报错修改。
需要说明的是,实际应用中也可能因验证关系表中不存在符合查询条件的记录而导致出现未能获得查询结果的情况。此种情况应当与因字段定义规则本身的原因而导致未获得查询结果的情况相区别。为避免上述问题对验证结果的干扰,可以适当扩大验证关系表的记录条数,或者使用多张不同的验证记录表分别对字段定义规则进行验证。
405、在数据库中生成对应字段定义规则的关系表。
若字段定义规则通过语法验证及语义验证,则表明其符合基础数据结构的查询规则,在数据库中生成对应字段定义规则的关系表。生成的新关系表中除了必须包含字段定义规则对应的查询字段(即自定义查询字段)以外,还应当包含至少一个其他任意一个关系表中存在的查询字段,以便新建关系表能够和数据库关系表建立表关系。
406、生成对应字段定义规则的自定义查询字段,并保存自定义查询字段。
本步骤中,数据库将生成的自定义查询字段进行保存,以便使用者后续查询使用。本实施例中,自定义查询字段的保存格式多种多样,包括但不限于是:XML格式、二进制格式、jason格式。
进一步的,考虑到自定义查询字段是基于使用者的具体需求定义的,具有很强的“订制性”特点,因此为便于使用者使用自己定义的查询字段,本实施例还可以进一步将自定义查询字段与制定自定义查询字段的使用者对应保存。具体的,数据库可以根据使用者标识区分保存不同的自定义查询字段,使用者标识包括用户账号、用户手机号、用户邮箱地址等;此外,考虑到大多数用户都有固定使用的电子设备,因此数据库还可以根据设备标识区分保存自定义查询字段,设备标识包括MAC地址和IP地址;进一步的,数据库还可以根据不同的优先级区分保存自定义查询字段,优先级包括数据库使用查询权限优先级、数据库修改权限优先级等。
在用户登录数据库系统时,通过对用户标识、设备标识及优先级的检测,前端在数据查询界面中显示对应当前使用者的自定义查询字段。
407、返回修改。
当字段定义规则没有通过步骤403的语法验证,或者没有通过步骤404的语义验证时,执行此步骤。数据库后台向前端进行报错将字段定义规则返回给前端页面以便使用者进行修改。修改后的字段定义规则再次返回给数据库后台,数据库顺序执行步骤403至步骤407,直至字段定义规则符合基础数据结构的查询规则,或者报错次数溢出导致终止操作为止。
进一步的,作为对图2或图4所示方法的实现,本发明另一实施例还提供了一种数据库查询字段的生成装置。该装置位于数据库服务器中,或者独立于数据库服务器但与数据库服务器之间建立有数据交互关系,用以实现图2或图4所示的方法。如图6所示,该装置包括:接收单元61、验证单元62、生成单元63以及保存单元64;其中,
接收单元61,用于接收基于基础数据结构制定的字段定义规则,字段定义规则包含基础数据结构中的一个或多个查询字段,以及一个或多个查询字段之间的运算关系;
验证单元62,用于验证接收单元61接收的字段定义规则是否符合基础数据结构的查询规则;
生成单元63,用于当验证单元62验证字段定义规则符合基础数据结构的查询规则时,在数据库中生成对应字段定义规则的关系表,以及生成对应字段定义规则的自定义查询字段;
保存单元64,用于保存生成单元63生成的自定义查询字段。
进一步的,如图7所示,该装置进一步包括:
构建单元65,用于在接收单元61接收基于基础数据结构制定的字段定义规则之前,构建基础数据结构。
进一步的,构建单元65用于将一张或多张数据库关系表确定为基础数据结构,其中,当有多张数据库关系表时,数据库关系表之间具有至少一个相同的查询字段,多张数据库关系表来源于相同或不同的数据库。
进一步的,接收单元61接收的字段定义规则中的一个或多个查询字段之间的运算关系包括:代数运算、开根运算、求导运算、积分运算、卷积运算、取整运算、除余运算及逻辑运算。
进一步的,接收单元61用于:
接收字段定义规则的表达式;
获取字段定义规则的功能函数。
进一步的,如图7所示,验证单元62,包括:
语法验证模块621,用于对字段定义规则进行语法验证。
进一步的,语法验证模块621用于通过状态机检测字段定义规则中查询字段、运算符以及查询字段和运算符的顺序关系是否符合预设的语法规则。
进一步的,如图7所示,验证单元62,包括:
语义验证模块622,用于在语法验证模块621对字段定义规则进行语法验证之后,对字段定义规则进行语义验证。
进一步的,语义验证模块622用于依据字段定义规则在基础数据结构的数据库关系表中进行数据查询,若获得查询结果,则字段定义规则通过语义验证。
进一步的,语义验证模块622用于:
在对字段定义规则进行语义验证之前,从基础数据结构的数据库关系表中提取验证关系表,验证关系表与数据库关系表具有相同的查询字段,但记录条数少于数据库关系表的记录条数;
依据字段定义规则在验证关系表中进行数据查询,若获得查询结果,则字段定义规则通过语义验证。
进一步的,保存单元64用于:
根据使用者标识区分保存自定义查询字段;
根据设备标识区分保存自定义查询字段;
根据不同的优先级区分保存自定义查询字段。
本发明提供的数据库查询字段的生成装置,允许使用者对基础数据结构中的查询字段添加运算关系,得到字段生成规则,并对使用者编辑的字段生成规则进行验证。在通过验证后生成对应字段生成规则的自定义查询字段,供使用者后续直接使用。通过各种不同的运算关系,使用者可以基于有限的查询字段编辑出变换无穷的自定义查询字段。与现有技术中对基础查询字段进行机械组合相比,本发明能够让使用者创造出基础数据结构中没有的查询字段,真正实现查询字段的自由定义,满足各类使用者的查询需求。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的发明名称(如确定网站内链接等级的装置)中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (12)
1.一种数据库查询字段的生成方法,其特征在于,所述方法包括:
接收基于基础数据结构制定的字段定义规则,所述字段定义规则包含所述基础数据结构中的一个或多个查询字段,以及所述一个或多个查询字段之间的运算关系,所述运算关系至少包括以下一种:代数运算、开根运算、求导运算、积分运算、卷积运算、取整运算、除余运算及逻辑运算,所述运算关系还包括:预编函数库内的不同功能的方法函数实现的运算;
其中,所述接收基于基础数据结构制定的字段定义规则,具体包括:接收所述字段定义规则的表达式,或者,获取所述字段定义规则的功能函数;
验证所述字段定义规则是否符合所述基础数据结构的查询规则;
若所述字段定义规则符合所述基础数据结构的查询规则,则在数据库中生成对应所述字段定义规则的关系表,以及生成对应所述字段定义规则的自定义查询字段,并保存所述自定义查询字段。
2.根据权利要求1所述的方法,其特征在于,在所述接收基于基础数据结构制定的字段定义规则之前,所述方法进一步包括:
构建所述基础数据结构。
3.根据权利要求2所述的方法,其特征在于,所述构建所述基础数据结构,包括:
将一张或多张数据库关系表确定为所述基础数据结构,其中,当有多张数据库关系表时,数据库关系表之间具有至少一个相同的查询字段,所述多张数据库关系表来源于相同或不同的数据库。
4.根据权利要求1所述的方法,其特征在于,所述验证所述字段定义规则是否符合所述基础数据结构的查询规则,包括:
对所述字段定义规则进行语法验证。
5.根据权利要求4所述的方法,其特征在于,所述对所述字段定义规则进行语法验证,包括:
通过状态机检测所述字段定义规则中查询字段、运算符以及所述查询字段和所述运算符的顺序关系是否符合预设的语法规则。
6.根据权利要求4所述的方法,其特征在于,在所述对所述字段定义规则进行语法验证之后,所述方法进一步包括:
对所述字段定义规则进行语义验证。
7.根据权利要求6所述的方法,其特征在于,所述对所述字段定义规则进行语义验证,包括:
依据所述字段定义规则在所述基础数据结构的数据库关系表中进行数据查询,若获得查询结果,则所述字段定义规则通过所述语义验证。
8.根据权利要求6所述的方法,其特征在于,在所述对所述字段定义规则进行语义验证之前,所述方法进一步包括:
从所述基础数据结构的数据库关系表中提取验证关系表,所述验证关系表与所述数据库关系表具有相同的查询字段,但记录条数少于所述数据库关系表的记录条数;
所述对所述字段定义规则进行语义验证,包括:
依据所述字段定义规则在所述验证关系表中进行数据查询,若获得查询结果,则所述字段定义规则通过所述语义验证。
9.根据权利要求1所述的方法,其特征在于,所述保存所述自定义查询字段,包括:
根据使用者标识区分保存所述自定义查询字段;
或者,根据设备标识区分保存所述自定义查询字段;
或者,根据不同的优先级区分保存所述自定义查询字段。
10.一种数据库查询字段的生成装置,其特征在于,所述装置包括:
接收单元,用于接收基于基础数据结构制定的字段定义规则,所述字段定义规则包含所述基础数据结构中的一个或多个查询字段,以及所述一个或多个查询字段之间的运算关系,所述运算关系至少包括以下一种:代数运算、开根运算、求导运算、积分运算、卷积运算、取整运算、除余运算及逻辑运算,所述运算关系还包括:预编函数库内的不同功能的方法函数实现的运算;
所述接收单元,还具体用于接收字段定义规则的表达式,或者,获取字段定义规则的功能函数;
验证单元,用于验证所述接收单元接收的所述字段定义规则是否符合所述基础数据结构的查询规则;
生成单元,用于当所述验证单元验证所述字段定义规则符合所述基础数据结构的查询规则时,在数据库中生成对应所述字段定义规则的关系表,以及生成对应所述字段定义规则的自定义查询字段;
保存单元,用于保存所述生成单元生成的所述自定义查询字段。
11.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至权利要求9中任意一项所述的数据库查询字段的生成方法。
12.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至权利要求9中任意一项所述的数据库查询字段的生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510527568.3A CN106484699B (zh) | 2015-08-25 | 2015-08-25 | 数据库查询字段的生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510527568.3A CN106484699B (zh) | 2015-08-25 | 2015-08-25 | 数据库查询字段的生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106484699A CN106484699A (zh) | 2017-03-08 |
CN106484699B true CN106484699B (zh) | 2020-04-17 |
Family
ID=58234211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510527568.3A Active CN106484699B (zh) | 2015-08-25 | 2015-08-25 | 数据库查询字段的生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106484699B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107657066A (zh) * | 2017-11-13 | 2018-02-02 | 医渡云(北京)技术有限公司 | 医疗数据科研字段自定义方法及装置 |
CN108038135A (zh) * | 2017-11-21 | 2018-05-15 | 平安科技(深圳)有限公司 | 电子装置、多表关联查询的方法及存储介质 |
CN110018844B (zh) * | 2019-01-10 | 2022-08-30 | 创新先进技术有限公司 | 决策触发方案的管理方法、装置和电子设备 |
CN111191057A (zh) * | 2019-12-17 | 2020-05-22 | 贝壳技术有限公司 | 一种自定义检索方法、装置、电子设备及其存储介质 |
CN112905639A (zh) * | 2020-12-21 | 2021-06-04 | 国网甘肃省电力公司电力科学研究院 | 一种基于规则的新能源数据分发方法 |
CN113420044A (zh) * | 2021-06-30 | 2021-09-21 | 平安国际智慧城市科技股份有限公司 | 数据查询方法、装置、设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101192237A (zh) * | 2006-11-30 | 2008-06-04 | 国际商业机器公司 | 查询多方面信息的方法和系统 |
CN101221566A (zh) * | 2007-07-15 | 2008-07-16 | 杨筑平 | 信息搜索和存取授权方法 |
CN101295382A (zh) * | 2008-06-30 | 2008-10-29 | 金蝶软件(中国)有限公司 | 一种实现业务对象属性之间业务逻辑关系的方法及装置 |
CN103186541A (zh) * | 2011-12-27 | 2013-07-03 | 阿里巴巴集团控股有限公司 | 一种映射关系生成方法及装置 |
CN103973684A (zh) * | 2014-05-07 | 2014-08-06 | 北京神州绿盟信息安全科技股份有限公司 | 规则编译匹配方法及装置 |
CN104050264A (zh) * | 2014-06-19 | 2014-09-17 | 华为技术有限公司 | 一种生成sql语句的方法和装置 |
-
2015
- 2015-08-25 CN CN201510527568.3A patent/CN106484699B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101192237A (zh) * | 2006-11-30 | 2008-06-04 | 国际商业机器公司 | 查询多方面信息的方法和系统 |
CN101221566A (zh) * | 2007-07-15 | 2008-07-16 | 杨筑平 | 信息搜索和存取授权方法 |
CN101295382A (zh) * | 2008-06-30 | 2008-10-29 | 金蝶软件(中国)有限公司 | 一种实现业务对象属性之间业务逻辑关系的方法及装置 |
CN103186541A (zh) * | 2011-12-27 | 2013-07-03 | 阿里巴巴集团控股有限公司 | 一种映射关系生成方法及装置 |
CN103973684A (zh) * | 2014-05-07 | 2014-08-06 | 北京神州绿盟信息安全科技股份有限公司 | 规则编译匹配方法及装置 |
CN104050264A (zh) * | 2014-06-19 | 2014-09-17 | 华为技术有限公司 | 一种生成sql语句的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106484699A (zh) | 2017-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106484699B (zh) | 数据库查询字段的生成方法及装置 | |
AU2018272840B2 (en) | Automated dependency analyzer for heterogeneously programmed data processing system | |
WO2020233330A1 (zh) | 批量测试方法、装置及计算机可读存储介质 | |
CN110472068B (zh) | 基于异构分布式知识图谱的大数据处理方法、设备及介质 | |
US9870421B2 (en) | Method for accurately searching for comprehensive information | |
US8972460B2 (en) | Data model optimization using multi-level entity dependencies | |
US9754010B2 (en) | Generation of cube metadata and query statement based on an enhanced star schema | |
CN110908997A (zh) | 数据血缘构建方法、装置、服务器及可读存储介质 | |
CN110427188B (zh) | 单测断言程序的配置方法、装置、设备及存储介质 | |
US8904352B2 (en) | Systems and methods for processing source code during debugging operations | |
US20190325021A1 (en) | Method and Device for Creating Hyperlink | |
US9195456B2 (en) | Managing a catalog of scripts | |
EP4006740A1 (en) | Method for indexing data in storage engines, and related device | |
WO2015074477A1 (zh) | 路径分析方法和装置 | |
CN110348020A (zh) | 一种英文单词拼写纠错方法、装置、设备及可读存储介质 | |
US10339035B2 (en) | Test DB data generation apparatus | |
CN112883030A (zh) | 数据收集方法、装置、计算机设备和存储介质 | |
TW201610713A (zh) | 在文件中識別且呈現相關報告實物 | |
CN110263104A (zh) | Json字符串处理方法及装置 | |
CN112825068B (zh) | 数据血缘生成方法及装置 | |
US9384285B1 (en) | Methods for identifying related documents | |
JP2018133044A (ja) | WebAPI実行フロー生成装置およびWebAPI実行フロー生成方法 | |
CN114860759A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN113128184A (zh) | 针对多人协同编辑文档的文档内容筛选方法及装置 | |
CN112540978A (zh) | 宽表生成方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: Beijing Guoshuang Technology Co.,Ltd. Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing Applicant before: Beijing Guoshuang Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |