最简单的数据库入门教程—04—01—关系模型与规范化理论
关系模型与规范化理论
目录
关系模式
简介
- 对关系的描述
- 静态的、稳定的
形式化定义
R(U, D, DOM, F)
- R:关系名
- U:组成该关系的属性名集合
- D:属性组U中属性所来自的域
- DOM:属性向域的映象集合
- F:属性间的数据依赖关系集合
域(D)
- 一组具有相同数据类型的值的集合
- 例如:Float、String、Enum
属性(U)
- 用于标定同一类关系不同位置上的分量
- 例如:学生关系中的 "学号"属性,有"张三"在"学号"上的分量为23333
超码
R<U,F>中,K$\subseteq \(U,K\)\stackrel{P}{\longrightarrow}$U
候选码
- 定义:值能唯一地标识一个元组的属性组
- R<U,F>中,K$\subseteq \(U,K\)\stackrel{F}{\longrightarrow}$U
- 特点:候选码的任意一个真子集都不是候选码。
- 分类:
- 全码:所有属性组是这个关系模式的候选码
- 主码:选定其中一个候选码作为关系的标识
- 主属性:候选码的诸属性
外码
在此关系中不为码,但在其他关系中为码
属性向域的映象集合(DOM)
- 属性与域的映射关系
- 例如:"学号" \(\rightarrow\) INT
属性间的数据依赖关系集合(F)
函数依赖关系(FD)
定义
对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等
表述:
- X函数确定Y
- Y函数依赖于X
- 记作X→Y
分类
平凡函数依赖与非平凡函数依赖(X与Y)
- 平凡函数依赖:X→Y,且Y\(\subseteq\)X
- 例:(A, B)→A
- 非平凡函数依赖:X→Y,且Y\(\nsubseteq\)X
- 例:(A, B)→C
完全函数依赖与部分函数依赖(X与Y)
- 完全函数依赖:X→Y,\(\forall X' \subset X\),\(X'\nrightarrow Y\)
- 记为X\(\stackrel{F}{\longrightarrow}\)Y
- 部分函数依赖:X→Y,\(\exists X' \subset X\),\(X'\rightarrow Y\)
- 记为X$\stackrel{P}{\longrightarrow} $Y
传递函数依赖(X与Z)
- 定义:X→Y,Y\(\nrightarrow\)X,Y→Z
- 记为X$\stackrel{T}{\longrightarrow} $Z
多值依赖关系(MVD)
定义
X、Y和Z是U的子集,并且Z=U-X-Y,关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
分类
平凡多值依赖
\(Z = \phi\)
非平凡的多值依赖
\(Z \neq \phi\)
嵌入型多值依赖
在R(U)上有X→→Y在W (W\(\subset\)U) 上成立
性质
- 对称性:X→→Y,则:
- X→→Z,则:
- X→→Y\(\cup\)Z
- X→→Y\(\cap\)Z
- X→→Z-Y,X→→Y-Z
- 传递性:X→→Y,Y→→Z, 则X→→Z-Y
- X→Y,则X→→Y
连接依赖关系
关系
概述
- 关系模式在某一时刻的状态或内容
- 动态的、随时间不断变化的
- 关系模式和关系往往统称为关系
- 通过上下文加以区别
定义
- 定义:对于一组域D1,D2,…,Dn,D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系
- 表示:二维表
- 行为元组
- 列对应于域
- 特点:
- 行列顺序无所谓
种类
基本关系(基本表或基表)
实际存在的表,是实际存储数据的逻辑表示
查询表
查询结果对应的表
视图表
由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
目(度)
- 定义:关系中的n值
- 特殊关系:
- 单元关系 / 一元关系:n=1
- 二元关系:n=2
笛卡儿积
- 定义:对于n个集合D1,D2,…,Dn,其笛卡儿积为第i个对象属于Di的所有可能的有序对
- 记为:D1×D2×…×Dn
元组
- 笛卡儿积结果中的一个有序对,即笛卡儿积元素
- 别称:n元组
分量
笛卡儿积元素中的一个位置上的值
基数
- 定义:集合中元素的个数
- 特殊的,笛卡儿积结果的基数为各集合基数的乘积
规范化理论
- 用途:规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。
- 用法:一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化
- 范式关系:1NF$\supset\(2NF\)\supset\(3NF\)\supset\(BCNF\)\supset\(4NF\)\supset$5NF
异常
数据冗余
- 浪费大量的存储空间
更新异常
- 数据有冗余,更新数据时,维护数据完整性代价大。
插入异常
- 该插的数据插不进去
删除异常
- 不该删除的数据不得不删
分类
1NF
- 所有属性不可分
2NF
- 满足1NF,且每一个非主属性都完全函数依赖于任何一个候选码
3NF
- 满足2NF,且每一个非主属性都不传递函数依赖于任何一个候选码
BCNF
- 满足1NF,且 \(\forall X\rightarrow Y, 主属性\subset X\)
4NF
- 满足1NF,且 \(\forall X\rightarrow \rightarrow Y, 主属性\subset X\)
5NF
- (未完待续....)
A geek and poetry lover.