DBMS 中的函数依赖:是什么、类型和示例
什么是功能依赖?
功能依赖 (FD) 是数据库管理系统 (DBMS) 中确定一个属性与另一个属性的关系的约束。功能依赖性有助于维护数据库中数据的质量。它在找出好的和坏的数据库设计之间的区别方面起着至关重要的作用。
函数依赖用箭头“→”表示。X 对 Y 的函数依赖用 X → Y 表示。让我们通过示例来了解 DBMS 中的函数依赖。
计费示例:
员工编号 | 员工姓名 | 薪水 | 城市 |
---|---|---|---|
1 | 达纳 | 50000 | 旧金山 |
2 | 弗朗西斯 | 38000 | 伦敦 |
3 | 安德鲁 | 25000 | 东京 |
在这个例子中,如果我们知道员工编号的值,我们可以获得员工姓名、城市、薪水等。由此,我们可以说城市、员工姓名和薪水在功能上依赖于员工编号。
关键术语
以下是数据库中功能依赖的一些关键术语:
关键条款 | 描述 |
---|---|
至理名言 | 公理是一组推理规则,用于推断关系数据库上的所有函数依赖关系。 |
分解 | 这条规则表明,如果您的表似乎包含两个由相同主键确定的实体,那么您应该考虑将它们分成两个不同的表。 |
依赖的 | 它显示在 功能依赖图的右侧。 |
行列式 | 它显示在功能依赖图的左侧。 |
工会 | 建议如果两张桌子是分开的,并且 PK 相同,则应考虑将它们放在一起 |
函数依赖规则
以下是数据库中功能依赖性的三个最重要的规则:
- 反身规则 – 如果 X 是一组属性,且 Y 是 X 的子集,则 X 保存 Y 的值。
- 增强规则:当 x -> y 成立,且 c 为属性集时,ac -> bc 也成立。即添加不会改变基本依赖关系的属性。
- 传递性规则:此规则与代数中的传递性规则非常相似,如果 x -> y 成立且 y -> z 成立,则 x -> z 也成立。X -> y 被称为确定 y 的函数。
DBMS 中的功能依赖类型
DBMS 中的功能依赖主要有四种类型。以下是 DBMS 中的功能依赖类型:
- 多值依赖
- 平凡函数依赖
- 非平凡函数依赖
- 传递依赖
DBMS 中的多值依赖关系
多值依赖关系发生在单个表中存在多个独立多值属性的情况下。多值依赖关系是关系中两组属性之间的完全约束。它要求关系中存在某些元组。请考虑以下多值依赖关系示例以了解。
计费示例:
汽车模型 | 五月 | 颜色 |
---|---|---|
H001 | 2017 | 金属的 |
H001 | 2017 | 绿色 |
H005 | 2018 | 金属的 |
H005 | 2018 | Blue |
H010 | 2015 | 金属的 |
H033 | 2012 | 灰色 |
在这个例子中,maf_year 和 color 彼此独立,但依赖于 car_model。在这个例子中,这两列被称为依赖于 car_model 的多值。
这种依赖关系可以表示如下:
汽车型号 -> maf_year
汽车型号->颜色
DBMS 中的简单函数依赖
琐碎依赖关系是一组属性,如果该属性集包含在该属性中,则称其为琐碎的。
因此,如果 Y 是 X 的子集,则 X -> Y 就是一个平凡的函数依赖关系。让我们通过一个平凡的函数依赖关系示例来理解。
例如:
员工 ID | 雇员姓名 |
---|---|
AS555 | 哈利 |
AS811 | 乔治 |
AS999 | 凯文 |
考虑该表有两列 Emp_id 和 Emp_name。
{Emp_id, Emp_name} -> Emp_id 是一个简单的函数依赖关系,因为 Emp_id 是 {Emp_id,Emp_name} 的子集。
DBMS 中的非平凡函数依赖
函数依赖也称为非平凡依赖,当 A->B 成立时发生,其中 B 不是 A 的子集。在关系中,如果属性 B 不是属性 A 的子集,则它被视为非平凡依赖。
公司简介 | CEO | 年龄 |
---|---|---|
Microsoft | 萨蒂亚纳德拉 | 51 |
孙大信桑达 | 46 | |
Apple | 蒂姆·库克 | 57 |
计费示例:
(公司} -> {CEO}(如果我们知道公司,我们就知道 CEO 的名字)
但 CEO 不是 Company 的子集,因此它具有非平凡的函数依赖性。
DBMS 中的传递依赖
传递依赖是一种函数依赖,当“t”由两个函数依赖间接形成时就会发生这种情况。让我们通过以下传递依赖示例来理解。
计费示例:
公司简介 | CEO | 年龄 |
---|---|---|
Microsoft | 萨蒂亚纳德拉 | 51 |
孙大信桑达 | 46 | |
如阿里巴巴 | 马云 | 54 |
{Company} -> {CEO}(如果我们知道公司,我们就知道其 CEO 的名字)
{CEO } -> {Age} 如果我们知道 CEO,我们就知道年龄
因此根据传递依赖规则:
{Company} -> {Age} 应该成立,这是有道理的,因为如果我们知道公司名称,我们就能知道他的年龄。
注意:您需要记住,传递依赖关系只能发生在三个或更多属性的关系中。
什么是规范化?
规范化是一种在数据库中组织数据的方法,它可以帮助您避免数据冗余、插入、更新和删除异常。这是一个根据不同的功能依赖关系和主键分析关系模式的过程。
规范化是关系数据库理论的固有特征。它可能会在数据库中复制相同的数据,从而导致创建额外的表。
函数依赖的优点
- 函数依赖性避免了数据冗余。因此,相同的数据不会在多个位置重复出现。 数据库
- 它可以帮助您维护数据库中数据的质量
- 它可以帮助您定义数据库的含义和约束
- 它可以帮助识别不良设计
- 它可以帮助您找到有关数据库设计的事实
结语
- 函数依赖是指一个属性决定另一个属性 DBMS 系统.
- 公理、分解、依赖、行列式、并集是函数依赖的关键术语
- 函数依赖有四种类型:1)多值依赖 2)平凡依赖 3)非平凡依赖 4)传递依赖
- 多值依赖发生在单个表中有多个独立的多值属性的情况
- 当一组属性包含在该属性中时,就会发生平凡依赖关系,该属性集被称为平凡依赖
- 当 A->B 成立且 B 不是 A 的子集时,就会发生非平凡依赖性
- 传递性是一种函数依赖,当它由两个函数依赖间接形成时就会发生
- 规范化是一种在数据库中组织数据的方法,可帮助您避免数据冗余