欢迎来到天天文库
浏览记录
ID:34193155
大小:54.35 KB
页数:3页
时间:2019-03-04
《sqlserver最小函数依赖集sqlserver最小函数依赖》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、SQLServerSQLServer中最小函数依赖集作者:娜来源:程序员之家发布者:admin时间:2009-11-0910:19:28点击:5224今天小编要和大家分享的是SQLServer中的最小函数依赖集,假设S1和S2是两个函数依赖集,如果所有为S1所蕴涵的函数依赖都为S2所蕴涵,一即$1+是$2+的子集,则S2是S1的覆盖,DBMS只要实现了S2中的函数依赖,就自动实现S1中的函数依赖。如果S2是S1的覆盖,同时S1是S2的覆盖一则S1和S2等价,即S1+二S2+。很显然,如果S1和S2等价,则D
2、BMS只要实现S1中的函数依赖,就自动实现S2中的函数依赖,反之亦然。当且仅当函数依赖集满足以下条件时,该函数依赖集为最小函数依赖集:1)每个函数依赖的右边(应变量)只含有一个屈性(即它是单元素集合)。2)每个函数依赖的左边(自变量)是不可约的一删除自变量的任何一个属性都将改变闭包S+(即会使S转变为一个不等价于原来的S的集合)。这种函数依赖被称为左部不可约的函数依赖。3)删除S中任何一个函数依赖都将改变它的闭包S+,即使S转变为一个不等价于原来的S的集合。关于第2点和第3点,在这里要指出的是,为了知道如果
3、删除某些元素是否会改变闭包,不必要清楚地知道闭包的内容。例如:观察大家熟悉的零件关系变量P,有下列函数依赖:P#fPNAMEP#fCOLORP#fWEIGHTP#fCITY显而易见,该函数依赖集是最小依赖集:每个函数依赖中右边只含有一个属性,同样,左边也是不可约的,且任何一个函数依赖都不能被删除而不改变闭包(即不丢失信息)。相反,下而的函数依赖集不是最小依赖集。1)P#f{PNAME,COLOR}:第一个函数依赖的右边不是单属性集P#-WEIGHTP#-CITY2){P#,PNAMEJ-COLOR:第一个函
4、数依赖左边的PNAME可以删P#-PNAME除而不改变闭包(即左边是可约的)P#fWEIGHTP#fCITY3)P#-P#:第一个函数可以删除而不改变闭包P#fPNAMEP#fCOLORP#fWEIGHTP#fCITY任何一个函数依赖集至少存在一个最小函数依赖集。假设函数依赖集为S,根据分解规则,可以假定每个函数依赖的右边是单屈性的而不会失去它的一般性(如果右边不是单属性的,则可以利用分解规则把它分解成单属性),接着考察每个函数依赖f左边的每一个屈性A,如果把A从f的左边删除而并不改变闭包,则把A从f的左边
5、删除,然后考察S中剩余的每一个函数依赖f,如果把f删除而不改变闭包,则把f从S中删除,最后所得的集合S是和原来的函数依赖集S等价的最小函数依赖集。例:假设给定关系变量R、A、B、C、D是R的属性集,R满足函数依赖:A-BCB-CA-BAB-CAC-D现在计算该函数依赖的最小函数依赖集。1)把所有的函数依赖写成右边是单属性的函数依赖:A-BA-CB-CA—BAB->CAC-D很显然,函数依赖A->B出现了两次,可以删除其中的一次。2)可以把C从函数依赖AC-D的左边删除,因为A-C,根据增广律可以得岀A-AC
6、,给定AC-D,根据传递律可以得出A->Do所以C在函数依赖AC-D的左边是冗余的。3)接着发现可以删除函数依赖AB-C,因为A-C,根据增广律可得AB->CB,又根据分解规则可以导出AB-C。4)函数依赖A-C由函数依赖A-B和B-C蕴涵,所以它可以删除。最后剩下下列函数依赖:A-BB-CA-D该集合是不可约。一个函数依赖集I是不可约的,且等价于某个函数依赖集S,则说I是S的最小等价依赖集。这样,如果要实现一个函数依赖集S,系统只要实现它的一个最小依赖集就足够了(重复一次:要计算最小依赖集I不必计算闭包S
7、+)。应该清楚的是给定函数依赖集的最小依赖集并不一定是唯一的。
此文档下载收益归作者所有