关系模式规范化实例析解
泛关系模式的规范化处理及其实例研究

(l tn Ee r i I o ao ni en eatet P tnU i rt, ua 5 10 C i ) c o c& n r tnE g er gDpr n, ua n esy P tn3 10 ,hn fm i n i m i v i i a
 ̄ : h sp p rd s u s s n v ra lt n l o c ps ie otm- p a po c o d tb s e i ae i u ies lrlt n l T i a e i s e ie s l eai a n e t ,sr sab t c u r o c o u p r a hfr aa aed sg b s d Ol n v ra eai a n o d c mp s in t r v n ep si l c ur r eo p ae a o l s a d rd c e o o io p e e t h o s e 0 c r l f d t n ma e n u e t o t b ec u i e
维普资讯
20 第 6期 06年
计 算 删 椰
机
与 现 代 化 Y U ⅪA D Ⅲ I N A y A
总 第 10期 3
文章 编号 :062 7 (0 60 - 5 -3 11 - 520 )60 8 3 4 0 0
泛 关 系模 式 的规 范 化处 理 及其 实例 研 究
的基本思想是逐步消除数据依赖 中不合适的部分 , 消 除各类操作异常, 减少数据的冗余。
定义 3 1 设 R u 是一个属性集 u上 的关 系模 式 , . () X是
u的一个子集 。如果 ) u在 R上 成立 , 那么 称 X是 R的一 个超键 。如果 ) u在 R上 成立 , 但对 于 X的任一 真子 集 X1 都有 x 一u不成立 , 1 那么称 X是 R上的一个候选键 。
关系模型规范化

规范化的必要性
❖ 关系模式的简化定义 ❖ 数据依赖 ❖ 数据依赖对关系模式影响
关系模式的简化定义
关系模式由五部分组成,即它是一个五元组:
R(U, D, DOM, F)
R: 关系名 U: 组成该关系的属性名集合 D: 属性组U中属性所来自的域 DOM: 属性向域的映象集合 F: 属性间数据的依赖关系集合
第三范式 (3NF)
➢ 采用投影分解法将一个2NF的关系分解为多个3NF的 关系,可以在一定程度上解决原2NF关系中存在的插入异 常、删除异常、数据冗余度大、修改复杂等问题。
➢ 将一个2NF关系分解为多个3NF的关系后,仍然不能 完全消除关系模式中的各种异常情况和数据冗余。
关系模式的规范化
1. 规范化的必要性 2. 规范化 3. 小结
数据依赖对关系模式的影响
把这个单一模式分成3个关系模式: S(Sno,Sdept,Sno → Sdept) SC(Sno,Cno,Grade,(Sno,Cno) → Grade) DEPT(Sdept,Mname,Sdept→ Mname)
关系模式的规范化
1. 规范化的必要性 2. 规范化 3. 小结
➢ 分解后的关系模式S-D与D-L中不再存在传递依赖
第三范式(3NF)
S-D的码为Sno, D-L的码为Sdept
S-D
D-L
Sno
Sdept
Sdept
Sloc
S-L(Sno , Sdept , Sloc) ∈ 2NF
S-L(Sno , Sdept , Sloc) ∈ 3NF S-D(Sno ,Sdept) ∈ 3NF D-L(Sdept , Sloc)∈ 3NF
关系模式的简化表示
➢ 关系模式R(U, D, DOM, F)
浅析关系数据库的规范化设计

现实世界随着时间的变化 , 不同时刻构成数据的关 系
世界 , 再将信息世界转化 为计算机世界?实现在信息管理 系统开发中所 需的数据 库呢?在把现实 世界抽象 为信息 世界的过 程中 , 实际上是抽象 出现实世界 中有应用价值 的 元素及其关联 , 在这一 描述与转换 过程 中, 一种 简单实 用 的方法是采用实体 一 联系模型分析方法( E—R分 析图 即 表示 法) 运用 E—R分 析工具 所形成 的分析结 果就 是 E ,
方 鹏
( 湖北工业大学 , 湖北武 汉, 304) 4 07
[ 摘
要】 数据库分析设计是 数据库应用 系统开发过程 中最重要 的环 节, 数据库设计 的好坏将直接影响整 个应 用 系统
的性 能, 本文围绕关 系数据库设计 中关系规范化 的理论与 实践 , 剖析 了范式规 范化 的一般原 理、 法与 步骤 , 方 以供数据 库
关系数据库规范化设计 的基础理论与技术 , 这种理论就是 范式理论 , 这种技术就是为满足 决策 支持及特殊数据存储
式构架 , 是对现实世界中各种事物或实体特征的数字化模 拟和抽象 , 用以表示 现实世界中的实体及实体间的联系使
的需要而涉及 到的数据仓库技术 , 本文 主要针对范式规范
化 加 以阐 述 。
2 1 年 5月 01
湖北成人教育学 院学报
J un l fHu e d l E u ainI s tt o ra B iA ut d c t n tue o o i
Ma y,2 0 1 1
第1 7卷
第 3期
V0 .1 N O 3 1 7 .
浅 析 关 系数 据 库 的 规 范 化 设 计
间 的联系为 5 F N ?B N ?3 F N ?1 F 1 F的 N ?4 F C F N ?2 F N 。N 概念为 : 若有一个关系 R, 其所有 的属性 都 是基本 的原子
数据库范式与关系模式示例

补充讲义一、范式举例BCNF.如:课程号与学号)例4:R(X,Y,Z),F={XY->Z},R为几范式?BCNF。
例5:R(X,Y,Z),F={Y->Z,XZ->Y},R为几范式?3NF。
R的候选码为{XZ,XY},(R中所有属性都是主属性,无传递依赖)二、求闭包数据库设计人员在对实际应用问题调查中,得到的结论往往是零散的、不规范的(直观问题好办,复杂问题难办了),所以,这对分析数据模型,达到规范化设计要求,还有差距,为此,从规范数据依赖集合的角度入手,找到正确分析数据模型的方法,以确定关系模式的规范化程度。
例1.已知关系模式R(U、F),其中,U={A,B,C,D,E}; F={AB→ C, B→ D, EC → B , AC→B} ,求(AB)+F.解:设X(0)=AB○1计算X(1),在F中找出左边为AB子集的FD,其结果是:AB→C,B→D∴X(1)=X(0)UB=ABUCD=ABCD 显然,X(1)≠X(0)○2计算X(2),在F中找出左边为ABCD子集的FD,其结果是:C→E,AC→B∴X(2)=X(1)UB=ABCDUBE=ABCDE 显然,X(2)=U所以,(AB)+ F=ABCDE.(等于U,所以AB是唯一候选关键字)例2.设有关系模式R(U、F),其中U={A,B,C,D,E,I};F={A→D,AB→E,B→E,CD→I,E→C},计算(AE)+解:令X={AE},X(0)=AE○1在F中找出左边是AE子集的FD,其结果是:A→D,E→C∴X(1)=X(0)UB=X(0)UDC=ACDE 显然,X(1)≠X(0)○2在F中找出左边是ACDE子集的FD,其结果是:CD→I∴X(2)=X(1)UI=ACDEI显然,X(2)≠X(1),但F中未用过的函数依赖的左边属性已含有X(2)的子集,所以不必再计算下去,即(AE)+=ACDEI.因为,X(3)=X(2),所以,算法结束。
数据库课件第4章关系数据库(RDB)规范化设计理论

3. 完全函数依赖与部分函数依赖
完全函数依赖: 在关系模式R(U)中,如果X→Y,并且对于X的任何一 个真子集X′,都有X′ Y,则称Y完全函数依赖于X, 记作X f Y。 部分函数依赖: 若X→Y,但Y不完全函数依赖于X,则称Y部分函数依 p Y。 赖于X,记作X
例8: 学生(学号,姓名,所在系,系主任姓名,课程号,成绩) 学生关系模式存在的部分函数依赖: p (学号,课程号) 姓名 p 所在系 (学号,课程号) p (学号,课程号) 系主任姓名
教师姓 名
李林 78号
住址
课程号
C1
课程名
N1
李林
李林 汪佳 吴仪
78号
78号 59号 79号
C2
C3 C4 C5
N2
N3 N4 N5
师帆
76号
C6
N6
⑷当执行数据插入时,DB中的数据不能产生插入 异常现象 所谓“插入异常”是指希望插入的信息由于不 能满足数据完整性的某种要求而不能正常地被 插入到DB中的异常问题。 比如:上例中插入一个尚未安排授课的新进教师 信息. 原因: 因多种信息混合放在一个表中,可能造成因一 种信息被捆绑在其他信息上而产生的信息之间 相互依附存储的问题,使得信息不能独立插入。
第4章
关系数据库(RDB)规范化理论
4.1 关系模式规范化的必要性 4.2 数值依赖 4.3 范式与规范化 、关系分解原则
RDB规范化理论的目的是要设计“好的”RDB模式。要设计 好的关系模式,必须是关系满足一定的约束条件,此约束 形成了规范。 范式(Normal Form):衡量DB规范的层次或深度,DB规范化 层次由范式来决定。简记作NF. 根据关系模式满足的不同性质和规范化的程度,将关系模 式分为第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、 BC范式、第四范式(4NF)、第五范式(5NF),范式越高规范 化程度越高。 规范化:低级关系模式通过模式分解转换为若干高级范式 的关系模式集合的过程。 规范化是在RDB中减少数据冗余的过程。
关系规范化理论及反规范化设计在数据库中的运用

科技信息
0计算机 与信 息技术 O
SIN E&T C N L G N O M TO CE C E H O O YIF R A IN
20 07年
第 2 期 l
关系规范化理论及反规范化设计在数据库中的运用
李 荣 芳 ( 陕西 邮 电职 业技术 学 院计算 机 系 陕西
D S S O,N, E T)S 关 系模 式 的角 度 来 看 , 有满 足 第 三 范 式 或 B N 只 C F的 表结 构 是 最 容 易 取 出 来 ,把 表 分 解 为 S和 S 两 张 关 系 , 即 : (N S D P ,D D P MN) 两 张关 系 通 过 S的外 键 D P , E T来 联 接 。 维护 的, 而且 可 以基 本 满 足 实 际 应 用 的 要 求 。对 关 系 的规 范 化 处 理 具 ( E T, C, N 但 有 很 多 优 点 : 低 数 据 冗 余 , 免 了数 据 库 的修 改 异 常 , 入 异 常 和 删 分析 S 虽满足 3 F, 仍存在以下问题 : 降 避 插 除 异 常 ; 且 也 加 快 了单 表 查 询 的速 度 。 而
关 键 词 : 据 库 设 计 ; 范化 ; 规 范化 数 规 反
1引 言 .
在 关 系 数 据 库 设 计 中 , 范 化 是 一 个 很 重 要 的概 念 。 数 据 库 的 设 规
S O一 >S DEPI > ’ M 一
23第 三范式(N ) 若某关系模式 满足 2 F. , 3F N 且关系 中每一 个非 则 N。 计是 否 合 理 . 接 影 响 到 数 据 库 的 性 能 。 自 2 直 0世 纪 7 O年 代 首 次 提 出 主 属 性 都 直 接 函 数 依 赖 于侯 选 关 键 字 , 称 该 关 系 满 足 3 F 要 使 S NF 只要 去掉 S中的传递函数依赖 即可 , 将传递 函数依赖单 独 关 系 规 范化 理 论 以 来 , 系 规 范 从 第 一 范 式 提 高 到 第 五 范 式 , 是 从 满足 3 , 关 但
第4章+关系规范化理论 (数据库原理及应用) PPT

100101
姜珊
女
信电学院 C150101 数据结构
100101
姜珊
女
信电学院 C150103 数据库
120102
陈默
女
管理学院 C150102 操作系统
120102
陈默
女
管理学院 C150103 数据库
130103
孙浩
男
外语学院 C150100 计算机基础
Score 78
70 85 68 82 72
模式分解后,消除了原关系S中的部分函数依赖,即S1、 S2、S3 3个关系模式都不存在部分函数依赖,S1、S2、S3 都属于2NF。
PNO,PN,COLOR,PRICE,SNO商店号, SN商店名称,CITY所在城市, QTY销售 商品数量
❖(SNO,SN,CITY,PNO,PN,COLOR, PRICE,QTY)
(1)如果X→Y,且YX,则称X→Y是平凡的函数依赖。
YX
(2)如果X→Y,但
,则称X→Y是非平凡的函数依赖。
(3)如果X→Y,则称X为决定因素(Determinant),称Y
为依赖因素(Dependent)。
(4)如果X→Y且Y→X,则记作X←→→Y。
(5)如果Y不函数依赖于X,则记作X Y 。
4.3.2 第二范式(2NF)
定义4.5:如果关系模式R∈1NF,且每个非主属性 都完全函数依赖于主键,则称R属于第二范式,记为 R∈2NF。
由定义可知,如果某个1NF的关系的主键只由一个属 性组成或关系的全体属性均为主属性,那么这个关系就是 2NF。如果主键是由多个属性列共同构成的复合主键,并 且存在非主属性对主属性的部分函数依赖,则这个关系就 不是2NF。
关系模型设计(范式)_图文

第一范式(1NF):数据库表中的字段 都是单一属性的,不可再分。
字段1
字段2
字段3
字段4
第一范式(1NF)
• 例如,如下的数据库表是符合第一范式的:
字段1 字段第2 一范式字(段13NF) 字段4
第二范式举例
• 假定选课关系表为SelectCourse(学号, 姓名, 年 龄, 课程名称, 成绩, 学分),关键字为组合关键字( 学号, 课程名称),因为存在如下决定关系: (学号, 课程名称) → (姓名, 年龄, 成绩, 学分)
这个数据库表不满足第二范式,因为存在如下决 定关系:
(课程名称) → (学分) (学号) → (姓名, 年龄)
关系模式规范化的作用
•
关系数据库的设计主要是关
系模式设计。关系模式设计的好
坏直接影响到数据库设计的成败
。将关系模式规范化,是设计较
好的关系模式的惟一途径。
•
关系模式的规范化主要是
由关系范式来完成的。
关系范式
所谓范式(Normal Form,NF)是指规 范化的关系模式。由规范化程度不同,就产 生了不同的范式。根据满足条件的不同,经 常称某一关系模式R为“第几范式”。
• 原则:遵从概念单一化 “一事一地”原则,即一个关系 模式描述一个实体或实体间的一种联系。
• 方法:将关系模式投影分解成两个或两个以上的关系模式 。
• 要求:分解后的关系模式集合应当与原关系模式“等价” ,即经过自然联接可以恢复原关系而不丢失信息,并保持 属性间合理的联系。
关键字段 → 非关键字段x → 非关键字段y
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关系模式规范化实例析解
摘要:关系模式是关系数据库的重要组成部份,其规范化理论在整个模式设计中占有主导地位。
下面我们试图采用接近课堂教学的方式给出一个完整实例,希望对初学者有所帮助。
关键词:关系模式;规范化;函数依赖;范式
众所周知,关系模式是关系数据库的重要组成部份,其好坏直接影响关系数据库的性能。
而关系模式的设计必须满足一定的规范化要求,从而满足不同的范式级别。
[1](P.46-52,57)在指导关系模式的设计中,规范化理论占有着主导地位,其基本思想是:消除数据依赖中不合理的部份,使各关系模式达到某种程度的分离,使一个关系仅描述一个实体或者实体间的一种联系。
[2]关系模式及其规范化的理论是我们设计和优化关系模式的指南。
作为一种优秀而成熟的理论,学习和实践会有一定的难度,但在因特网和相关书籍中难得有比较全面的实例,给我们学习和实践造成不便。
下面,我们试图采用接近课堂教学的方式给出一个完整的析解实例,以期对初学者有所帮助。
一、实例
假设某商业集团数据库中有一关系模式R(商店编号,商品编号,数量,部门编号,负责人),如果规定:
(1)每个商店的每种商品只在一个部门销售;
(2)每个商店的每个部门只有一个负责人;
(3)每个商店的每种商品只有一个库存数量。
试回答下列问题:
(1)根据上述规定,写出关系模式R的基本函数依赖;
(2)找出关系模式R的候选关键字;
(3)试问关系模式R最高已经达到第几范式为什么
(4)如果R已达3NF,是否已达BCNF 若不是BCNF,将其分解为BCNF模式集。
二、预处理
为了方便,我们用代号代表每个属性:
A—商店编号B—商品编号
C—部门编号D—数量
E—负责人
这样,有关系模式:R(U,F)U={A,B,C,D,E}
三、根据上述规定,写出关系模式R的基本函数依赖
为了消除关系模式在操作上的异常问题,优化数据模式,我们需要对关系模式进行规范化处理。
而首先需要做的就是函数依赖,以便能确切地反映实体内部各属性间的联系。
[2](P.经过对数据语义的分析我们得出下面的依赖关系:
1.语义:每个商店的每种商品只在一个部门销售,即已知商店和商品名称可以决定销售部门
例:东店——海尔洗衣机———定在家电部销售
所以得出函数依赖:AB→C
2.语义:每个商店的每个部门只有一个负责人,即已知商店和部门名称可以决定负责人
例:东店——家电部——部门经理一定是张三
所以得出函数依赖是:AC→E
3.每个商店的每种商品只有一个库存数量,即已知商店和商品名称可以决定库存数量
例:东店——海尔洗衣机——库存10台
所以得出函数依赖是:AB→D
这样:在关系模式R(U,F)中,基本函数依赖集是:F={ AB→C ,AC→E,AB→D }。
四、找出关系模式R的候选关键字
根据函数依赖和关键字的基本定义,我们可以说:只有在最小函数依赖集中才能科学、正确地寻找候选关键字。
那么何为最小函数依赖集又怎么求出F的最小函数依赖集呢根据函数依赖的相关定理我们得知:给定函数依赖集F,如果F中每一函数依赖X->Y∈F满足:(1)X->Y的右边Y为单个属性(F为右规约的);(2)F为左规约(即F中任一函数依赖X→Y∈F的左边都不含多余属性);
(3)F为非冗余的(即如果存在F的真子集F’,使得F’≡F,则称F是冗余的,否则称F是非冗余的);则称F为最小函数依赖集,或称F是正则的。
每一个函数依赖都等价于一个最小函数依赖集。
[3](P.150)按照上面的三个条件进行最小化处理,我们可得到一个求最小函数依赖集方法:第一步,为满足条件1,根据分解性把右侧是属性组的函数依赖分解为单属性的多个函数;第二步,为满足条件2,逐一考察最新F中的函数依赖,消除左侧冗余属性;为满足条件3,逐一考察最新F中函数依赖X->Y,检查X->Y是否被F-{X->Y}所蕴涵,如果是,则X->Y是冗余的,可以删除。
[4]所以,F的所谓最小函数依赖集就是去掉了多余依赖的F。
按上面提供的算法依据具体计算如下:
1.根据分解性先分解所有依赖的右边为单属性:
可以看出:F={ AB→C ,AC→E,AB→D }中所有依赖的右边已为单属性。
2.对所有依赖的左边为多属性的情况,消除左侧冗余属性:
下面计算判断AB→C中有无无关属性:
(1)设A→C,在F={ AB→C ,AC→E,AB→D }中计算A的闭包A+ :
首先,初始化A+ = {A};经观察,在F={ AB→C ,AC→E,AB→D }中,属性A不能“带进”任何
属性。
即A的闭包A+ 就是{A},也就是A+ = {A},所以AB→C中B不是无关属性。
(2)设B→C,在F={ AB→C ,AC→E,AB→D }中计算B的闭包B+:
首先,初始化B+ = {B};经观察,在F={ AB→C ,AC→E,AB→D }中,属性B不能“带进”任何属性。
即B的闭包B+就是{B},也就是B+ = {B},所以AB→C中A不是无关属性。
(3)同理,AC→E和AB→D中左边亦无无关属性。
3、下面计算在F={ AB→C ,AC→E,AB→D }中有无冗余依赖:
我们去掉AB→C,依赖集变为F={ AC→E,AB→D }。
首先,初始化{AB}+ = {A,B} ;在F={ AC→E,AB→D }中,有AB→D,即AB可以“带进”D属性,这时{AB}+ = {A,B,D};经观察已不能再“带进”其它属性。
即{AB}的闭包{AB}+ 就是{A,B,D},也就是{AB}+ = {A,B,D}。
因为{A,B,D}中不包含C,所以我们说AB→C不是冗余依赖。
同理计算,AC→E和AB→D亦不是冗余依赖。
到此,才能肯定F={ AB→C ,AC→E,AB→D }已是最小函数依赖集。
4、寻找候选关键字也需要一定的计算,下面计算R的候选关键字:
在F={ AB→C ,AC→E,AB→D }中,我们对所有属性进行归类如下:
L类属性,即仅在依赖左边出现的属性:A,B
R类属性,即仅在依赖左边出现的属性:E,D
LR类属性,即既在依赖左边又在依赖右边出现的属性:C
N类属性,即既不在依赖左边又不在依赖右边出现的属性:无
我们知道,L类属性和N类属性一定在候选关键字中,R类属性一定不在候选关键字中。
所以,A,B一定在候选关键字中,E,D一定不在候选关键字中。
这是定性的结果。
具体的候选关键字是什么呢
首先,计算L类属性AB的闭包:{A,B}+ ={A,B,D,C,E},因为AB的闭包{A,B,D,C,E}
已经包含了所有R的属性,所以,{A,B}是唯一候选关键字。
对于LR类属性参与候选关键字的相关计算稍嫌复杂,但这里已经找出了关系模式R{A,B,C,D,E}的唯一候选关键字。
[3](P.148-150)
五、关系模式R最高已经达到第几范式为什么
很明显,关系模式R(A,B,C,D,E)中的所有属性值都是不可再分的原子项,所以该关系模式已满足第一范式。
[1](P.53)那么关系模式R(A,B,C,D,E)是否满足2NF
根据范式的相关定义我们得知:如果关系模式R(U,F)中的所有非主属性都完全函数依赖于任一候选关键字,则该关系是第二范式。
[1](P.54)从上面的分析我们知道R(A,B,C,D,E)的唯一候选关键字是{A,B};非主属性是:C、D、E ;函数依赖集是{ AB→C ,AC→E,AB→D }。
所以:
AB→C
例:东店——海尔洗衣机———定在家电部销售
AB→D
例:东店——海尔洗衣机(——只在家电部销售)——库存10台
AB→E
例:东店——海尔洗衣机(——卖海尔洗衣机的部门——家电部)——部门经理是张三
关系模式R(A,B,C,D,E)已满足2NF。
进一步分析:非主属性C、D、E之间不存在相互依赖,即关系模式R(A,B,C,D,E)不存在非主属性对候选关键字的传递依赖,根据第三范式的定义,关系模式R(A,B,C,D,E)已满足3NF。
[1](P.55)
六、R已达3NF,是否已达BCNF 若不是BCNF,将其分解为BCNF模式集
由BC范式的定义得知:如果关系模式每个决定因素都包含关键字(而不是被关键字所包含),则R满足BC范式。
[1](P.56)分析:在F={ AB→C ,AC→E,AB→D }中,有依赖AC→E的左边{A,C}不包含候选关键字{A,B},即AC→E是BCNF的违例。
所以,关系模式R(A,B,C,D,E)不满足BCNF。
1、下面分解关系模式R(A,B,C,D,E):
分解3NF,有一定的规则。
从BCNF违例AC→E入手,我们得到两个新关系模式:R1(A,C,E)和R2(A,C,B,D)
R1由违例的所有属性组成,R2由违例的决定因素和R的其余属性组成。
即:R1(商店编号,部门编号,负责人),实际上描述了“负责人”这一件事。
R2(商店编号,商品编号,部门编号,数量),实际上描述了“商品库存”这一件事。
已经做到了“一事一地”的原则了,应该能符合更高的范式,但还得经过计算和判断。
2、下面我们判断R1是否满足BCNF:
对于一个新关系,不知道它的依赖集,不知道它的候选关键字,我们需要借助原R(A,B,C,D,E)的依赖集F={ AB→C ,AC→E,AB→D }。