数据库系统概念-关系数据库设计

教材:数据库系统概念第八章

概念梳理

函数依赖的定义

 

数据库系统概念-关系数据库设计_第1张图片

超码的定义(K的任意子集都无法决定R)

平凡函数依赖

闭包

数据库系统概念-关系数据库设计_第2张图片

BCNF范式条件

数据库系统概念-关系数据库设计_第3张图片

非BCNF向BCNF转化(这两个步骤分解出来的关系可能还不是BCNF范式,继续分解, 直到结束)

 

BCNF分解至此,仍有缺点,缺点是无法保持依赖,详见P187例子,考虑比BCNF弱的范式,允许保持依赖

第三范式

注意,只满足条件三是ok的,且条件三的结果属于任意一个候选码即可,记住候选码的定义:任何真子集都不是超码的超码

在此,保持依赖。

数据库系统概念-关系数据库设计_第4张图片

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

构建闭包

使用以下6个公理构建F+

数据库系统概念-关系数据库设计_第5张图片

属性集闭包的三种用途

数据库系统概念-关系数据库设计_第6张图片

总结(by TSH)
数据库系统概念-关系数据库设计_第7张图片

正则覆盖

先明白无关属性的定义,举例(by TSH)

 

理解:也即,所有依赖的左边不相等和Fc中不含有多余属性的依赖。

数据库系统概念-关系数据库设计_第8张图片

正则覆盖举个栗子

初始:A->BC, B->C, A->B, AB->C

1. 去左边重复:A->BC,B->C,AB->C

2. 去左多余: A->BC,B->C,A->C

3. 去右多余:A->B,B->C,A->C

4. 传递律:A->B,B->C

 

无损分解

数据库系统概念-关系数据库设计_第9张图片

判定无损分解

数据库系统概念-关系数据库设计_第10张图片

 

判定保持依赖

数据库系统概念-关系数据库设计_第11张图片

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

重点,分解算法

BCNF分解

BCNF的判定方法(之前是函数依赖判定,现在是属性闭包),注意,这是分解前:

一定要区分,分解后的检查方法:

数据库系统概念-关系数据库设计_第12张图片

总结by TSH:

数据库系统概念-关系数据库设计_第13张图片

3NF分解:

数据库系统概念-关系数据库设计_第14张图片

简而言之,a->b, 要么a是超码,要么b是某个候选键的属性。

数据库系统概念-关系数据库设计_第15张图片

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

多值依赖

(3NF:不允许有非主键列A依赖非主键列B,B依赖于主键列A,即不准依赖再依赖)

(BCNF: 不允许非主键列依赖于非超码)

4NF的引入

名词区分:函数依赖有时称为相等产生依赖,而多值依赖称为元组产生依赖。

多值依赖的判定

其中,平凡的多值依赖:

多值依赖的结论:

4NF的条件

4NF的分解:类似于BCNF

 

 

 

 

你可能感兴趣的:(database)