关系数据库理论第二部分:深入理解函数依赖与多值依赖

函数依赖与最小闭包

在关系数据库设计中,理解函数依赖非常重要,因为它能帮助我们识别并消除数据冗余,确保数据一致性。函数依赖(FD)指的是在一个关系中,属性集A的值完全决定了另一个属性集B的值,通常表示为A → B。这意味着,如果关系中的任何元组的A部分相等,它们的B部分也必须相等。

最小闭包是指通过已知的函数依赖集合推导出所有可能的函数依赖的过程。这个过程基于Armstrong公理系统,即自反律增广律传递律,可以帮助我们找出所有隐含的函数依赖,对规范化数据库设计至关重要,并帮助确定候选码,即唯一标识关系中每行的最小属性集。

候选码求解方法

候选码是关系中唯一标识每行的最小属性集,求解候选码的步骤包括:

  1. 识别单一值依赖:识别可以独立确定其他属性的属性。例如在关系模式TEACHING(C,T,B)中,如果存在函数依赖C → TC → B,则C可作为候选码的组成部分。

  2. 寻找最小闭包:利用Armstrong公理计算每个属性集的最小闭包。一个属性集的闭包是通过该属性集和所有函数依赖确定的所有属性集合。

  3. 确定候选码:若属性集的闭包包含所有属性,则该属性集是候选码。在TEACHING示例中,(C,T,B)是候选码,因为没有更小的属性集能确定整个关系。

多值依赖的理解

多值依赖(MVD)描述的是一个属性值的变化如何独立影响另一组属性的值。它通常表示为X →→ Y,意指在关系中,对每个X值,有一个独立的Y值集合,与任何不在XY中的属性值无关。

函数依赖注重一对一关系,而多值依赖则允许一个属性值对应多个值。多值依赖有效性取决于属性集范围,可能只在特定属性子集中成立。

第四范式(4NF)

第四范式是数据库规范化的高级阶段,消除多值依赖的影响。一个关系模式满足4NF需具备:若存在非平凡的多值依赖X →→ Y(且Y不在X中),且X包含码,则该关系模式满足4NF。