当前位置: 首页 > 图文教程 > 数据库 > MYSQL > MySQL:最小函数依赖集知多少

MYSQL
完全优化mysql数据库性能的八个方案
Eclipse+JBoss+MySQL开发环境的设置
如何使用JSP访问MySQL数据库
无法远程登入MySQL的几种解决办法
MySQL连接池连接JSP
ASP.NET和MySQL,强势组合
JSP(win2k server)JSP连接MYSQL数据库
一个Mysql自动备份脚本
你的MySQL安全了吗?加铸23道安全
MySQL字符串函数
MySQL:Hibernate结合MYSQL数据库简单教程
Mysql:学会设置五大类MySQL参数
MySql:Mysql优化方案之索引的使用
MySQL:小编对MySql中创建视图详细讲解
MySQL:MySQL中的分区概述
MySQL:MySQL使用触发程序
MySQL:小编浅谈MySQL中的CREATE VIEW语法
MySQL:MySQL之动态表特征
MySQL:MySQL对标准SQL的扩展
MysQL:浅谈MysQL中HANDLER语法介绍及使用

MYSQL 中的 MySQL:最小函数依赖集知多少


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 37 ::
收藏到网摘: n/a

假设S 1S 2是两个函数依赖集,如果所有为S 1所蕴涵的函数依赖都为S 2所蕴涵,—即S 1+S 2+的子集,则S 2S 1的覆盖,D B M S只要实现了S 2中的函数依赖,就自动实现S 1中的函数依赖。

如果S 2S 1的覆盖,同时S 1S 2的覆盖—则S 1S 2等价,即S 1+=S 2+。很显然,如果S 1S 2等价,则D B M S只要实现S 1中的函数依赖,就自动实现S 2中的函数依赖,反之亦然。

当且仅当函数依赖集满足以下条件时,该函数依赖集为最小函数依赖集:

1) 每个函数依赖的右边(应变量)只含有一个属性(即它是单元素集合)。

2) 每个函数依赖的左边(自变量)是不可约的—删除自变量的任何一个属性都将改变

闭包S+(即会使S转变为一个不等价于原来的S的集合)。这种函数依赖被称为左部不可

约的函数依赖。

3) 删除S中任何一个函数依赖都将改变它的闭包S+,即使S转变为一个不等价于原来的S的集合。

关于第2点和第3点,在这里要指出的是,为了知道如果删除某些元素是否会改变闭包,

不必要清楚地知道闭包的内容。例如:观察大家熟悉的零件关系变量P,有下列函数依赖:

P #→P N A M E

P #→C O L O R

P #→W E I G H T

P #→C I T Y

显而易见,该函数依赖集是最小依赖集:每个函数依赖中右边只含有一个属性,同样,

左边也是不可约的,且任何一个函数依赖都不能被删除而不改变闭包(即不丢失信息)。相反,下面的函数依赖集不是最小依赖集。

1 ) P #→{ P N A M ECOLOR} :第一个函数依赖的右边不是单属性集

P #→W E I G H T

P #→C I T Y

2 ) { P #,P N A M E }COLOR :第一个函数依赖左边的P N A M E可以删

P #→PNAME 除 而 不改变闭包(即左边是可约的)

P #→W E I G H T

P #→C I T Y

3 ) P #→P# : 第 一个函数可以删除而不改变闭包

P #→P N A M E

P #→C O L O R

P #→W E I G H T

P #→C I T Y

任何一个函数依赖集至少存在一个最小函数依赖集。假设函数依赖集为S,根据分解规则,

可以假定每个函数依赖的右边是单属性的而不会失去它的一般性(如果右边不是单属性的,则可以利用分解规则把它分解成单属性),接着考察每个函数依赖f左边的每一个属性A,如果把Af的左边删除而并不改变闭包,则把Af的左边删除,然后考察S中剩余的每一个函数依赖f,如果把f删除而不改变闭包,则把fS中删除,最后所得的集合S是和原来的函数依赖集S等价的最小函数依赖集。

例:假设给定关系变量RABCDR的属性集,R满足函数依赖

A→B C

B→C

A→B

A B→C

A C→D

现在计算该函数依赖的最小函数依赖集。

1) 把所有的函数依赖写成右边是单属性的函数依赖:

A→B

A→C

B→C

A→B

A B→C

A C→D

很显然,函数依赖AB出现了两次,可以删除其中的一次。

2) 可以把C从函数依赖A CD的左边删除,因为AC,根据增广律可以得出AA C,给

A CD,根据传递律可以得出AD。所以C在函数依赖A CD的左边是冗余的。

3) 接着发现可以删除函数依赖A BC,因为AC,根据增广律可得A BC B,又根据分

解规则可以导出A BC

4) 函数依赖AC由函数依赖ABBC蕴涵,所以它可以删除。最后剩下下列函数依

赖:

A→B

B→C

A→D

该集合是不可约。

一个函数依赖集I是不可约的,且等价于某个函数依赖集S,则说IS的最小等价依赖集。

这样,如果要实现一个函数依赖集S,系统只要实现它的一个最小依赖集就足够了(重复一次:要计算最小依赖集I不必计算闭包S+)。应该清楚的是给定函数依赖集的最小依赖集并不一定是唯一的。