面向关系数据库关键字查询系统的设计
2015-04-01毛金玲
毛金玲
摘要:本文深入研究了关系数据库的关键字检索的检索机制和
关键技术,包括构建全文索引、构建数据库模式图、查询语言及查询结果生成等等。通过分析相关检索系统的实现策略,给出了面向关系数据库的关键字查询的形式化描述,设计了支持关键字检索的系统架构和核心构成组件,主要包括数据库索引、关键字检索和结果生成。
关键词:关系数据库 关键词查询 数据库索引
1 系统总体设计
人们在求解一个复杂问题时,通常采用的是逐步分解、分而治之的方法。也就是把一个大问题分解成若干个比较容易求解的小问题,然后分别求解。设计一个复杂的系统时,往往也是把整个系统划分为若干个功能较为单一的功能模块,然后分别予以设计、实现,这就是模块化设计。本系统也采用这种模块化设计方式。
■
图1 面向关系数据库关键字查询系统框图
2 数据库设计
本系统为面向关系数据库的关键字查询系统,在实验中本文选取了IMDB 数据集,为了进行实验,将数据集整理为以下七个表数据结构。
实验数据集(电影信息数据库):
create table Actor( //演员表
actorname varchar(50) Primary Key ; //演员姓名key
sex varchar(2); //性别
mvname varchar(50); //出演电影或电视剧名
mvyear varchar(10); //电影上映时间
mvactorname varchar(10); //电影中人物姓名
position varchar(20); //电影中人物排名
made varchar(10); //TV 或是Video
setname varchar(50); //出演电视剧集名
episode varchar(10); //出演电视剧集
date varchar(10); //电视剧播出日期
classification varchar(30); //(achieve football)
)
creat table Consume( //设计师
consumename varchar(20) Primary Key; //设计师姓名key
mvname varchar(20); //电影名或电视剧名
mvyear varchar(10); //上映日期
setname varchar(20); //电视剧集名
episode varchar(10); //电视剧集
productiondate varchar(10); //电视剧播放日期
classification varchar(30); //(as M...)
made varchar(10); ///(V/TV/uncredited)
)
creat table Director( //导演信息
directorname varchar(20) Primary Key; //导演姓名key
mvname varchar(20); //电影或电视剧名
mvyear varchar(10); //上映日期
setname varchar(20); //电视剧集名
episode varchar(20); //电视剧集
made varchar(10); //(V/TV/VG)
explantaion varchar(30); //(as M...)
)
creat table Business( //投资
mvname varchar(20) Primary Key; //电影名key
productiondate varchar(20); //拍摄日期
company varchar(50); //出品公司
studiodate varchar(50); //上映日期
masterpiece varchar(1000);///OW
budget varchar(20); //预算
ad varchar(50); ///AD
general_revenue varchar(20); //收入
wg varchar(50); //WG
)
creat table Editor( //编辑
editorname varchar(20) Primary Key; //编辑名
mvname varchar(20); //电影或电视剧名key
mvyear varchar(10); //上映日期
made varchar(10); //(V/TV/video)
setname varchar(20); //电视剧集名key
episode varchar(20); //电视剧集key
explantaion varchar(30); //(as M...)
)
creat table Color { //颜色信息
mvname varchar(20); //电影或电视剧名key
mvyear varchar(10); //上映日期
setname varchar(20); //电视剧集名key
episode varchar(20); //电视剧集key
color varchar(20); //颜色分类color或black and white
explantaion varchar(10); //颜色分类之后的()中有(HD)等,(HD)是高清
Primary Key(mvname,setname,episode);
}
creat table Keyword( //关键词
mvname varchar(20); //电影或电视剧名key
mvyear varchar(10); //上映日期
setname varchar(20); //电视剧集名key
episode varchar(10); //电视剧集key
keyword varchar(50); //关键词
Primary Key(mvname,setname,episode);
)
3 数据库索引设计
由于关系型数据库对于文本属性上全文索引的支持,所以在文本属性可以直接利用数据库中的全文索引。对于给定的关键字k,全文索引能检索出查询关键字所在位置。
对于数据库中的表属性,构建索引的方式比较简单,依赖于DBMS的IR索引。对于数据库中具有文本属性的列,在该列上建立全文索引。在进行关键字查询时,对于给定的关键字,通过数据库的全文索引,会返回包含该关键字的元组集合。
在进行关键字查询的时候,对于用户给定查询关键字,系统首先要对给定的关键字进行定位,确定关键字所匹配的信息是模式项还是数值项。
例如,关键字{“Color”“Director”}的索引结构如表1所示。
表1 关键字{“Color”“Director”}的索引结构
■
4 关键字检索设计
在搜索引擎行业,所谓关键字,就是用户在使用搜索引擎时输入的、能够最大程度概括用户所要查找的信息内容的字或者词,是信息的概括化和集中化。关键字检索作为一种易于使用的检索方式,为大量普通用户所喜爱。本文从关键字个数角度介绍现有的关键字检索技术中最常见的单关键字查询和多关键字查询这两种关键字检索形式。
5 结果生成设计
在本文中,将查询结果定义为元组连接树。
元组连接树(Joined Tuple Tree)是给定一个数据库模式图GS,一个元组连接树T是一棵元组树。其中,T中的每一条边(ti,tj)(ti∈Ri,tj∈Rj)满足以下两个要求:
①(Ri,Rj)∈RS,
②ti∞tj∈Ri∞Rj。
同时这些元组连接树满足以下条件:
①完整性:用户提交的所有关键字均出现在元组连接树上;
②最小性:从元组连接树中移除任何元组后的元组连接树都不具有完整性。
6 结束语
通过分析相关检索系统的实现策略,设计了支持关键字检索的系统架构和核心构成组件,主要包括数据库索引、数据库模式图、关键字检索和结果生成。
参考文献:
[1]吴清怡,马良荔,孙煜飞.基于数据关系表的XML查询算法[J].辽宁工程技术大学学报(自然科学版),2013(01).
[2]林子雨,杨冬青,王腾蛟,张东站.基于关系数据库的关键词查询[J].软件学报,2010(10).
[3]张颖,李昕.一种关系数据库上的关键词查询排序方法[J].辽宁工业大学学报(自然科学版),2013(05).