<h3 style="margin-left:0cm;"><strong>函数依赖的定义</strong></h3>
<p style="margin-left:0cm;">关系模式中的各属性之间相互依赖、相互制约的联系称为数据依赖。数据依赖一般分为函数依赖、<a href="https://blog.csdn.net/Shishishi888/article/details/90144652">多值依赖</a>和连接依赖。其中函数依赖是最重要的数据依赖。</p>
<p style="margin-left:0cm;"><strong>函数依赖</strong>(Functional Dependency,FD)是关系模式中属性之间的一种逻辑依赖关系。例如,在一个有关学生的关系模式SCD(属性SNo,SN,Age,Dept,MN,CNo,Score分别代表学生证号,学生姓名,年龄,所属院系,院系主人姓名,选修课程号,分数)中,属性SNo与SN、Age和Dept之间都有一种依赖关系。由于一个SNo只对应一个学生,而一个学生只能属于一个系,所以当SNo的值确定之后,SN、Age、Dept的值也随之被唯一地确定了。这类似于变量之间的单值函数关系。设单值函数Y=F(X),自变量X的值可以决定一个唯一的函数值Y。在这里,我们说SNo决定函数(SN, Age, Dept),或者说(SN, Age, Dept)函数依赖于SNo。</p>
<p style="margin-left:0cm;">设关系模式R(U, F),U是属性全集,F是U上的函数依赖集,X和Y是U的子集,如果对于R(U)的任意一个可能的关系r,对于X的每一个具体值,Y都有唯一的具体值与之对应,则称X决定函数Y,或Y函数依赖于X,记作X→Y。我们称X为决定因素,Y为依赖因素。当Y不函数依赖于X时,记作:YX。当X→Y且Y→X时,则记作:XF。</p>
<p style="margin-left:0cm;">对于关系模式SCD<br> U={SNo, SN, Age, Dept, MN, CNo, Score}<br> F={SNo→SN, SNo→Age, SNo→Dept, (SNo, CNo)→Score}<br> 一个SNo有多个Score的值与其对应,因此 Score不能唯一地确定,即Score不能函数依赖于SNo,所以有:SNoScore,同样有:SNoCNo。但是Score可以被(SNo, CNo)唯一地确定。所以可表示为:(SNo,CNO)→Score。<br> </p>
<h3 style="margin-left:0cm;"><br><strong>函数依赖的逻辑蕴涵定义</strong></h3>
<p style="margin-left:0cm;">假设已知关系模式R(X, Y, Z)有X→Y,Y→Z,问X→Z是否成立?能否从已知的函数依赖推导出XY→YZ?<br> 类似这些由已知的一组函数依赖,判断另外一些函数依赖是否成立或者能否从前者推导出后者的问题,就是<strong>函数依赖的逻辑蕴涵</strong>所要讨论的内容。</p>
<p style="margin-left:0cm;">设F是在关系模式R(U)上成立的函数依赖集合,X,Y是属性集U的子集,X→Y是一个函数依赖。如果从F中能够推导出X→Y,即如果对于R的每个满足F的关系r也满足X→Y,则称X→Y为F的逻辑蕴涵(或F逻辑蕴含X→Y),记为F|=X→Y。</p>
<p style="margin-left:0cm;">设F是函数依赖集,被F逻辑蕴涵的函数依赖的全体构成的集合,称为<strong>函数依赖集F的闭包</strong>(Closure),记为<img alt="F^{+}" class="mathcode" src="https://private.codecogs.com/gif.latex?F%5E%7B&plus;%7D">。</p>
<p style="margin-left:0cm;"> </p>
<h3 style="margin-left:0cm;"><br><strong>函数依赖的推理规则及正确性</strong></h3>
<p style="text-indent:0;">从已知的函数依赖,可以推导出另外一些新的函数依赖,这就需要一系列推理规则,这些规则常被称为<strong>“Armstrong公理”</strong>。</p>
<p style="text-indent:0;">设有关系模式R(U),U是关系模式R的属性集,F是R上成立的只涉及U中属性的函数依赖集。X,Y,Z,W均是U的子集,r是R的一个实例。函数依赖的推理规则如下。</p>
<p style="text-indent:0px;"><span style="color:#f33b45;"><strong>1. Armstrong公理</strong></span></p>
<p style="text-indent:0px;"><strong>(1)自反律(Reflexivity)</strong><br> 如果 YXU,则X→Y在R上成立。即一组属性函数决定它的所有子集。<br> 例如,在关系SCD中,(SNo, CNo)→SNo和(SNo, CN)→CNo。</p>
<p style="text-indent:0;"><strong>(2)增广律(Augmentation)</strong><br> 若X→Y在R上成立,且Z属于U,则XZ→YZ在R上也成立。</p>
<p style="text-indent:0;"><strong>(3)传递律(Transitivity)</strong><br> 若X→Y和Y→Z在R上成立,则X→Z在R上也成立。</p>
<p style="text-indent:0;">Armstrong公理的推理规则是正确的。也就是,如果X→Y是从F用推理规则导出,那么X→Y在<img alt="F^{+}" class="mathcode" src="https://private.codecogs.com/gif.latex?F%5E%7B&plus;%7D">中。<br><br><span style="color:#f33b45;"><strong>2. Armstrong公理推论</strong></span><br><strong>(1)合并律(Union rule)</strong><br> 若X→Y和X→Z在R上成立,则X→YZ在R上也成立。<br> 例如,在关系SCD中,SNo→(SN, Age)ÿ |
|