目录
零.前言
数据库讲解(MySQL版)(超详细)【第一章】-CSDN博客
数据库讲解(MySQL版)(超详细)【第二章】【上】-CSDN博客
数据库讲解---(SQL语句--表的使用)【MySQL版本】-CSDN博客
数据库讲解---(数据查询)【MySQL版本】_mysql中怎么检索学生表中所有学生的信息-CSDN博客
数据库讲解---(SQL语句--练习题讲解)【MySQL版本】-CSDN博客
数据库讲解---(数据更新、视图、数据控制)【MySQL版本】-CSDN博客
一.泛关系模式
把现实问题的所有属性组合成一个关系模式R(U),这个关系模式就称为泛关系模式
例如,“有一个研究生管理系统,包含对象有研究生学号、姓名、学院、项目编号、项目名称、承担任务、导师姓名”,我们可以得到如下的泛关系模式:
但是这个“泛关系模式”效率低下,数据冗余度大,这里我们需要对这个泛关系模式进行改造,对此我们需要使用“关系规范化”的理论
1.1函数依赖【重要】
函数依赖:“对于每个属性有且只有一个确定的属性与之对应,这种关系类似于数学上的单值函数”
例如:“在一个学生关系中,如果我们知道了一个学号,那么就有一个唯一的学生名字与之对应”
此时,我们可以称:“学号函数决定姓名”或者“姓名函数依赖于学号”
图形表示为:“X->Y”,表示Y依赖于X或X决定Y
注意:“函数以来对于关系中的所有实体都必须满足,即使有一个特例,这个函数依赖也是不成立的”
1.2几个基本概念
- “决定因素”:“若X->Y”,则X被称为决定因素
- “互相依赖”:若X->Y,Y->X,则X和Y相互依赖,记作X<->Y
- “若Y不依赖于X,记作X/->Y”
1.3不同类型的函数依赖
- “非平凡函数依赖”:一个函数依赖X->Y如果满足Y不包含于X,则此函数依赖称为非平凡函数依赖,否则叫做平凡函数依赖,例如“(学号,姓名)->姓名”就是一个平凡函数依赖
- “完全函数依赖”:如果X->Y,并且对于X的任何一个真子集Z,都有Z不决定Y,则称Y对X完全函数依赖,记作:
- “部分函数依赖”:如果X->Y,并且存在X的一个真子集Z,有Z->Y成立,则称Y对X部分函数依赖,记作:
- “传递函数依赖”:如果X->Y,Y不决定X,Y->Z,则X->Z,称Z对X传递函数依赖,记作:
1.4码的函数依赖
下面是一些和码有关的基本概念:
- 主属性和非主属性:包含在候选码中的属性叫作主属性,不包含在候选码中的属性叫作非主属性
- 全码:如果码包含多个属性,那么这个属性集合就叫做全码,例如(学号,教室,教师)是一个全码
- 外码:关系R中的属性组X不是R的主码,但X是关系T中的主码,则称X是关系R的一个外码
- 超码:一个包含关键字属性集合也能用函数决定,这种包含主码的属性集合叫作超码
例如:
而“学号、课程号及(学号,课程号)”分别是关系模式学生、课程、学习表的主码,但是:
所以:“(学号,姓名)”、“(学号,学院)”都是超码,因为后面的集合(学号,姓名,学院,性别,班级)都包含了关键字属性“学号”,且可以被“学号”决定,因此是超码
二.范式
2.1简介
对于关系模式作为数据库的模式,性能优劣也是不同的,为了区分关系模式的优劣,为此引入范式来描述关系模式的性能。
对于范式有五种级别:“1NF”、“2NF”、“3NF”、“4NF”、“5NF”
范式的级别越高,约束条件也越来越严格,五种级别之间的联系是:
2.2第一范式(1NF)
设有一个关系R,如果R中的每一个属性A的属性名和属性值都是不可再分的,则称R属于第一范式,记作R∈1NF
例如下面的关系模式就∉1NF,因为属性还可以再分
可以看到“学时数”属性可以继续分解为“讲课”、“实验”两个子属性
再比如下面的关系模式也∉1NF,因为属性值还可以再分
2.3第二范式(2NF)
若R∈1NF,且每一个非主属性都完全函数依赖于码,则R∈2NF
例如,关系R中有以下两个完全函数依赖:
其中,(编号,成员编号)是R的主码
又因为,项目名称完全依赖编号,所以项目名称部分依赖(编号,成员编号),存在一个部分依赖,因此关系R∉2NF
2.4第三范式(3NF)
关系模式R中不存在这样的码X,属性组Y及非主属性组Z,使得X->Y,Y/->X,Y->Z成立,则称R属于3NF
即:“不存在传递函数依赖”
例如:
2.5BCNF(修正的3NF)
BCNF叫作“扩充的第三范式”
定义:“对于关系R,每一个决定因素都含有码,则R∈BCNF”
通俗理解:
- 所有非主属性对码都是完全函数依赖的
- 所有的主属性对每一个不包含它的码也都是完全函数依赖的
- 没有任何属性完全函数依赖于非码的任何一组属性
2.6多值依赖和第四范式(4NF)
多值依赖:“设有关系R(U),且X,Y是U的子集,Z=U-X-Y,多值依赖X->->Y成立,当且仅当R的任意具体关系R,给定一对(X,Z)值,就有一组Y值与之对应,这种对应关系与Z值无关”
多值依赖的性质:
- 若X->->Y,则必有X->->U-X-Y
- 若X->Y,则必有X->->Y,即X->Y是X->->Y的特例
4NF:“对于关系R的每个非平凡的多值依赖X->->Y,X都包含码,则X是第四范式,记作X∈4NF”
2.7第五范式(5NF)
第五范式用的很少,故不再赘述