关系型数据库系统的设计方法研究

2015-05-30 12:11毛金玲
关键词:模式图关系数据库元组

毛金玲

摘要:实现基于关系数据库的信息(关键字)检索,将使用户不需要任何SQL语言和底层数据库模式的知识,就像使用搜索引擎一样来获取数据库中的相关数据。关系数据库的关键字检索技术已经成为目前数据库领域中的一个研究重点。

关键词:关系数据库  关键词查询  数据库模式

1 系统总体设计

面向关系数据库的关键字查询系统主要有五部分组成,首先要分析输入的关键字,有几个关键字组成;然后调用全文索引,查看这些关键字所属,是表名、属性名还是属性值;接下来查询数据库的模式图,从而得到几种可能的元组连接树;最后将相应元组连接树转化成SQL语句查询关系数据库,生成查询结果,以二维表格形式显示。由上述内容可得系统流程图如图1所示。

2 数据库设计

本系统为面向关系数据库的关键字查询系统,在实验中本文选取了IMDB 数据集,为了进行实验,将数据集整理为以下七个表数据结构。

实验数据集(电影信息数据库):Actor(演员表)、Consume(设计师)、Director(导演信息)、Business(投资)、Editor(编辑)、Color(颜色信息)、Keyword(关键词)。

本数据库抽象的数据库关系E-R图如图2所示。

圖2为数据库关系的E-R图。在图中,黄色钥匙为每个表的主键,黑线部分为表之间外键关系,设定除business表外每个表都有一个外键mvname,而在抽象出的关系图中,以mvname和episode为数据库每个表之间最重要的联系,即表之间关系以mvname和episode属性为联系。

3 数据库索引设计

在关系型数据库中,例如Oracle、DB2、SQL Server 和MySQL等都提供了对关键字查询的扩展,可以为数据库的表属性建立全文索引,这为实现关系数据库的关键字查询提供了基础。已有多个关系数据库的关键字查询系统被开发出来,BANKS、DISCOVER、IR-style、SEKKER等等。然而在已有的系统中,多数系统仅仅支持数据库中文本属性的查询,却忽略了对数据库中元数据的处理。如果用户给定的查询关键字是数据库中的元数据,则有些系统就不能够满足用户的查询需求,或者查询结果不够精确,返回大量与查询不相关的结果。SEKKER虽然提出了支持数字属性和元数据的查询,但是却在查询语言上做了限定,只能通过给定的查询语言格式进行查询,所以系统的灵活性不高。

关键字{“Color”“Director”}的索引结构如表1所示。

表1  关键字{“Color”“Director”}的索引结构

4 数据库模式图的构建

在关系数据库中,关键字是通过主外键进行连接的,因此关系数据库采用的数据模型,即为基于模式图建模。模式图的节点对应数据库中的关系,边表示关系间的主外键约束。

模式图(Schema Graph,GS)是将关系数据库的模式信息定义为模式图GS(V,E),其中V表示模式图中的节点,与数据库中的关系一一对应,E表示模式图中的边,将具有主外码约束相对应的关系连接起来,关系Ri和关系Rj中的主外键关系对应模式图一条边Ri→Rj。

本文数据库对应的数据库模式图如图3所示。

5 关键字检索设计

关键字检索技术主要是,通过分析用户输入的关键字所属类型来确定元组连接树,从而转换成相应的SQL语句来查询关系数据库。如果用户输入的关键字都是表名,则将几个表自然连接后输出即可;若用户输入的关键字有表名、属性名,那么将属性列加到表中输出就是用户所检索的内容;若用户输入的关键字中有属性值,则将属性值对应属性与表或属性列连接,根据属性值对应元组来显示查询结果。由此可见,对于相同的关键字,如果它不止一种所属值,那么它就会对应不同的SQL语句。

6 结果生成设计

在本文中,将查询结果定义为元组连接树。给定一个数据库模式图GS,一个元组连接树T是一棵元组树。其中,T中的每一条边(ti,tj)(ti∈Ri,tj∈Rj)满足以下两个要求:①(Ri,Rj)∈GS,②ti∞tj∈Ri∞Rj。同时这些元组连接树满足以下条件:①完整性:用户提交的所有关键字均出现在元组连接树上;②最小性:从元组连接树中移除任何元组后的元组连接树都不具有完整性。

元组连接树生成规则伪代码如下:

Data Structure:

Result:Generate JTT

1:Known set of JTT by GS((Ri,Rj)∈GS)

2:Known Keyword{k1,k2}

3:if(k1=ti,k2=tj(ti∈Ri,tj∈Rj))

4:generate(ti,tj)

5:end if

7 结束语

本文将生成的关系图转换为SQL查询,通过执行相应的查询,进而得到每个关系路径对应的查询结果。因为关系图是按照关联度进行返回的,但是这样关联度仅仅的将关键字映射在关系的层面上,为了使查询结果更加明确,本文将结果进行细化,将关键字映射到关系层面。为了避免大量冗余结果的产生,为了更精确的满足用户的查询需求,将与关键字关系有关系的结果返回给用户即可。

参考文献:

[1]林子雨,杨冬青,王腾蛟,张东站.基于关系数据库的关键词查询[J].软件学报,2010(10).

[2]林子雨,邹权,赖永炫,林琛.关系数据库中的关键词查询结果动态优化[J].软件学报,2014(03).

[3]李慧颖,瞿裕忠.基于关键词的RDF数据查询方法[J].东南大学学报(自然科学版),2010(02).

猜你喜欢
模式图关系数据库元组
关系数据库在高炉数据采集系统中的应用
“双勾模式图”的推广与应用
Python核心语法
组织学模式图绘画视频的制作及其应用
海量数据上有效的top-kSkyline查询算法*
基于减少检索的负表约束优化算法
模式图及模式图训练在口腔修复学教学中的应用
基于索引结构的关系数据库关键词检索
面向数据流处理的元组跟踪方法
一种基于数据图划分的关系数据库关键词检索方法