数据库模糊查询技术应用
2012-04-29刘晓慧
刘晓慧
摘要:该文介绍了模糊集合理论相关知识及其在关系数据库查询中的应用,针对SQL语言的SELECT语句进行了模糊扩展。分析了简单模糊查询、复合模糊查询、将模糊查询转换为精确查询的方法并通过实例进行了验证。
关键词:关系数据库;模糊查询;隶属函数;阈值;匹配度
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)02-0255-03
The Application on Database Fuzzy Query Technology
LIU Xiao-hui
(Shenyang Institute of Engineering, Shenyang 110136, China)
Abstract: This article describes the knowledge of fuzzy set theory and its application on relational database queries,Fuzzy extension of the SELECT statement in the SQL language. Analyze the method of simple fuzzy query, composite fuzzy queries, fuzzy queries into precise query and verified by examples.
Key words: relational database; fuzzy query; membership function; threshold; matching degree
模糊集合的理论由美国加州大学著名教授L.A.Zadeh于1965年首先提出,主要用于研究现实世界中一些模糊不清的问题,使之清晰化,这一理论在信息论、自动控制等领域的研究与应用也得到了迅速发展。而将模糊理论应用于数据库查询,主要是将模糊查询条件应用于传统的以二值逻辑和精确的数据工具为基础的数据库中,得到符合条件的结果,例如“在学生关系中查找计算机成绩较高的学生”,这里“较高”就是一个模糊的查询条件。
1模糊集合理论
1.1模糊集合
所谓在论域U上的一个模糊子集A是指:?u∈U,都有μA(u)∈[0,1]与之相对应,并且称为u属于模糊子集A的隶属度。即由映射:μA(u):U→[0,1] u→μA(u)
确定论域U的一个模糊子集A。
μA(u)=1,表示u完全属于A;μA(u)=0,表示u完全不属于A;0<μA(u)<1,表示u隶属于A的程度。设A为论域U上的模糊集合,?α∈[0,1],Aα={u∈U| fA(u)≥α}?U,称模糊集合A的α截集,称α为置信度,即对于普通集合Aα有?u∈U当A(u)≥α时,说明在α水平下u属于模糊集合A,记为u∈Aα,反之u?Aα。
1.2隶属函数
隶属函数是对模糊概念的定量描述,正确地确定隶属函数,是运用模糊集合理论解决实际问题的基础。隶属函数的确定过程允许存在一定的主观意识,可以根据实际统计数据特征从几种典型模糊分布曲线中选择最为贴近的一种作为隶属函数,经过实践效果的检验进行了调整,即通过“学习”进行修改和完善,以得到更为确实的隶属函数形式。典型的模糊分布有阶梯型、指数型、正态型、线型、幂函数型、正弦型等。
1.3语言变量
1971年Zadeh提出模糊语义定量理论并定义了“语言变量”的概念,其算子的一般数学描述为:L=(U,T,E,N)
其中:U是论域,即语言主体的全体;T是语言值的模糊集合;E是构成语言的所有字母和符号序列的集合;N是E对U的模糊关系。对于T中值x的语义是U上的模糊子集M(x),则U中的元素y对M(x)的隶属度可表示为:μM(x)(y)=μN(x,y)。例如:设论域U=[1, 100]是学生成绩集合,T为成绩的模糊集合,E={优秀,良好,中等,一般,较差}。
1.4语气算子
在模糊理论中将自然语言中的如“比较”、“非常”、“稍微”等词看作是一种算子,称为语气算子Hλ,从程度上来限制模糊语义,
在不同等级上改变模糊语义的隶属度,如模糊语义“高”可表示为“非常高”、“比较高”,“有点高”等。语气算子是一个变换,即:HλA(x)=A(x)λ,当λ>1时称Hλ为集中化算子,λ<1时称Hλ为散漫化算子,一般将H4代表“极”,H2代表“很”,H1.25表示“相当”,H0.75代表“比较”,H0.5代表“有点”,H0.25代表“稍微有点”。
1.5模糊化算子
自然语言中常将“大约”、“近乎”、“差不多”等具有模糊意义的词放在一个精确词或语言变量之前,表示一个模糊的范围,如“某学生计算机成绩大约80分左右”,称为F化算子。可实现对精确语义的模糊化和模糊语义的模糊化。其中对于模糊语义的模糊化算子的一般形式可表示为:
对?x∈U ,μF(A)(x)=μE.A(x)=∪[μE(x,y)?μA(y)]
其中A是模糊集合,μA(y)是y对A的隶属度,E是U上的相似模糊关系,相似函数μE(x,y)表示为:
2模糊SQL
SQL(Structured Query Language)作为现在大多数系统都支持的语言,已经成为标准的数据库语言。而关系数据库也是使用最为广泛数据库形式,那么针对关系数据库使用SQL并对其进行模糊扩展也就具有重要意义。对数据库查询进行模糊扩展,模糊SQL一般形式可以表示为:
SELECT C1,C2,…,Cn FROM T
WHEREfc
WITHα
其中T是一个精确或模糊关系;Ci表示T上的属性;fc是一个模糊条件,可以包含模糊关系运算符(如“约等于≈”、“远远大于>>”等)、模糊谓词(is)及连接词(AND、OR);α∈[0,1]称为阈值,由于查询条件是模糊的,因此查询结果也是一个模糊集合,集合中每个结果对于查询条件fc的满足程度即匹配度不同,设置阈值α的作用是使查询结果中匹配度大于α的记录作为结果输出。
2.1简单模糊查询
例1:存在一个学生关系(student)如表1。
表1关系student
在表1中查找“计算机成绩较好的学生”,模糊SQL可表示为:
SELECT姓名,计算机
FROM student
WHERE计算机is good
WITH 0.5
对于关系student上的元组,计算属性“计算机”关于“good”的匹配度,隶属函数可表示为:
计算关系student中每个元组的“计算机”属性值关于模糊条件对应隶属函数的匹配度见表2。
最后根据阈值α得到结果集合中匹配度大于等于0.5的有第2、3、7、8四个元组。
2.2复合条件模糊查询
查询条件中可以使用AND、OR等连接词交多个查询条件组合形成复合查询条件,如在学生关系中“查找英语成绩较差但总分
较高的学生”,模糊SQL表示为:
SELECT姓名,英语,总分
FROM student
WHERE英语is fail and总分is good
WITH 0.5
复合查询条件中涉及关系中的多个属性,这时就需要分别计算每个元组的相应属性值针对模糊条件的匹配度,进而计算综合匹配度,当连接词分别为AND和OR时综合匹配度的计算方法为:Mand(R)=∧(m1,m2,?,mn) Mor(R)=∨(m1,m2,?,mn)
其中mi表示元组R的第i个属性值对于模糊项隶属函数的匹配度。
2.3模糊查询转换为精确查询
上述简单模糊查询和复合模糊查询在对关系数据库进行操作时需要对表中所有记录进行计算,表中记录多时会影响查询效率,为减少计算量可以在查询前将模糊条件转换为精确条件,将大大提高查询效率。将模糊条件转换为精确条件可以使用隶属函数及α截集求得模糊条件中属性值的区间,那么精确查询条件也就得到。如例1“计算机成绩较好的学生”中的“较好”可根据隶属函数和α求得其对应值区间为(μgood)0.5=[75,95],则模糊查询可转化为:
SELECT姓名,计算机
FROM student
WHERE计算机BETWEEN 75 AND 95
在关系student中查询结果为2、3、7、8四个元组,同例1结果相同,接下来对四个元组计算匹配度,得到最终结果,结果仍与例1相同,但效率却比例1要高。
3结束语
在数据库模糊查询中,将自然语言中模糊概念与数据库中的精确概念建立了联系,从而使查询语言得到了扩展,本文针对这一理论介绍了简单模糊查询及复合模糊查询的处理方法并做了验证,同时介绍了模糊查询转换为精确查询的方法。以上查询方法还可以扩展到多表查询、子查询等,而关系中的属性值的隶属函数和模糊SQL中的阈值也可根据实际需要进行调整。
参考文献:
[1]陈逸菲.基于模糊理论的关系数据库查询技术研究[D].南京:南京信息工程大学,2005.
[2]杨纶标,高英仪.模糊数学原理及应用[M].广州:华南理工大学出版社,2004.
[3]申玉静,周爱华.基于模糊数据库的数据查询设计[J].北京:计算机教育,2007(12):126-128.
[4]王昕.AFS理论研究及其在模糊查询以及数据挖掘中的应用[D].大连:大连海事大学,2003.