实验0关系规范化设计理论和方法Word格式.docx
- 文档编号:6653385
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:18
- 大小:170.15KB
实验0关系规范化设计理论和方法Word格式.docx
《实验0关系规范化设计理论和方法Word格式.docx》由会员分享,可在线阅读,更多相关《实验0关系规范化设计理论和方法Word格式.docx(18页珍藏版)》请在冰点文库上搜索。
定义:
如果关系模式R所有的属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式,简称1NF,记作R∈1NF。
第一范式(FirstNormalForm)是最基本的规范化形式,即关系中每个属性都是不可再分的简单项。
第二范式
如果关系模式R∈1NF,R(U,F)中的所有非主属性都完全函数依赖于任意一个候选关键字,则称关系R是属于第二范式(SecondNormalForm),简称2NF,记作R∈2NF。
从定义可知,满足第二范式的关系模式R中,不可能有某非主属性对某候选关键字存在部分函数依赖。
第三范式
定义:
如果关系模式R∈2NF,R(U,F)中所有非主属性对任何候选关键字都不存在传递函数依赖,则称R是属于第三范式(ThirdNormalForm),简称3NF,记作R∈3NF。
3NF只限制了非主属性对码的依赖关系,而没有限制主属性对码的依赖关系。
如果发生了这种依赖,仍有可能存在数据冗余、插入异常、删除异常和修改异常。
这时,则需对3NF进一步规范化,消除主属性对码的依赖关系,向更高一级的范式BCNF转换。
BC范式
如果关系模式R∈1NF,且在所有的函数依赖X→Y(Y不包含于X)中,决定因素X都包含了R的一个候选码,则称R属于BC范式(Boyce-CoddNormalForm),记作R∈BCNF。
由BCNF的定义可以得到以下结论,一个满足BCNF的关系模式有:
(1)所有非主属性对每一个候选码都是完全函数依赖。
(2)所有的主属性对每一个不包含它的候选码都是完全函数依赖。
(3)没有任何一组属性完全函数依赖于非码。
二.关系规范化方法应用举例
某机械厂有多个车间;
每个车间有多名工人;
每个车间生产多种产品和零件;
一种产品由多个零件组成;
产品和零件均存入仓库中,该厂有多个仓库。
以下是该机械厂的详细情况表格:
原始数据表格R0
职工号
姓名
性别
工种
车间号
车间主任
车间产品号
产品价格
产品存仓
仓库主任
组成产品的零件号
零件重量
零件制造车间
零件存仓
0157
张三
男
钳工
03
李瑞
T-25
890.0
02
顾太原
A257
8.0
01
B236
12.0
C224
7.0
0165
李大朋
女
车工
王娜
T-47
4580.0
赵选发
B548
5.0
0184
王五
铣工
张雄伟
B-02
1954.0
S-58
1800.0
陈自成
0244
刘小刚
这张表格察看起来非常方便,但它不符合1NF,存在以下问题:
某些单元格存储的数据多于一个,在数据库中将无法实现这种存储格式;
另外,这种表格使某些操作也无法完成。
为了使R0∈1NF,对R0做纵向扩展,从而可有以下关系R1:
某机械厂信息管理关系R1
张三
李瑞
T-25
顾太原
李大朋
王娜
T-47
赵选发
王五
张雄伟
B-02
S-58
陈自成
刘小刚
现在,R1∈1NF。
R1的一个候选键是:
(职工号+产品号+零件号)。
由于R1存在以下函数依赖:
职工号→姓名,职工号→性别,职工号→工种,职工号→车间号,职工号→车间主任;
产品号→价格;
产品号→仓库号;
产品号→仓库主任
零件号→重量。
在以上9个函数依赖中,依赖因素都是非主属性,而决定因素都是候选键的一部分。
换句话说,R1中存在非主属性对候选键的部分函数依赖,故R1不满足2NF。
可明显看出,R1存在大量数据冗余。
必须通过模式分解将R1关系模式转换为若干个高一级范式的关系模式的集合——模式规范化处理。
为了使关系模式R1向高一级范式转换,可将R1分解(做垂直分割,并保留相关的联系)为R2、R3、R4三个关系:
R2
R3R4
车间产
品号
产品
价格
存仓
零件号
零件
重量
零件制
造车间
删除以上三个关系中的重复元组后,三个关系模式分别为:
产品号
R2的候选键是(职工号+产品号)。
R2存在以下函数依赖:
由于R2存在部分函数依赖,故R2不满足2NF。
将R2分解为R5和生产表:
R5生产表
显然,生产表∈2NF,且生产表∈3NF。
生产表反映的是车间与产品之间的联系——车间生产产品。
R5满足2NF。
R5的候选键是“职工号”。
故有:
职工号→车间号,职工号→车间主任;
但也存在:
车间号→车间主任。
即有:
职工号→车间号,车间号→车间主任,即“车间主任”传递依赖于候选关键字“职工号”,即R5不满足3NF。
将R5分解为工人表和车间表:
工人表车间表
至此,R2被分解成了3个满足3NF的关系模式(工人表、车间表、生产表)。
R3的候选键是(产品号+零件号)。
R3存在以下函数依赖:
产品号→产品价格,产品号→仓库号,产品号→仓库主任;
故R3不满足2NF。
将R3分解为R6和装配表:
R3
仓库号
R6装配表
显然,装配表∈2NF,且装配表∈3NF。
装配表反映的是零件与产品之间的联系——零件装配成产品。
R6满足2NF,但不满足3NF,故再将R6分解为产品表和仓库表:
产品表仓库表
至此,R3被分解成了3个满足3NF的关系模式(产品表、仓库表、装配表)。
R4的候选关键字是:
(零件号+车间号),存在部分函数依赖,故将R4分解为零件表和制造表:
R4
零件表制造表
显然,零件表∈3NF,制造表∈3NF。
综合以上规范化结果,有以下8个关系:
其中,生产表可合并到产品表中。
则最终规范化结果为以下7个关系模式:
这7个关系模式均满足3NF,且满足BCNF。
能否由以上的7个关系模式,得到“看起来更方便、清楚”的R1呢?
实际上,按以下关系在数据库中建立7个表(并输入相应的数据,数据总个数为:
2x6+5x4+3x4+2x10+2x3+4x4+2x3=92。
)
在查询分析器中,输入以下SQL语句:
SELECTdbo.工人.职工号,dbo.工人.姓名,dbo.工人.性别,dbo.工人.工种,dbo.车间.车间号,dbo.车间.车间主任,dbo.产品.产品号AS车间产品号,
dbo.产品.价格AS产品价格,dbo.仓库.仓库号AS产品存仓,dbo.仓库.仓库主任,
dbo.装配.零件号AS组成产品的零件号,dbo.零件.重量AS零件重量,dbo.制造.车间号AS零件制造车间,dbo.零件.仓库号AS零件存仓
FROMdbo.装配INNERJOIN
dbo.零件ONdbo.装配.零件号=dbo.零件.零件号INNERJOINdbo.产品ONdbo.装配.产品号=dbo.产品.产品号INNERJOIN
dbo.仓库ONdbo.产品.仓库号=dbo.仓库.仓库号INNERJOINdbo.车间ONdbo.产品.车间号=dbo.车间.车间号INNERJOIN
dbo.工人ONdbo.车间.车间号=dbo.工人.车间号INNERJOINdbo.制造ONdbo.零件.零件号=dbo.制造.零件号
ORDERBYdbo.工人.职工号
即可得R1(数据总个数为:
14x21=294)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 关系 规范化 设计 理论 方法