数据库的规范化
一、基础概念
实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等。
属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。
元组:表中的一行就是一个元组。
分量:元组的某个属性值。
码:表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主码。
全码:如果一个码包含了所有的属性,这个码就是全码。
主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
非主属性:与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。
外码:一个属性(或属性组),它不是码,但是它别的表的码,它就是外码。
二、函数依赖
1、函数依赖
设X,Y是关系R的两个属性集合,当任何时刻R中的任意两个元组中的X属性值相同时,则它们的Y属性值也相同,则称X函数决定Y,或Y函数依赖于X记作X→Y。
2、平凡函数依赖
当关系中属性集合Y是属性集合X的子集时,存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。
3、非平凡函数依赖
当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。
4、完全函数依赖
设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
5、部分函数依赖
设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
6、传递函数依赖
设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
三、5大范式及其特点
1NF:原子性 字段不可再分,否则就不是关系数据库(所以在正常的关系数据库中是不可能创建出不符合1NF的表的);
2NF:唯一性 一个表只说明一个事物,1NF消除非主属性对码的部分函数依赖之后就是2NF;
3NF:每列都与主键有直接关系,2NF消除非主属性对码的传递函数依赖之后就是3NF;
BCNF:3NF消除主属性对码的部分函数依赖和传递函数依赖之后就是BCNF(换句话说就是BCNF范式既检查非主属性,又检查主属性,而3NF只检查非主属性);
4NF:限制关系模式的属性间不允许有非平凡且非函数依赖的多值依赖(只考虑函数依赖的话,最高到BCNF,如果考虑到多值依赖最高到4NF)。
关于4NF还是没搞清楚。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。