当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server:SQLServer中最小函数依赖集

MSSQL
mssql server 存储过程里,bulk insert table from ''路径+文件'',路径固定,文件名不固定的实现方法
请问在mssql“SQL事件探查器”里表格的标题,如CPU,Read,Write,Duration,SPID.........的解释
mssql server .ldf和.mdf的文件附加数据库的sql语句
[js]javascript与剪贴板交互
mssql中得到当天数据的语句
在SQL中使用convert函数进行日期的查询的代码
sql server中datetime字段去除时间的语句
sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句
推荐SQL Server 重新恢复自动编号列的序号的sql代码
清空MSSQL日志 与set recovery simple
mssql2005注入方法小结
[原创]比较详细的完美解决安装sql2000时出现以前的某个程序安装已在安装计算机上创建挂起的文件操作。
sql语句中如何将datetime格式的日期转换为yy-mm-dd格式
重装MS SQL Server 2000前必须彻底删除原安装文件的方法
SQL Server 不删除信息重新恢复自动编号列的序号的方法
MSSQL差异备份取系统权限的相关软件下载
解决MSSQL2005远程连接sql2000非默认端口数据库的问题
SQL命令大全-中英文对照
用SQL语句实现随机查询数据并不显示错误数据的方法
sql server不存在 sql server拒绝访问

MSSQL 中的 SQL Server:SQLServer中最小函数依赖集


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

今天小编要和大家分享的是SQLServer中的最小函数依赖集,假设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满足函数依赖:

AB C

BC

AB

A BC

A CD

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

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

AB

AC

BC

AB

A BC

A CD

很显然,函数依赖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蕴涵,所以它可以删除。最后剩下下列函数依

赖:

AB

BC

AD

该集合是不可约。

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

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