数据依赖的公理系统----Armstrong公理系统及其有效性和完备性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
数据库技术是计算机技术中发展最快的领域之一,也是应用最广的技术之一,他已成为计算机信息系统与应用系统的核心技术和重要基础。
数据库是数据管理的最新技术,是计算机科学的重要分支。
多少年来,数据库已经从专用的应用程序包发展到成为通用的系统软件,由于数据库具有数据结构化,最低冗余度,较高的程序与数据独立性,易于扩充,易于编制程序等等优点,较大信息系统都是建立在数据库设计之上的。
因此,不仅大型计算机及中小型计算机,甚至微型计算机都配有数据库管理系统。
目前对数据库的各种模型的研究以及理论上的探索都还在蓬勃的开展,其应用程序也从一般的管理扩大到计算机辅助设计,人工智能管理以及科学计算等领域。
本文论述的就是数据可系统中的一个分支:Armstrong公理系统。
Armstrong公理系统是一组推理规则,是1974年首先由W.W.Armstrong提出来的。
本文由函数的依赖引入了Armstrong公理系统并对其尽心了证明推导并对其所涉及的引理定理进行证明举例,对于Armstrong公理系统的有效性和完备性进行了详细的阐述。
关键词数据库技术 ; Armstrong公理系统; 有效性 ;完备性
Abstract
The database technique is an one of the quickest realms of inside development of calculator technique, and is also applied one of the most large techniques, he to have become the calculator information the system and apply tecn ique and impotent base of the system ? The database is a data latest technique that manage, is the important branch of calculator science. How much in the last years, the database is already from the applying of appropriation what procedure the pack develop to become the in general use system software, because the database have the data of construction, independent of lowest redundancy degree, higher procedure and data, easy to enlargement, easy to establishment procedure etc. the advantage, bigger information system all establish in the database to design on. Therefore, not only small scaled calculator of large inside, even the miniature calculator all have the database management the system. Now management towards the database’s quest tha t the research of the every kind of model and theoretically all return at booming open the exhibition, its applied procedure too from general extend the calculator to lend support to the design, artificial intelligence the realms such as management and science calculation etc.. This what text discuss is a data can a branch of the system inside: Armstrong justice system. Armstrong justice
system is a the set reason logically what rule, is 1974 beginning of years are first from the W.W. Armstrong to bring up to come. This text becombined by the functon’s counting on into Armstrong justice system as to it’s the usefulness for justice system for involving axioms proceeding proof give examplesing, for Armstrong justice system of proceeds with the completed detailed writeing.
Key words database technique; Armstrong justice system ;
目录
引言......................................................................................................... 11 函数依赖 ............................................................................................. 2
1.1 函数依赖的定义..................................................................... 21.2 函数依赖及其举例 ................................................................. 22 逻辑蕴含 ............................................................................................. 6
2.1 逻辑蕴含的定义..................................................................... 62.2 逻辑蕴含的证明..................................................................... 63Armstrong公理系统........................................................................ 73.1 Armstrong公理系统概述....................................................... 73.2 Armstrong公理的几个性质 ................................................... 74Armstrong公理系统的引理........................................................ 104.1 Armstrong公理系统的引理1 ............................................ 104.2 Armstrong公理系统的引理2 ............................................ 115属性集闭包及公理完备性 .......................................................... 125.1 属性集闭包及公理完备性 ................................................. 125.2 属性集闭包及公理完备性举例说明.................................. 136判断函数依赖蕴含的算法 .......................................................... 166.1 算法说明......................................................................... 166.2 举例及证明..................................................................... 18参考文献 ......................................................................................... 19
数据依赖的公理系统-------
Armstrong公理系统及其有效性和完备
引言
在数据库中,数据之间存在着密切的联系。
在数据库技术中,把数据之间存在的联系称为“数据依赖”。
而设计人员的一个任务就是要把其中的数据依赖找出来。
在数据库规范化设计中,数据依赖起着非常关键的作用。
其中,函数依赖是基本的一种依赖。
“数据依赖”通过一个关系中属性之间值的相等与否体系出来的数据间的相互关系,它是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。
设计人员的一个任务就是把其中的数据依赖找出来。
在数据库规范化设计中,数据依赖起着非常关键的作用。
其中,函数依赖是基本的一种依赖,它是关键码概念的推广。
1 函数依赖
1.1 函数依赖的定义
我们今天要讨论的就是数据依赖公理系统中关于“求与给定函数依赖集等价的最小函数依赖集的算法研究”。
我们首先介绍一下相关的概念、定义和定理。
定义1 函数依赖:
设有关系模式R(U),X和Y是属性集U的子集,函数依赖(Functional Dependency,简记为FD),是形为X→Y的一个命题,只要r是R的当前关系,对r中任意的两元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么函数依赖X→Y在关系模式R(U)中成立。
这里t[X]表示元组t在属性集X上的值,相当于t.X,其余类同。
X→Y读作“X函数决定Y”,或“Y函数依赖于X”。
FD是对关系模式R 上的一切可能的关系r定义的。
对于当前关系r的任意两个元组,如果X值相同,则要求Y值也相同,集即有一个X值就有一个Y值与之相对应,或者说Y值由X值决定。
因而这种依赖称为函数依赖。
1.2 函数依赖及其举例
这里t[X]表示元组t在属性集X上的值,其余类同。
对于当前关系r的任意两个元组,如果X值相同,则要求Y值也相同,即有一个X值就有一个Y值与之相对应,或者说Y值由X值决定。
因而这种依赖称为函数依赖。
从数学角度看,定义1可以和函数的定义相比:对于属性X的每一个元素(它将出现在某行中),Y中有唯一一个元素(出现在某行中)与之对应。
【例1】
在上图的表格中,有下面的一些函数成立:
emp_id→emp_name
emp_id→emp_phone
em_pid→dept_name
在俄E-R概念中,我们知道这些是成立的,因为em_pid是实体employee的一个标识符,其他数据项简单地表示了实体的其他属性。
一旦一个实体被确定,他的所有其它属性也就确定了。
但是我们也可以凭直觉辨识这一事实。
如果我们在看到图中的设计中,有两行具有相同的emp_id值和不同的emp_phone值,我们就认为这些数据被破坏了(假设每一个雇员有唯一的一个电话),但是如果我们看到两行有相同的emp_phone值和不同的cmp_id值,我们的第一个想法是他们代表了不同的雇员,这两个雇员共用一个电话。
但是这两个情形是对称的,这完全是由于我们对于数据的简单理解导致我们认为第—种情形是被破坏的数据。
我们指望用emp_id打破这一束缚,来唯一地表示雇员。
注意我们所说的暗示着
emp_id函数决定emp_pheone而emp_phone并没有函数决定cmp_id.有时候用下面得形式表示,表示后面这一点:
emp _phone/→emp_id
【例2】有一个关于学生选课,教师任课的关系模式:R(SNO,SNAME,CNO,GRADE,CNAME,TNAME,TAGE)
属性分别表示学生学号、姓名、选修课程的课程号、成绩、课程名、任课教师姓名和年龄等意义。
如果规定,每个学号只能有一个学生姓名,每个课程号只能决定一门课程,那么可写成下列FD形式:
SNO→SNAME
CNO→CNAME
每个学生每学一门课程,有一个成绩,那么可写出下列FD形式:(SNO,CNO)→GRADE
还可以写出其他一些FD:
CNO→(CNAME,TNAME,TAGE)
TNAME→TAGE
2 逻辑蕴含
2.1 逻辑蕴含的定义
定义2 逻辑蕴涵:对于满足一组函数依赖F的关系模式R(U,F),其任何一个关系r,若函数依赖X→Y都成立(即r中任意两元组t,s,若t[X]=s[X],则t[Y]=s[Y]),则称F逻辑蕴涵X→Y。
比如在R中具有函数依赖A→B和B→C,则我们可以说R中必然具有函数依赖A→C。
在讨论函数依赖时,有时需要从一些已知的函数依赖去判断另一些函数依赖是否成立。
比如A→B和B→C在关系模式R中成立,那么A →C在R中是否成立?这个问题称为逻辑蕴涵问题。
2.2 逻辑蕴含的证明
通过反证法证明,设r为关系模式R的一个关系,满足A→B和B →C,但不满足A→C。
则必然存在r,在关系r中存在两个元组t和s,在属性A上的分量的值相等,而在C上的分量的值不相等。
设t、s元组在B上的分量值相等,则与r满足B→C相矛盾;如果设t、s元组在B上的分量值不相等,则与r满足A→B相矛盾。
所以满足A→B、B →C的关系r必须满足A→C。
我们就说函数依赖A→B、B→C逻辑蕴含函数依赖A→C。
3Armstrong公理系统
3.1 Armstrong公理系统概述
下面我们进入我们所要讨论的定理Armstrong公理系统。
Armstrong公理系统是一组推理规则,是1974年首先由W.W.Armstrong提出来的。
利用这些推理规则,可从已知的函数依赖集F推导出F+中全部函数依赖。
下面就详细讨论一下Armstrong公理系统。
以下的推理规则是他人于1977年改进的形式。
当已知模式R满足一组函数依赖F,怎么知道R中还有那些函数依赖?如何决定那些属性可以组成关系的码等等问题,迫切需要有一套形式推测推力标准规则,利用这些推力规则,可以从已知的函数依赖F推导山F+中全部函数依赖。
这组推理规则叫Armstrong公理。
3.2 Armstrong公理的几个性质
这个公理是正确的,即由F使用推理规则推导出来。
下面简单地介绍一下这个公理系统。
设R为一关系模式,U为R的属性全体(属性的总体集),F是U上的一组函数依赖,于是有关系模式R(U,F)。
对R(U,F)来说有以下的推理规则:
●A1(自反性,Reflexivity): 若Y X U,则X→Y为F所蕴
含。
证明:A1是显然的。
因为不可能在一个关系中存在两个元组X上
是相等的,而在X的某个子集Y上不相等。
●A2(增广性,Augmentation):若X→Y为F所蕴含,且Z U,
则XZ→YZ为F所蕴含。
证明:假设R的某个关系r中存在两个元组t和s违反XZ→YZ,即t[XZ]=s[XZ],但t[YZ]≠[YZ]。
从t[YZ]≠s[YZ]可知t[Y]≠s[Y]或t[Z]≠s[Z]。
如果t[Y]≠s[Y], 则与已知的X→Y矛盾;如果t[Z]≠s[Z],则与假设的t[XZ]=s[XZ]矛盾。
因此,假设不成立,从而得出A2是正确的。
●A3(传递性,Transitivity):若X→Y及Y→Z为F所蕴涵,则X →Z为F所蕴涵。
证明:假设R的某个关系r中存在两个元组t和s违反X→Z,即t[X]=s[X],但t[Z]≠ s[Z]。
如果t[Y]≠s[Y],则与已知的X→Y矛盾;如果t[Y]=s[Y],则与已知的Y→Z矛盾。
因而A3是正确的。
FD推理规则A1、A2、A3是正确的。
也就是,如果X→Y是从F用推理规则导出,那么X→Y在F+中。
由Armstrong公理系统A1,A2,A3三条推理规则可以得到另外几个很有用的推理规则:
●B1合并规则:由X→Y及X→Z,有X→YZ。
证明:已知X→Y,根据A2增广性,两边用X扩充,得到X→XY。
从已知X→Z,根据A2增广性,两边用Y扩充,得到XY→YZ。
根据A3传递性,从X→XY和XY→YZ可得到X→YZ。
从而B1
得证。
●B2 伪传递规则:由X→Y及WY→Z,有XW→Z。
证明:已知X→Y,根据A2增广性,两边用W扩充,可得WX→WY,
再由WY→Z,根据A3传递性可得XW→Z,从而B2得证。
●B3分解规则:由X→Y及Z Y,有X→Z。
证明:由Z Y,根据A1自反性得Y→Z,又由X→Y,根据A3传递性可得X→Z,从而B3得证。
●B4 复合规则:由X→Y及Z→W,有XZ→YW。
证明:由X→Y及Z→W,根据A2增广性,X→Y两边用Z扩充,Z→W两边用Y扩充,可分别得到XZ→YZ和YZ→YW,再根据A3传递性可得到XZ→YW,从而B4得证。
4Armstrong公理系统的引理
4.1 Armstrong公理系统的引理1
在这一章我们介绍一下Armstrong公理的几个引理
根据所证的合并规则和分解规则,我们又可以得到这样一个重要的结论:
引理1:X→AlA2…A k成立的充分必要条件是X→Ai成立(i=1,2,…k)。
证明:先证充分条件:已知X→AlA2…A k成立,则根据分解规则,有X→Ai(i=1,2,…,k)成立。
必要条件:已知X→Ai(i:1,2,…,k)成立,则根据合并规则,有X→A1A2…A k成立。
人们把自反律,传递律和增广律称为Armstrong公理系统。
Armstrong公理系统是有效的,完备的。
Armstrong公理系统的有效性是指:由F出发根据Armstrong公理系统推导出来的每一个函数依赖一定在F+中;完备性是指F+中的每一个函数依赖,必定可以由F出发根据Armstrong公理系统推导出来。
也就是说有效性保证了推出的所有函数依赖是正确的,完备性保证了可以推出所有被蕴涵的函数依赖,这就保证了计算和推导的可靠性、有效性。
那么现在就可以由一个已知的F,根据Armstrong公理的推理规则,求出F+。
已知关系模式R(ABC),F={A→B,B→C},可推出F+中有43个函数依赖。
譬如,据A1可推出A→Q(Q表示空属性集),A→A,…。
据已知的A→B及规则A2可推出AC→BC,AB→B,A→AB,…。
根据已知条件及规则A3可推出A→C等。
4.2 Armstrong公理系统的引理2
引理2 :设F为属性集U上的一组函数依赖,X,Y U,X→Y能由F根据Armstrong公理导出的充分必要条件是Y X f+。
因此要判断函数依赖X→Y是否为F所蕴涵,即是否能由F出发根据Armstrong公理导出,如果Y X F+,则X→Y为F所蕴涵。
从F 计算F+是指数级时间,但从属性集X求X f+并不太难,花费的时间与F 中全部依赖的数目成正比,当然我们推导出F+中的全部函数依赖没有什么意义,只要有针对性的判断或推导就可以了。
5属性集闭包及公理完备性
5.1 属性集闭包及公理完备性
下面给出函数依赖集的闭包的定义:给定一个函数依赖集F,他作用于在表面T的属性上。
我们定义F的闭包围可以从F推导出的所有的函数依赖的集合。
记为F+。
【例3】F为八个函数依赖所组成:
AB→C D→EG
C→A BE→C
BC→D CG→BD
ACD→B CE→AG
设X=BD,求X+
计算步骤:
1.设X(0)=BD.
2.计算X(1):在F中找一个函数依赖,其左边为B或D或BD,在F中有函数依赖D→EG。
所以X(1)=BD∪EG=BDEG。
3.计算X(2):找包含X(1)的函数依赖,除D→EG外,还有BE→C,则得X(2)=BCDEG。
4.计算X(3):找包含X(2):得函数依赖,除去已使用过的函数依赖外,还有C→A,BC→D,CG→BD和CE→AG,则得X(3)=ABCDEG。
由
于X(3)为全部属性组成,显然X(3)=X(4)。
因此得(BD)+=ABCDEG 上述计算X+的算法可用数学归纳法证明是正确的,证明如下:
证明:∵X(0)=X,∴X(0) X+是显然的
设X(i) X+,在X(i+1)中所增加的部分B是在W中,满足V →W是F中函数依赖,而且V X(i)。
由于X(i)X+,所以V
X+。
根据引理2,则有X→V。
由于B W,所以根据自反律,有W→B。
由于X→V,V→W,W→B,根据传递律得X→B,所以B X+,即X(i+1)X+,当X(i+1)=X(i)或X(i+1)=U时,算法终止。
证明完毕。
5.2 属性集闭包及公理完备性举例说明
要证明完备性,就要说明F+中的每一个函数依赖都可以由F出发根据Armstrong公理推导出来,但要求出F+中的每一个函数依赖是很难的,这是一个NP完全问题,指数级问题。
比如从F={X→A1,…,X →An}出发,我们至少可以推导出2的n次方个不同的函数依赖,举个例子:
【例4】考虑给定的函数依赖集合F
F={A→B,B→C,C→D,D→E,E→F,F→G,G→H}
由传递律,A→B和B→C可以推导出A→C,它一定包含在F+中。
同样,B→C和C→D推导出B→D。
实际上,如果在序列ABCDEFGH 中一个属性出现在最后一个前面,那么它可以通过传递律来函数决定序列中出现在它右边的每一个属性。
我们也有平凡函数依赖如A→A。
下
一步,使用合并规则,我们可以生成其他函数依赖,例如A→ABCDEFGH。
事实上,通过在不同的组合中使用合并规则,我们可以得到A→(任何ABCDEFGH的非空子集)。
有2的8次方减1,255个这样的非空子集。
上面推导出的所有函数依赖都包含在F+中。
下面给出Armstrong公理系统完备性的证明:
它的证明分三步:
1.若V→W成立,且V X f+,则W XF+。
证明:因为V X f+,所以有X→V成立;于是X→W成立(因为X →V,V→W),所以W XF+。
2. 构造一张二维表r,它由下列两个元组构成,可以证明r必是R
﹤U,F﹥的一个关系,即F中的全部函数依赖在r上成立。
X U-X f+
11.........1 00 0
11.........1 11 (1)
若r不是R〈U,F〉的关系,则必由于F中有某个函数依赖V→W在r 上不成立所致。
由r的构成可知,V必定是X f+的子集,而W不是X f+ 的子集,可是由1,W X F+,矛盾。
所以r必是R(U,F)的一个关系。
3.若X→Y不能由F从Armstrong公理导出,则Y不是XF+的子集,因此必有Y U-X F+,则X→Y在r中不成立,即X→Y必不为R(U,F)蕴涵。
所以任何不能由F按公理推理得出的函数依赖,R是不能满足的,也就是说R所满足的函数依赖都能按公理推出。
这就证明了公理的完备性。
Armstrong公理的完备性及有效性说明了“导出”与“蕴涵”是两个完全等阶的概念。
于是F+也可以说成是由F出发借助Armstrong公理导出的函数依赖的集合。
6判断函数依赖蕴含的算法
6.1 算法说明
接下来我们对判断函数依赖蕴含的算法问题进行一下讨论:
判断函数依赖蕴涵的算法
要判断函数依赖X→Y是否为F所蕴涵,即是否能由F出发根据Armstrong公理导出,就可以利用引理2,如果Y X F:则X→Y为F 所蕴涵。
属性集闭包是我们所进行行开发中的一个重要里程碑。
它给我们提供了一般方法来确定是否一个给定的函数依赖可以从函数依赖集F 推导出来,而不用担心在例5中所说的计算F+时可能出现的指数级膨胀。
从F计算F+是指数级时间,但从属性集X求X f+并不太难,花费的时间与F中全部依赖的数目成正比,是一个多项式级时间问题。
当然我们推导出F+中的全部函数依赖没有什么意义,只要有针对性的判断或推导就可以了。
X F+可通过算法1来解决。
算法l 求属性集X(X U)关于U上的函数依赖集F的闭包X f+。
输入:X,F
输出:X f+
步骤:1.令X(0)=X,i=0
2.求B,这里B={A∣( ∃V)( ∃W)(V→W∈F∧V X(i)∧A∈W)};
3.X(i+1)=B∪X(i)
4.判断X(i+1)=X(i)吗?
5.若相等或X(i+1)=U,则X(i+1)就是X f+, 算法终止。
6. 若否,则i=i+1,返回第2步。
或者写为:result:=X;
repeat
for F 中每个Y→Z do
if Y result then result:=result∪Z;
until(result没有改变);
result即所求的X F+。
例1 :已知关系模式R﹤U,F﹥,
其中U={A,B,C,D,E};F={AB→C,B→D,C→E EC→B AC →B}。
求X(0)=AB;
计算X(1);逐一扫描F集合中各个函数依赖,,找左部为A,B,或AB的函数依赖。
得到两个:AB→C,B→D。
于是X(1)=ABUCD=ABCD。
因为X(0)≠(X(1),所以再找出左部为ABCD子集的那些函数依赖,又得到
C→E,AC→B,于是X(2)=X(1)UBE=ABCDE。
因为X(2) 已等于全部属性集合,所以(AB)F+=ABCDE。
若要判断AB→CDE是否为F所蕴涵,则看CDE是否属于(AB)F+,由于通过计算得知(AB)f+=ABCDE, 所以根据引理2可知AB→CDE能
由F根据Armstrong公理导出, 即为F所逻辑蕴涵。
6.2 举例及证明
上述计算X+的算法可用数学归纳法证明是正确的,
证明如下:
证明:∵X(0)=X,∴X(0)X+是显然的
设X(i)X+,在X(i+1)中所增加的部分B是在W中,满足V→W 是F中函数依赖,而且V X(i)。
由于X(i)X+,所以V X+。
根据引理2,则有X→V。
由于B W,所以根据自反律,有W→B。
由于X→V,V→W,W→B,根据传递律得X→B,所以B X+,即X(i+1) X+,当X(i+1)=X(i) 或X(i+1)=U时,算法终止。
证毕。
对于算法1,令ai=|X1|,{ai}形成一个步长大于1的严格递增的序列,序列的上界是|U|,因此该算法最多|U|-|X|次循环就会终止。
参考文献
[1]韩庆兰编著《数据库技术》湖南科学技术出版社 2001,
[2]萨师煊,王珊.数据库系统概论(第三版) 高等教育出版社 1999
[3]施伯乐,丁尘康,周傲英,田增平.数据库系统教程高等教育出版社 1999
[4]俞盘祥,沈金发.数据库系统原理清华大学出版社 1988
[5]丁宝康,董健全.数据库实用教程 2000
[6]郑人杰,殷人昆,陶永雷。
实用软件工程。
第二版,北京:清华大学出版社,200l/10
[7]王珊,陈红,文继荣。
数据库和数据库管理系统。
北京:电子工业出
版社,1995
[8]石树刚,郑振楣。
关系数据库。
北京:清华大学出版社,1993
[9]Raghu Ramakrishnan ,Johannes Gehrke 著,Database Management System(2nd Edition) 2002
[10]吴文虎程序设计基础清华大学出版社 2002 9
[11] 张海藩软件工程导论清华大学出版社 2000 9
[12]姚普远。
数据库原理及应用(Access 2000)。
第一版。
北京:清华
大学出版社,2002
[13]沈被娜计算机软件技术基础清华大学出版社 2001 5
[14]Patrick 0’Neil,Elizabeth 0’Nell.数据库原理、编程与性能机械工业出版社 2002
[15] Raghu Ramakrishnan ,Johannes Gehrke 著,Database Management System(2nd Edition) 2002。