数据依赖公理:
首先看定义:如果F+ =G+ ,就说函数依赖集F覆盖G或F与G等价。
由此我们可以推到出来两个性质:
我们判断F和G等价的要求是:
我们证明等价的更简单的方案是验证其中一个关系的每一个函数都在另一个关系的闭包中。
我们来看一个例题:
A在G中的闭包是ABC,而在F中存在A->B,所以A->B属于G的闭包。
B在G中的闭包是BC,而在F中存在B->C,所以B->C属于G的闭包。
所以F属于G的闭包,同理,G属于F的闭包。
整体解题过程如下:
最小依赖集:首先来看定义
- F中每个函数依赖的右部都是单属性。
- 对于F的任何函数依赖X->A,F-{X->A}与F都不等价,(函数依赖缺一不可)。
- F中的每个函数依赖的左部没有多余依赖。
我们直接来看题:
根据我们的第一个判断条件,可以直接将这个给Pass掉,因为这三个函数依赖不满足右部都是单属性。
很明显,通过B->C可推理出AB->C,所以AB->C是多余的。所以不符合第三个判断条件。
这个是最小函数依赖集。
当然,每个函数依赖集均与它的最小函数依赖集等价。
那么我们要如何求最小函数依赖集呢?
我们有三步走战略:
我们直接来看实例:
关系模式的分解:
对于存在数据冗余,插入异常,删除异常的关系模式,可以通过对关系模式的分解来解决问题。
让我们先看定义:
关系模式分解后会带来两个问题:
1,查询时的连接操作是否会丢失某些信息或多出某些信息。这引出了无损连接的概念。
2,分解后的关系模式是否保持了原来的函数依赖。这是保持函数依赖的问题。
显然,一个关系可以有很多种分解方法,我们需要判断分解的好与坏。
我们给出一个例子:






