函数依赖

2025年2月12日 | 阅读 4 分钟
DBMS Functional Dependency

什么是函数依赖?

关系(由 X 表示)中 S 和 T 之间的函数依赖将通过符号 ->(箭头符号)来表示。

因此,在这种情况下,将使用箭头符号来表示属性之间的函数关系

S -> T

在此示例中,此箭头的左侧代表一个决定因素。此箭头的右侧是依赖项。T 是来自与主键相关的表中的一个非键依赖属性,而 S 将是主键属性。它演示了非键属性 T 如何依赖于主键属性 S。换句话说,如果列 P 属性唯一标识同一表中的列 T 属性,则称 T 对 S 的函数依赖为 S → T。

例如

假设我们有一个包含属性的员工表:Emp_Id, Emp_Name, Emp_Address。

在这里,Emp_Id 属性可以唯一标识员工表的 Emp_Name 属性,因为如果我们知道 Emp_Id,我们就能知道与之关联的员工姓名。

函数依赖可以写成

我们可以说 Emp_Name 函数依赖于 Emp_Id。

函数依赖的类型

DBMS Functional Dependency

1. 琐碎函数依赖

  • 如果 B 是 A 的子集,则 A → B 具有琐碎函数依赖。
  • 以下依赖项也像 A → A、B → B 一样是琐碎的。

示例

2. 非琐碎函数依赖

  • 如果 B 不是 A 的子集,则 A → B 具有非琐碎函数依赖。
  • 当 A 与 B 的交集为 NULL 时,则 A → B 称为完全非琐碎。

示例

函数依赖的阿姆斯特朗公理

为了考虑 FD,William Armstrong 在 1974 年创建了阿姆斯特朗公理属性。该特性提供了仅在满足以下条件时适用的规则:

1. 增强

阿姆斯特朗公理的这条规则指出,如果 S -> T,那么我们可以说 SR -> TR。

2. 自反性

阿姆斯特朗公理的这条规则指出,如果 S -> T,那么 T 是 S 的子集。

3. 传递性

阿姆斯特朗公理的这条规则指出,如果 S -> T 且 T -> U,那么我们可以说 S -> U。

DBMS 中函数依赖的优点

以下是 DBMS 中 FD 的主要优点:

1. 数据准确性

在数据库中,函数依赖有助于维护数据完整性。数据库管理系统 (DBMS) 可以通过设置规定属性之间关系的规则来强制执行限制,以阻止不一致或不准确的数据被输入数据库。

2. 规范化

规范化数据库中使用的技术是函数依赖。数据库设计人员可以通过识别和实现函数关系,将大型表分解为更小、更易于管理的表,从而减少数据重复和异常。

3. 有效存储

通过使用函数依赖来规范化数据库,数据存储可能变得更有效。较小的、规范化的表需要更少的存储空间,这对于大型数据库尤其有利。

4. 维护简便性

维护函数关系使数据库更容易。对数据库结构或模式进行的必要修改的影响范围更小,从而降低了生成数据中的错误或不一致的可能性。

关于函数依赖的 MCQs

1. 表的主键和_ _ _ _ _ 属性通常相互函数依赖。

  1. 非键
  2. 单键
  3. 多键

答案:a

解释:表的主键和非键属性通常相互函数依赖。


2. 创建函数依赖的必要方面是 _ _ _ _ _ _。

  1. 独立性
  2. 决定因素
  3. 依赖性

答案:d

解释:创建函数依赖的必要方面是依赖性。


3. 如果___,则 S -> T 具有琐碎函数依赖。

  1. T 是 S 的子集
  2. S 是 T 的子集
  3. S 是 T' 的子集
  4. T 是 S' 的子集

答案:a

解释:如果 T 是 S 的子集,则 S -> T 具有琐碎函数依赖。


4. 有多少种不同类型的函数依赖?

  1. 1
  2. 4
  3. 3
  4. 2

答案:b

解释:在 DBMS 中,函数依赖主要有四种类型:琐碎函数依赖、非琐碎函数依赖、多值函数依赖、传递函数依赖。


5. 当 S 和 T 的交集为 NULL 时,S -> T 是一个 _ _ _ _。

  1. 完全琐碎
  2. 不完全琐碎
  3. 完全非琐碎
  4. 不完全非琐碎

答案:c

解释:在 S 和 T 的交集为 NULL 的情况下,S -> T 是一个完全非琐碎。


下一主题DBMS 推理规则