谓词逻辑在关系数据库中的应用张益.docx

上传人:b****8 文档编号:9845804 上传时间:2023-02-07 格式:DOCX 页数:18 大小:87.29KB
下载 相关 举报
谓词逻辑在关系数据库中的应用张益.docx_第1页
第1页 / 共18页
谓词逻辑在关系数据库中的应用张益.docx_第2页
第2页 / 共18页
谓词逻辑在关系数据库中的应用张益.docx_第3页
第3页 / 共18页
谓词逻辑在关系数据库中的应用张益.docx_第4页
第4页 / 共18页
谓词逻辑在关系数据库中的应用张益.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

谓词逻辑在关系数据库中的应用张益.docx

《谓词逻辑在关系数据库中的应用张益.docx》由会员分享,可在线阅读,更多相关《谓词逻辑在关系数据库中的应用张益.docx(18页珍藏版)》请在冰豆网上搜索。

谓词逻辑在关系数据库中的应用张益.docx

谓词逻辑在关系数据库中的应用张益

谓词逻辑在关系数据库中的应用

张益(07级2011届安庆师范学院数学信息与计算科学学院安徽安庆246011)

指导老师:

张胜

摘要:

本文旨在研究将谓词逻辑及公理化理论应用于关系数据库中表示数据子语言,应用谓词逻辑作为它的数学基础,使得对这些语言的研究成为对谓词逻辑的研究.优化数据子语言的表示成为对谓词逻辑的化简问题。

关系数据库是具有严格数学模型的一种数据库系统,该系统有效地解决了数据存储和数据应用问题;除法运算是关系数据库的基本运算之一,在MYSQL里面较难实现相关操作.文章利用谓词逻辑的基本推理方法有效地分解了除法运算的基本过程,给出了除法运算的基本语义,并对除法运算提供了有效的SQL实现手段,从而提供了MYSQL实现除法运算的有效手段,也为MYSQL有关的教学提供了操作模式.

关键词:

关系数据库,数据库,关系,谓词逻辑,关系代数,谓词演算,SQL除法。

1引言

任何一门学科在其研究和发展过程中都要借助一些工具和方法计算机科学也不例外l9世纪末迅速发展起来的数理逻辑作为现代逻辑的分支.直接为计算机科学的产生和根本性发展提供了重要的思维方法和研究工具.正如美国科学促进会在题为“OntheUnusualEffectivenessofLogicinComputerScience”的会议中的总结:

LogichaspermeatedthroughcomputerscienceduringthepastthirtyyearsmuchmorethanithasthroughmathematicsduringthepastonehundmdyeasroIndeed,atpresentconceptsandmethodsoflogicoccupyacentralplaceincomputerscience,Insomuchthatlog—iehasbeencalled“thecalculusofcomputerscience”。

关系数据库有一套比较完善的数学理论,关系代数有力地支撑了关系数据库的理论框架.除法运算是关系运算的基本操作之一,因其特有的物理背景和运算方式造成了除法运算设计的难度[1].关系数据库的结构化查询语言SQL成功地解决了关系代数操作的语言表达,其自身的结构化特点对广大SQL设计开发人员提供了简单有效的实现手段,可是除法运算一直是SQL较难实现的一个运算.文献[2]中对除法运算的SQL描述较为成功,可是其基本上限于案例的分析,没有从形式化上给出有力的语义解释和统一的实现技巧.文献[3]中以中介逻辑谓词演算系统MFM为基础,探讨了SQL查询的形式语义,从而可以较好地处理不完全信息问题,并提出了只需要很少的转化规则就能完成的SQL语言的形式化模型.文献[4]给出了利用GroupBy子句实现除法的一种方法,该方法比较实用容易掌握,可是对该方法的设计所需要的逻辑分析和语义等价性分析没有描述.笔者通过一阶谓词逻辑的形式分析手段较统一的构造了SQL的语义框架,并用MYSQL实现了统一的语句设计.

在研究将谓词逻辑及公理化理论应用于关系数据库之前.有必要先介绍相关知识。

2关系数据库简介

随着信息管理水平的不断提高.信息资源已成为社会各行各业的重要资源和财富.用于信息管理的数据库技术也得到了很大的发展.是计算机科学的重要分支.由于数据库具有数据结构化较低的冗余度、较高的程序与数据独立性、易于扩充和易于编制应用程序等优点.所以大中型信息系统都是建立在数据库设计之上的数据库技术成为目前最活跃、应用最广泛的计算机领域之一,几乎所有的应用系统都涉及到数据库.以数据库方式存储系统数据。

数据库是计算机管理数据的一种机构.是计算机数据处理的核心.是现代信息科学与技术的重要组成部分数据库一般由两部分组成.即数据库的硬件部分和数据库的软件部分其硬件部分是供存放数据用的大量物理存储空间.如磁盘、磁带、光盘等外存空间:

其软件部分是管理数据库中数据的一组程序.这组程序叫作数据库管理系统.简称DBMS它的主要目的是提供一可以方便地、有效地存取数据库信息的环境对数据库的一切操作都是通过DBMS进行的。

DBMS的主要功能为:

(1)数据库的定义功能

(2)数据库的操纵功能

(3)数据库的保护功能

(4)数据库的存储管理

(5)数据库的维护功能

(6)数据库的描述功能

鉴于下文的需要.这里我们介绍只数据库管理系统的第二个功能.数据库的操纵功能。

该功能是面向用户的主要功能.用户可以使用数据库管理系统所提供的语言——数据操作语言(DML).使用数据库中的数据供用户使用数据库的语言有的从终端装置输入.这种语言叫终端查询语言(SQL);有的可附属于某些宿主语言,如可附属于FORTRAN、COBOL等语言作为这些语言的扩充成分。

基本的数据操作有以下几个方面:

数据的查询:

从数据库中取出满足一定条件要求的数据;

数据的修改:

可以修改数据库中指定的数据;

数据的插入:

将一些数据存储到数据库中供以后使用;

数据的删除:

删除数据库内指定的数据。

数据库内的数据一般都按一定格式组织与存放.为了清晰理解数据库内数据的基本组织格式.我们要引入以下概念:

实体:

将现实世界中客观存在的能够相互区分的事物经过加工、分类.抽象成为数据库中数据的基本存放单位.如职工的简历、工资单、一次考试、一个学生、物资供销情况等均是实体。

在数据库内实体是一个整体.它内部的数据相互间是有逻辑联系的。

实体集:

所有具有相同结构形式的实体集合。

联系:

实体集之间的对应关系称为联系.它反映现实世界中事物之间的相互关联。

在数据库中实体是基本的数据单位.但是各实体间是有一定联系的.如实体集学生通过选课和课程之间联系起来,这个联系是学生选修课程,教师也是实体.而教师与学生、课程也有联系。

在数据库中存储数据时不仅要存放实体的数据.还要存放联系的数据,如上例上,不仅要存放有关学生、教师和课程的实体.而且还要存放学生选修哪门课程的情况及教师教授哪门课程的情况.只有这样数据库中的这个数据信息才是完整的。

关键字:

如果某个属性或属性组合的值能够惟一地标识出实体集中的每一个实体.那么该属性或属性组合就可以叫做关键字用做标识的关键字也称为码如学校的学生管理系统中的学生的学号(学生的学号是惟一的.一个学生只能有一个学号.并且每个学生都不相同。

属性:

现实世界中事物的特征.即实体的性质。

这些性质称为此实体的属性,如学生这个实体就可以用学号、姓名、性别、出生日期、系和年级等属性来描述用这些属性的具体值可以描述一个具体的实体。

属性域:

实体的每个属性的表现形式都是统一的,如学号是由n个数字所组成的号码,性别为{M,F}中之一(M代表男性,F代表女性),年龄由三个数字簖组成_对每个属性都有一个表示范围,如年龄的表示范围是从O到150闯的数字;性别的表示范围是集合{M,F},这种属性的表示范围就是属性域,每个属性都有一个属性域。

数据库目前可以有三种结构数据模型.它们分别是层次模型、网络模型、关系模型。

层次模型是用树形结构表示实体间联系的数据模型.它是数据库系统中最早出现的数据模型。

层次模型对一对多的层次关系描述比较直观、自然且容易理解.该模型本身比较简单。

但现实世界的很多联系是非层次性的.这样一来.若仍用层次模型表示这类非层次性的联系.则显得很笨拙.并且会产生大量的数据冗余。

网状模型对于处理这种联系.则非常有效。

网状模型是用有向图结构表示实体类型及实体间联系的数据模型。

其傥点是具有良好的性能。

存取效率高,并且能够更为直接地描述现实世界。

但是网状模型结构复杂,不容易实现,不利于扩充。

关系模型可以克服上述层次模型和网状模型的缺点关系模型有以下优点:

结构简单直观、用户易理解;

有严格的设计理论:

存取路径对用户透明。

从而具有更高的独立性、更好的安全保密性。

同时简化了程序员的工作,减少了数据库开发建立的工作量。

正是因为它的诸多优点.使得关系模型是结构数据模型中最为重要的数据模型关系数据模型是由IBM公司的E.F。

Codd于1970年首次提出.20世纪8O年代以来.数据库管理系统几乎都支持关系数据模型。

非关系系统的产品也大都加上了关系接口。

数据库领域当前的研究工作都是以关系方法为基础以关系数据模型为基础的数据库管理系统.称为关系数据库系统(RDBMS)。

关系数据库系统目前是各类数据库中最重要.也是最流行的数据库.技术也最为成熟。

本文将重点讨论关系式数据库,其他的两种结构模型将不作介绍了。

关系数据模型是指实体和联系均用二维表来表示的数据模型。

关系模型有以下性质:

二维表中的每一列属性都是不能再分的基本字段.也就是说不允许表中有表:

二维表中的各列被指定一个相异的名字;

二维表中的各行不允许重复:

二维表上的行列排列次序不重要。

在用户看来.一个关系模型的逻辑结构是一张二维表。

它由行和列组成.如下:

 

表1学生人事记录表

学号

姓名

性别

年龄

专业

系别

2005001

石晓彤

M

29

计算机

计算科学

2005002

丁文峰

M

30

控制工程

电子工程

2005003

罗婷

F

28

经济学

经管系

2005004

晓旭

F

25

应用数学

数学系

 

属性(列)

关系:

对应通常说的二维表,如表1所示的这张学生人事记录表。

元组:

二维表中的一行即为一个元组,相当于一个记录值。

下面我们举例说明关系.设有实体集S表示学生概貌.它有五个属性:

学号、姓名、性别、年龄、系别。

分别可用S#、NAME、SEX、AGE、DEP。

这个实体集存放5个学生的概貌,表2用来表示以上关系。

 

表2实体集S

 

S#

NAME

SEX

AGE

DEP

2006001

QW

M

30

FL

2006002

FA

M

29

ES

2006003

ZA

F

32

CS

2006004

FG

F

20

EE

2006005

LF

M

25

CS

 

设有实体集C表示课程的概况,它有三个属性,分别为:

课程号、课程名、课程学分,分别用C#,CN,CC。

这个实体集存放5门课的概况。

 

表3实体集C

 

C#

CN

CC

001

OS

3

002

DB

3

003

ML

4

004

SE

3

005

DM

4

 

实体集与实体集间的联系也可用关系表示.如学生选修课程的情况可用学号与课程号、课程成绩构成一个新关系SC,它描述了学生修课情况及课程成绩CG,这个关系如下:

 

表4联系SC的关系

 

S#

C#

CG

2006001

0003

80

2006001

0004

85

2006002

0001

91

2006002

0002

87

2006002

0005

85

2006003

0003

94

2006004

0001

90

2006004

0005

95

2006005

0002

92

2006005

0003

95

数据实体集与联系都可以用以上的这种二维表表示.在数据库中.用这种二维表构造数据的模型就是关系数据库。

关系数据库中的数据库管理系统向用户提供使用数据库的语言。

即数据子语言.这种语言目前以关系代数表示.但为了优化数据子语言的表示方法.下面.我们将引入用谓词逻辑中的方法表示数据子语言.使得对数据子语言的研究成为对谓词逻辑的研究。

3关系演算

应用谓词逻辑表示关系数据库中的数据子语言.就叫关系演算关系数据库中的基本数据结构二维表是一个n元有序组的集合,而关系演算是基于谓词逻辑的,因此这个n元有序组的集合可以用一个谓词逻辑公式表示,下面我们举例加以详细说明:

设有二维表如图1所示:

x

Y

1

2

2

3

3

4

4

5

图1

图1所示二维表可用谓词公式F(x,y)=(y=x+1)AN(x)表示,其中N(x)表示X为自然数。

通过上例说明.我们可以建立集合论与谓词逻辑公式间的一一对应关系数据子语言的操作对象二维表可用谓词公式表示。

而对其对象的操作也可用谓词公式表示.下面我们加以详细说明:

谓词公式的基本符号:

谓词符(二维表名):

如P,Q,R,……;

个体常量(二维表中数据):

如a,b,c,……;

个体变量(二维表中属性变量):

如x,Y,z,……;

函数符(数据库中的公式):

如f,g,h,……;

联结符:

^,V,],一>;

量词:

V,∃

括号:

(,)。

谓词公式的项:

(1)个体变量是项;

(2)个体常量是项:

(3)设t。

,t,…,t是项,f是函数符,则f(t.,t,…,t)是函数,函数是项

(4)项由且仅由上述1—3有限步骤生成。

一个谓词逻辑公式可以由下面规则得到:

(1)单个命题变元加左、右括号是公式。

如(P),(Q),……是公式;

(2)如果A是公式,那么]A也是公式;

(3)如果A,B都是公式,那么(A^B),(AVB),(A—B),(A<一>B)也是公式;

(4)如果A是公式而x是任一变元,那么Vx(A)及x(A)是公式;

(5)只有由规则1到规则4所得到的那些公式才是公式。

由规则1得到的公式称为原子公式.而其余的公式称为合式公式。

接下来.我们用谓词公式来表示基本操作。

我们先讨论插入、删除和修改在关系代数中我们知道可以用并运算与差运算分别表示插入与删除.而在谓词逻辑中联结词“或者”相当于并运算.而联结词“并且”再在第二项中加以否定相当于差运算。

假设:

R={(x1,x2,…,x。

)lP(xl,x2,…,x)}

s={(Y·,Yz,…,Y)lQ(Y·,Yz,…,Y)}

则有:

基本操作谓词逻辑公式

插入{(Xl,X2,…,X)|P(Xl,X2,…,Xn)VQ(Yl,Y2,…,Ym)}

删除{(Xl,X2,…,X)|P(Xl,X2,…,X)V]Q(Yl,Y2,…,Ym)}

投影{Xil,Xi2,…,Xik}|∃Xi1∃Xi2…XinP(x1,x2…,xn)}

选择{f(xl'x2'……,xn)|P(xl,x2'…’xn)^F}

笛卡尔乘积{(xl'x2'…,x,y-,Y2,…,ym)|P(X-,x’'…,x)^Q(yt,y2,…,ym)

上面的操作没有提到修改.是因为它是由删除和插入两个操作组合而成的.因此删除操作、插入操作可以由谓词刻划.则修改操作也可由谓词刻划通过以上的谓词逻辑公式我们可以把关系数据库中的数据子语言变成谓词逻辑中的谓词公式.因而可以用谓词公式研究数据子语言而应用上面的谓词公式对关系数据库的研究所形成的理论叫关系演算用关系演算中的公式表示关系数据库中的数据操作.在实际应用中它能够方便地对数据作检索及增加、删除、修改操作。

接下来.我们将举例详细说明。

我们以上文中的表3—2.3—3.3—4所定义的二维表S、C、SC作为操作对象,将它们的谓词定义为:

S(S#,NAME,SEX,AGE,DEP),C(C#,CN,CC),SC(S#,C#,CG)。

下面,我们进一些操作:

(1)打印所有学生名单

我们可以表示为:

^(S#,NAME,SEX,AGE,DEP);

(2)打印出课程学分为3学分的课程

我们可以表示为:

C(C#,CN。

CC)^CC=3;

(3)找出所有课程号和课程名

我们可以表示为:

ccC(C#,CN,CC);

(4)找出性别为女性学生

我们可以表示为:

S(S#,NAME,SEX,AGE,DEP)^SEX=F;

(5)找出所有电子工程系EE学生的名单

我们可以表示为:

∃s#,∃sex,∃age,∃dep(S}},NAME,SEX,AGE,DEP)^DEP=EE:

(6)找出姓名为LF的学生所修读课程的课程号

我们可以表示为:

NAmDEP∞(S(S#,NAME,SEX,AGE,DEP)^SC(S#,C#,CG)^NAME=LF;

(7)找出学号为2006003的学生所修读的课程号及其分数

我们可以表示为:

C(S#,C#,CG)^S#=2006003;

(8)找出姓名为SY的学生所修读课程的课程名

我们可以表示为:

∃s#∃name∃sex∃age∃dep∃c#∃cg∃cc(S(S#,NAME,SEX,AGE,DEP)^SC(S#,C#,CG)^C(C#,CN,CC)^NAME=SY;

(9)现在我们要在学生关系S中插入一个元组:

(2006008,LY,M,26,CS)

我们假设要插入的元组的谓词为Si.则这个插入操作可表示为:

S(S#,NAME,SEX,AGE,DEP)VSi(S#,NAME,SEX,AGE,DEP);

(10)若我们要在课程关系C中删除课程学分为4的课程

我们可以表示为:

C(C#,CN,CC)^](C(C#,CN,CC)^CC=4)。

关系演算可分为元组关系演算和域关系演算.前者以元组为变量.后者以域为变量我们对于关系演算的关系式数据库的理论作进一步研究.发展了关系演算的公理系统,它由三部分组成,这三部分即三组公理:

1特殊化公理;2事实性公理;3演绎性公理。

关系演算公理系统所采用的推理方法、定理及证明过程与谓词逻辑是相同的由于谓词逻辑中的公理是永真的.因此谓词逻辑中的公理在关系演算中也可以认为是公理。

4分析应用(基于谓词逻辑的除法运算语义及其SQL实现)

4.1谓词逻辑及语义表达

谓词(Predicate)描述了对象的状态、性质及对象之间的关系,其表示形式为:

P(x1,x2,x3,...xn).其中P是谓词符号,表示x1,x2,x3,...,xn个体对象之间的属性、状态或关系.x1,x2,x3,...,xn是谓词的参量,可以是个体常量、个体变量或个体函数.谓词逻辑就是指利用谓词的形式,来表达知识和进行因果推理.在谓词逻辑中,通过增加量词来提高谓词表达语义的能力.“!

”表达全称量词,而“"”表达存在量词,用“!

”和“"”加约束变元的形式有效地提高了谓词逻辑的表达能力[5].使用谓词逻辑能够自然、直观、准确地表示知识及推理,从而为计算机实现逻辑推理提供了一条有效的途径.

4.2、基于谓词逻辑的除法运算的SQL表达

4.2.1、基于谓词逻辑的除法运算语义分析与表达给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组.R中Y与S中的Y可以有不同的属性名,但必须出自相同的域集.R与S的除运算可以得到一个新的关系P(X),第2期王路帮,张庆元,储成哲:

基于谓词逻辑的除法运算语义及其SQL实现P是R中满足下列条件的元组在X属性列上的投影:

元组在X上的分量值x的像集Y(x)包含S在Y上的投影的集合.可记作:

.图1表达了除法运算的实现过程.图2表达了除法运算的语义实现过程.

通过谓词推理和形式转换,除法运算的语义解析为:

 

在MSSQL中可以用到的谓词表达关键词有ANY、ALL和Exists,ANY在SQL中表达了“某一个”的含义,而并非“任意一个”的意思,比如“>ANY”表达了“大于子查询结果中的某个值”的含义,而非“任何值都大的含义”.ALL表达“所有值”的含义,比如“>ALL”表示“大于子查询结果中的所有值”.而Exists表达“存在”的含义,一般在构造子查询的时候用到.

4.2.2、SQL除法运算的实现R(X、Y)÷S(Y、Z)的运算用结构化语言SQL语句可表达为下列形式:

selectdistinctR.X

fromRR1

wherenotexists

(selectS.Y

fromS

wherenotexists

(select<

fromRR2

whereR2.X=R1.XANDR2.Y=S.Y)

同理,基于多属性关系除法的SQL表达形式为:

selectdistinctR1.X1,R1.X2,…,R1.Xn

fromRR1

wherenotexists

(selectS.Y1,S.Y2,…,S.Ym

fromS

wherenotexists

(select@

fromRR2

whereR2.X1=R1.X1AndR2.X2=R1.X2And…AndR2.Xn=R1.XnAnd

R2.Y1=S.Y1AndR2.Y2=S.Y2And…AndR2.Ym=S.Ym))

4.3、除法运算的案例解析

构造一个RDB数据库,包括一个学生记录表(Student),一个课程记录表(Course)和一个学生选课关系表(SC).Student表中记录了学生的Sno(学号)、Sname(学生名)、Ssex(学生性别)、Sage(学生年龄)及Sdept(学生所在系);而Course包括Cno(课程号)和Cname(课程名称);SC表包括Sno、Cno和Grade(成绩).现要查询至少学习了学号为“95001”的学生所学课程的所有学生学号.因查询仅涉及SC表,故仅列SC表,如表1:

表1SC记录表

Sno(学号)

Cno(课程号)

Grade(成绩)

95001

1

92

95001

2

85

95001

3

88

95002

2

90

95002

3

80

令CS(95002,y)表示95002学习了课程y,Student(x)表达x是某个学生的学号,这样CS(x,y)就表达某个学生学习了y课程.相关的语义描述为:

对应的SQL语句可以设计为:

selectdistinctSno

fromSCSCF/@SCF表示sc课程表的第一张虚拟表@/

wherenotexists

(selectCno

fromSCSCS/@SCS表示第二张虚拟表@/

whereSCS.Sno=‘95001’andnotexists

(select@

fromSCSCT/@SCT表示第三张虚拟表@/

whereSCT.Sno=SCF.SnoandSCT.Cno=SCS.Cno))

结束语

本文首先介绍了谓词逻辑的基本概念和对谓词公式基本操作,运用路一些具体的实例进行了分析,然后介绍了关系数据库的基本概念基本操作,最后详细的介绍了谓词逻辑在关系数据库中的应用,即将谓词逻辑及公理化理论应用于关系数据库中表示数据子语言,根据一些实例表进行了关系演算以及分析。

最后分析了基于谓词逻辑的除法运算语义及其SQL实现,基于谓词推理的除法运算的语义分析与表达较好地反映了除法操作的基本过程,也反映了变量之间的依赖关系.在内外嵌套的三层结构中,最里层的变量连接了第一层和第二层的两类变量.这为MSSQL实现除法运算提供了明晰的逻辑基础,使得SQL设计较为简单快捷,为大量涉及除法操作的实际问题提供了有效的解决方案.在未来的学术探讨和教学中想通过某种机制构造一种除法运算的结构化自动实现机制,解决除法运算给广大SQL使用者带来的困难.

参考文献

【1】赵永霞.数据库系统原理与应用【M】.武汉大学出版社,2006.

【2】王志梅.关系数据库基础与技术【M】.国防工业出版社,2005.

【3】李春葆,曾慧.数据库原理【M】.清华大学出版社,2006.

【4】周定康,许婕.关系数据库理论及应用【M】.华中科技大学出版社.2005.

【5】德特.数据库系统导论【M】.中国电力出版社,2006.

【6】戴特.数据库系统导论【M】.机械工业出版社,2007.

【7】GeofSutclife.Log

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1