技术文章和资源

技术文章(时间排序)

热门类别

Python PHP MySQL JDBC Linux

DBMS 中的函数依赖关系

dbmsdatabasemysql

什么是函数依赖关系

函数依赖关系 DBMS,顾名思义,是相互依赖的表的属性之间的关系。它由 E. F. Codd 引入,有助于防止数据冗余并了解不良设计。

为了彻底理解这个概念,让我们假设 P 是具有属性 AB 的关系。函数依赖关系用 ->(箭头符号)表示

然后,以下将用箭头符号表示属性之间的函数依赖关系 −

A -> B

以上建议如下:

示例

以下是一个可以更容易理解函数依赖关系的示例 -

我们有一个 <Department> 表,其中包含两个属性 - DeptId DeptName

DeptId = Department IDDeptName = Department Name

The DeptId is our primary key. Here, DeptId uniquely identifies the DeptName attribute. This is because if you want to know the department name, then at first you need to have the DeptId.

DeptIdDeptName
001Finance
002Marketing
003HR

因此,上述DeptId DeptName 之间的函数依赖关系可以确定为DeptId 在函数上依赖于DeptName

DeptId -> DeptName

函数依赖的类型

函数依赖有三种形式 −

  • 简单函数依赖
  • 非简单函数依赖
  • 完全非简单函数依赖

让我们从简单函数依赖开始 −

简单函数依赖

当 B 是 A 的子集时,就会发生这种情况 −

A ->B

Example

我们正在考虑具有两个属性的同一张 <Department> 表,以了解简单依赖的概念。

以下是一个简单的函数依赖,因为 DeptId DeptId DeptName 的子集>

{ DeptId,  DeptName } -> Dept Id

非平凡函数依赖

当 B 不是 A 的子集时,会发生这种情况 -

A ->B

Example

DeptId ->  DeptName

由于 DeptName 不是 DeptId 的子集,因此上述情况属于非平凡函数依赖。

完全非平凡函数依赖

当 A 交集 B 为空时发生这种情况 -

A ->B

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

阿姆斯特朗公理属性由威廉·阿姆斯特朗于 1974 年提出,用于推理函数依赖性。

该属性表明,如果满足以下条件,则规则成立:

  • 传递性如果 A->B 且 B->C,则 A->C,即传递关系。
  • 自反性如果 B 是 A 的子集,则 A->B。
  • 增强最后一条规则表明:如果 A->B,则 AC->BC


相关文章