📜  DBMS中的功能依赖项类型

📅  最后修改于: 2021-08-25 16:54:07             🧑  作者: Mango

先决条件:功能依赖性和属性关闭

功能依赖性是一种约束,它指定两组属性之间的关系,其中一组可以准确确定其他一组的值。它表示为X→Y ,其中X是能够确定Y值的一组属性。在箭头左侧设置的属性X称为行列式,而在右侧设置的属性Y称为受抚养人。功能依赖关系用于数学表达数据库实体之间的关系,对于理解关系数据库系统中的高级概念以及理解诸如Gate之类的竞争性考试中的问题非常重要。

例子:

roll_no name dept_name dept_building
42 abc CO A4
43 pqr IT A3the 
44 xyz CO A4
45  xyz IT A3
46 mno EC B2
47 jkl ME B2

从上表中,我们可以得出一些有效的功能依赖关系:

  • roll_no→{name,dept_name,dept_building},→在这里,roll_no可以确定字段name,dept_name和dept_building的值,因此是有效的功能依赖性
  • roll_no→dept_name,因为roll_no可以确定{name,dept_name,dept_building}的整个集合,所以它也可以确定其子集dept_name。
  • dept_name→dept_building,Dept_name可以准确识别dept_building,因为具有不同dept_name的部门也将具有不同的dept_building
  • 更有效的功能依赖性:roll_no→名称,{roll_no,name}⇢{dept_name,dept_building}等。

以下是一些无效的功能依赖项:

  • 名称→dept_name具有相同名称的学生可以具有不同的dept_name,因此这不是有效的功能依赖性。
  • dept_building→dept_name同一建筑物中可以有多个部门,例如,在上表中,部门ME和EC在同一建筑物B2中,因此dept_building→dept_name是无效的功能依赖关系。
  • 更多无效的功能依赖性:名称→roll_no,{name,dept_name}→roll_no,dept_building→roll_no等。

阿姆斯特朗的功能依赖公理/属性:

  1. 自反性:如果Y是X的子集,则X→Y根据自反性规则成立
    例如,{roll_no,名称}→名称有效。
  2. 增强:如果X→Y是有效的依存关系,则XZ→YZ根据增强规则也是有效的。
    例如,如果{roll_no,name}→dept_building有效,因此{roll_no,name,dept_name}→{dept_building,dept_name}也有效。→
  3. 传递性:如果X→Y和Y→Z都是有效的依存关系,则X→Z的传递性规则也有效。
    例如,roll_no→dept_name和dept_name→dept_building,则roll_no→dept_building也有效。

DBMS中的功能依赖项类型:

  1. 琐碎的功能依赖
  2. 非竞争性功能依赖
  3. 多值功能依赖
  4. 传递功能依赖

1.琐碎的功能依赖

琐碎的功能性依存关系中,依存关系始终是行列式的子集。
例如,如果X→Y并且Y是X的子集,则称为琐碎函数依赖

例如,

roll_no name age
42 abc 17
43 pqr 18
44 xyz 18

这里, {roll_no,name}→name是一个琐碎的功能依赖项,因为从属名称是行列式集{roll_no,name}的子集
类似地, roll_no→roll_no也是琐碎的功能依赖项的一个示例。

2.非平凡的功能依赖

非平凡函数依赖中,从属严格不是行列式的子集。
即,如果X→Y并且Y不是X的子集,则称为非平凡函数依赖。

例如,

roll_no name age
42 abc 17
43 pqr 18
44 xyz 18

在这里, roll_no→name是一个非平凡的函数依赖项,因为从属名称不是行列式roll_no的子集
同样, {roll_no,name}→age也是一个不重要的函数依赖项,因为age不是{roll_no,name}的子集

3.多值功能依赖

多值功能依赖项中,依赖集的实体彼此不依赖
即,如果a→{b,c}并且b和c之间不存在功能依赖关系,则称为多值功能依赖关系。

例如,

roll_no name agethe 
42 abc 17the 
43 pqr 18
44 xyz 18
45 abc 19

在这里, roll_no→{name,age}是一个多值函数依赖项,因为依赖项的名称年龄不依赖(即name→ageage→name不存在! )

4.传递功能依赖

在传递函数依赖性中,依赖性间接取决于行列式。
即如果a→bb→c ,则根据传递性公理, a→c 。这是一个传递函数的依赖关系

例如,

enrol_no name dept building_no
42 abc CO 4
43 pqr EC 2
44 xyz IT 1
45 abc EC 2

在这里, enrol_no→部门部门→building_no
因此,根据传递性公理, enrol_no→building_no是有效的函数依赖项。这是一种间接功能依赖性,因此称为传递功能依赖性。