范式以及模式分解

第六章 范式以及模式分解

基本概念了解

数据依赖:

数据依赖是一个关系内部属性与属性之间的一种约束关系。 这种约束关系是通过属性间值的相等与否体现出来的数据间相关联系。 它是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。

数据依赖分类:

函数依赖(Functional Dependency,简记为FD)

函数依赖极为普遍地存在于现实生活中。比如描述一个学生的关系,可以有学号(Sno)、姓名(Sname)、 系名(Sdept) 等几个属性。由于一个学号只对应一个学生,一个学生只在一一个系学习。因而当“学号”值确定之后,学生的姓名及所在系的值也就被唯一地确定了。属性间的这种依赖关系类似于数学中的函数y=f(x),自变量x确定之后,相应的函数值y也就唯一地确定 了。

多值依赖(Multivalued Dependency,简记为MVD) 其他

函数依赖:

可分为以下几种类型:

  • 函数依赖

  • 平凡函数依赖与非平凡函数依赖

  • 完全函数依赖与部分函数依赖

  • 传递函数依赖

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

候选码

image-20240519102944129

image-20240519103519119

image-20240519104223893

image-20240519104406452

注意:码也可以指代候选码

范式

1NF

即所有属性都是原子性的不可再分的

2NF

判断一个关系模式是否属于第二范式(2NF)的标准如下:

  1. 函数依赖的定义:列出关系模式中的所有函数依赖。

  2. 候选键的确定:确定关系模式中的所有候选键。

  3. 部分依赖的检查:检查是否存在部分函数依赖,即非主属性对候选键的部分依赖。

第二范式(2NF)的定义

一个关系模式R属于2NF,当且仅当:

  1. 它属于第一范式(1NF),即所有属性值都是原子的。

  2. 它不存在非主属性对候选键的部分依赖。

部分依赖指的是某个非主属性依赖于候选键的一部分,而不是整个候选键。

判断步骤

  1. 识别所有的函数依赖:列出关系模式中的所有函数依赖。

  2. 识别候选键:确定关系模式中的所有候选键。

  3. 检查部分依赖:对于每一个非主属性,检查它是否依赖于候选键的一部分。*(最关键的)*

如果不存在任何非主属性对候选键的部分依赖,那么这个关系模式属于2NF;否则,它不属于2NF。

示例

假设有一个关系模式 R(A, B, C) 及其函数依赖如下:

  1. (A, B) → C

  2. A → B

假设候选键是 (A, B)。

我们检查每个函数依赖:

  1. (A, B) → C:C 是一个非主属性,依赖于整个候选键 (A, B),所以不违反2NF。

  2. A → B:B 是一个非主属性,依赖于候选键的一部分 A,这违反了2NF。

由于存在一个非主属性 B 对候选键 (A, B) 的部分依赖,关系模式 R 不属于2NF。

分解为2NF

为了使关系模式 R 满足2NF,可以将其分解为两个关系模式:

  1. R1(A, B):函数依赖 A → B

  2. R2(A, C):函数依赖 A → C

这样分解后,每个关系模式都满足2NF的要求。

3NF

第三范式(3NF)的定义

一个关系模式R属于3NF,当且仅当:

  1. 它属于第二范式(2NF)。

  2. 对于每一个非平凡的函数依赖 ( X → Y ),要么 ( X ) 是一个超键,要么 ( Y ) 是一个主属性(属于某个候选键的一部分)。

传递依赖指的是一个非主属性依赖于另一个非主属性,而这个非主属性又依赖于候选键。

判断步骤

  1. 识别所有的函数依赖:列出关系模式中的所有函数依赖。

  2. 识别候选键:确定关系模式中的所有候选键。

  3. 检查每个函数依赖:对于每一个非平凡的函数依赖 ( X → Y ),检查 ( X ) 是否是一个超键,或者 ( Y ) 是否是一个主属性。

如果所有的非平凡函数依赖都满足这个条件,那么这个关系模式属于3NF;否则,它不属于3NF。

示例

假设有一个关系模式 R(A, B, C) 及其函数依赖如下:

  1. A → B

  2. B → C

假设候选键是 A。

我们检查每个函数依赖:

  1. A → B:左侧 A 是候选键,满足3NF。

  2. B → C:左侧 B 不是候选键,也不是超键,右侧 C 是非主属性,这不满足3NF。

由于存在一个函数依赖 B → C,其中 B 不是超键且 C 不是主属性,这个关系模式不属于3NF。

分解为3NF

为了使关系模式 R 满足3NF,可以将其分解为两个关系模式:

  1. R1(A, B):函数依赖 A → B

  2. R2(B, C):函数依赖 B → C

这样分解后,每个关系模式都满足3NF的要求。

总结

判断一个关系模式是否属于3NF的标准是:

  1. 它必须满足2NF。

  2. 对于每一个非平凡的函数依赖 ( X → Y ),要么 ( X ) 是一个超键,要么 ( Y ) 是一个主属性。

简而言之就是不存在非主属性对于码的传递函数依赖,即码应该直接决定非主属性,不能间接决定

BCNF

image-20240519105934291

示例

image-20240519110216229

image-20240519110320796

image-20240519110404957

求最小函数依赖集

image-20240519112356868

image-20240519112416477

注意:cg的闭包没有B(写错了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值