关系数据模式的规范化

函数依赖以及关系的范式

关系模式的简化表示法

关系模式的完整表示是一个五元组:
R〈U,D,Dom,F〉
其中:R为关系名;U为关系的属性集合;D为属性集U中属性的数据域;Dom为属性到域的映射;F为属性集U的数据依赖集。
关系模式可以用三元组来为:
R〈U,F〉

函数依赖的概念

设R〈U〉是属性集U上的关系模式,X、Y是U的子集。若对于R〈U〉的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而Y上的属性值不等,则称X函数确定Y函数,或Y函数依赖于X函数,记作X→Y。
可以把X集合理解为主码

例如,对于教学关系模式:教学〈U,F〉:
U={学号,姓名,年龄,性别,系名,系主任,课程名,成绩};
F={学号→姓名,学号→年龄,学号→性别,学号→系名,系名→系主任,(学号,课程名)→成绩}.

  1. X→Y,但Y ↛ \nrightarrow X,则称X→Y是非平凡的函数依赖。若不特别声明,总是讨论非平凡的函数依赖。
  2. X→Y,但Y ⊆ \subseteq X,则称X→Y是平凡的函数依赖。
  3. 若X→Y,则X叫做决定因素(Determinant),Y叫做依赖因素(Dependent)。
  4. 若X→Y,Y→X,则记作X↔Y。
  5. 若Y不函数依赖于X,则记作X ↛ \nrightarrow Y。

在R〈U〉中,如果X→Y,并且对于X的任何一个真子集X’,都有X’ ↛ \nrightarrow Y,则称Y对X完全函数依赖,记作:X → \rightarrow FY;
若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作: X → \rightarrow PY。
例如,在教学关系模式:(学号,课程名)→成绩,(学号,课程名)→姓名

在R〈U〉中,如果X→Y,Y→Z,则称Z对X传递函数依赖。传递函数依赖记作X → \rightarrow 传递Z。
例如,在教学模式中,因为:学号→系名,系名→系主任;所以:学号 → \rightarrow 传递系主任。

范式的概念

范式(Normal Form)是指规范化的关系模式。由满足最基本规范化的关系模式叫第一范式,第一范式的关系模式再满足另外一些约束条件就产生了第二范式、第三范式、BC范式、第四范式、第五范式,分别记为1NF,2NF,3NF,BCNF,4NF,5NF。
通常数据库的设计达3NF即可。

在这里插入图片描述

第一范式

如果关系模式R的属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式,
结论:所有的关系模式均属于第一范式。

第二范式

若关系模式R属于第一范式,且每一个非主属性完全依赖于码,则R属于第二范式

教学中:
属性集={学号,姓名,年龄,系名,系主任,课程名,成绩}。
函数依赖集={学号→姓名,学号→年龄,学号→性别,学号→系名,系名→系主任,(学号,课程名)→成绩}。
码=(学号,课程名).。
非主属性=(姓名,年龄,系名,系主任,成绩)。
非主属性对码的函数依赖: {(学号,课程名) → \rightarrow P姓名,(学号,课程名) → \rightarrow P年龄,(学号,课程号) → \rightarrow P性别 , (学号,课程名) → \rightarrow P系名,(学号,课程名) → \rightarrow P系主任;(学号,课程名) → \rightarrow F成绩}。
显然,非主属性中只有成绩完全依赖于码,即教学不属于第二范式。

第三范式

若关系模式R属于第二范式,且不存在非主属性对码的传递函数依赖,则R属于第三范式。
学生_系关系,由于存在:学号→系名,系名→系主任。
则: 学号 → \rightarrow 传递系主任。所以学生_系不属于第三范式。

学生(学号,姓名,年龄,性别,系名) ,(系名,系主任) 属于第三范式

BC范式

设关系模式R属于第一范式,若对于R的每一个非平凡函数依赖X→Y,X都是候选码,则R属于BC范式。

无损连接性

设关系模式R,如果把它分解为两个(或多个)子模式R1和R2,相应一个R关系中的数据就要被分成R1 、R2两个(或多个)子表。假如将这些子表自然连接,得到的结果与原来关系中的数据一致,信息并没有丢失,则称该分解具有无损连接性,否则,称该分解不具有无损连接性。

例题

例:将如下关系转化为3NF、且既具有无损连接性又能保持函数依赖的分解
学生信息表(学号,姓名,年龄,性别,院系名,教学楼地址,课程名,成绩)

学生表学号,姓名,年龄,性别,院系名)
成绩表学号,课程名,成绩)
院系表院系名,教学楼地址)

由于水平有限可能存在错误,如发现请指出

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值