数据库-规范化

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.插入异常。当某门课程本学期不开,自然就没有学生选修。没有学生选修, 因为主属性不能为空,教师上该门课程的信息就无法插入。同样原因,学 生刚入校,尚未选课,有关信息也不能输入。
3.删除异常。如果选修某门课程的学生全部毕业,删除学生记录的同时,随之 也删除了教师开设该门课程的信息。
4.更新异常。当某个教师开设的某门课程改名后,所有选修该教师该门课程 的学生元组都要进行修改,如果漏改某个数据,则破坏了数据的完整性。
• 如果一个关系数据库中所有关系模式都属于3NF,则已在很大程度上消
除了插入异常和删除异常,但由于可能存在主属性对候选键的部分依赖 和传递依赖,因此关系模式的分离仍不够彻底。
• 如果一个关系数据库中所有关系模式都属于BCNF,那么在函数依赖的范
畴内,已经实现了模式的彻底分解,消除了产生插入异常和删除异常的 根源,而且数据冗余也减少到极小程度。
C一3 个职工M可6 以保管W多4 种设备
函数依赖:职工号→仓库号 (仓库号,设备号) → 职工号
仓库号 设备号
分析:存在异常现象
职工号
—— 起因于主属性对非主属性的函数依赖
属于3NF的关系模式一定是好模式?
• 例2:关于学生(S)-教师(T)-课程(C)的关系模式
STC(S,T,C) 3NF 语义:每个教师只教一门课程,每门课程有若干教师教
•分解办法
•(1)对于不是候选码的每个决定因子,从表中删去依赖于它 的•(所2有)属新性建。一个表,新表中包含原表中所有依赖于该决定因子 的•(属3性)。将决定因子作为新表的主码。 •根据分解的原则,我们可以将SD分解成如下两个关系,如图
所示。 S(SNO,SN,AGE,DEPT),描述学生实体; D(DEPT,MN),描述系的实体。
分解S-C-D表
• (1)将该表分解为如下的三张表(下划线部分表
示主键):
SD(Sno,…) C(Cno,…) SC(Sno, Cno,…)
分解S-C-D表(续)
• (2)将依赖于这些主键的属性放置到相应的表中,
形成如下三张表: SD(Sno,Sn, Age, Dept, MN) C(Cno) SC(Sno, Cno, Score)
R ∈3NF
• 如果R∈3NF,且R只有一个候选码
充分
R ∈BCNF 必要
R ∈3NF
关系模式的规范化 小结
• 规范化
—— 一个低一级范式的关系模式,通过模式分解转 换为若干个高一级范式的关系模式集合的过程。
• 规范化目的 消除关系上的数据冗余、操作异常的现
象。
• 规范化基本思想 采用“一事一地”的模式设计原则,
函数依赖:(S,J)→P;(J,P)→S (S,J)与(J,P)都可以作为候选码,属性相交 SJP∈3NF, SJP∈BCNF
[例]在关系模式STJ(S,T,J)中,S表示学生,T表示 教师,J表示课程。
学生可选多门课,一门课有多个老师,每个老师只上一门课。
函数依赖:
(S,J)→T,(S,T)→J,T→J (S,J)和(S,T)都是候选码
逐步消除数据依赖中不合适的部分,使模式中的各关 系模式达到某种程度的分解。
• 规范化实质 —— 概念的单一化
范式化的基本步骤
消除决定因素 非码的非平凡 函数依赖
并非规范
化的赖关程系度模越式高
就越好
1NF关系 消除非主属性对码的部分函数依赖
2NF关系 消除非主属性对码的传递函数依赖
3NF关系 消除主属性对非主属性的函数依赖 和对码的部分、传递函数依赖
例1:有一关系模式:供应商(供应商编号、供应商 名称,供应商地址,供应商电话,供货名称,供 货单价);一个供应商可以供应多种货物,同一 种货物也可以由多个供应商供应;
1.写出该关系模式的函数依赖集F ? 2.评价该关系模式,并举例说明是否存在下列问题
数据冗余 ;更新异常;插入异常 ;删除异常
3.如何改造该关系模式?
[例] 关系模式C(Cno,Cname,Pcno) 码为CNO C∈3NF C∈BCNF
[例] 关系模式S(Sno,Sname,Sdept,Sage) 假定S有两个码Sno,Sname (不重名的情况) S∈3NF。 S ∈ BCNF
[例]关系模式SJP(S,J,P) 学生S选修课J有一确定名次P(设名次无并列)
(1)函数依赖如下: (商店编号,商品编号)部门编号,(商店编号,部门编号)
负责人, (商店编号,商品编号)商品库存数量
(2)R的候选码是(商店编号,商品编号)。 由(商店编号,商品编号)商店编号(自反律 )及 (商店编号,
商品编号)部门编号(已知)⇒(商店编号,商品编号)(商店 编号,部门编号)(合并) 又有(商店编号,部门编号)负责人⇒(商店编号,商品编号) 负责人(传递) 由,,得(商店编号,商品编号)(商店编号,商品编号,商 品库存数量,部门编号,负责人),根据关键字的定义,可得R的候 选码是(商店编号,商品编号)。 (3)因为R中存在非主属性“负责人”对候选码(商店编号,商品编 号)的传递函数依赖,所以R属于2NF,不属于3NF。 (4)将R分解成R1(商店编号,商品编号,商品库存数量,部门编 号), R2(商店编号,部门编号,负责人) 则R1,R2均为3NF。
练习
2. 设有关系模式R(职工编号,日期,日营业额,部门名,部门
经理),该模式统计商店里每个职工的日营业额,以及职工所 在的部门和经理信息。如果规定:每个职工每天只有一个营 业额;每个职工只在一个部门工作;每个部门只有一个经理。 试回答下列问题: (1) 根据上述规定,写出模式R的基本函数依赖和候选码; (2) 说明R不是2NF的理由,并把R分解为2NF模式集; (3) 进而将R分解为属于3NF的模式集。
假设某企业集团数据库中有一关系模式R如下: R(商店编号,商品编号,商品库存数量,部门编号,负责
人) 如果规定:
1. 每个商店的每种商品只在该商店的一个部门销售; 2.每个商店的每个部门只有一个负责人; 3.每个商店的每种商品只有一个库存数量。
试分析:
1. 根据上述规定,写出关系模式R的基本函数依赖; 2.指出该关系模式R的候选码 3.指出该关系模式R的范式级别,为什么? 4.若R不是3NF,将R分解为3NF。
• 经以上分析,可以得到两个结论:
1.从1NF关系中消除非主属性对码的部分函数依赖, 则可得到2NF关系。
2.如果R的码为单属性,或R的全体属性均为主属性, 则R2NF。
2nf分解方法
• (1)用组成主键的属性集合的每一个子集作为主
键构成一个表。
• (2)将依赖于这些主键的属性放置到相应的表中。 • (3)最后去掉只由主键的子集构成的表。
某一学生选定某门课程就对应于一个确定的教师 函数依赖:T→ C (S,C)→T (S,T)→C
候选码:(S,C)和(S,T)
分析:存在异常现象
S T
C
S C
T
—— 起因于主属性对码的部分和传递函数依赖
TCS的异常
1.数据冗余。虽然每个教师只开一门课,但每个选修该教师该该门课程的学 生元组都要记录这一信息。
• (3)去掉只由主键的子集构成的表,也就是去掉C
(Cno)表。SCD关系模式最终被分解的形式为: SD(Sno,Sn, Age, Dept, MN) SC(Sno, Cno, Score)
分解后的函数依赖关系
• 分解后的关系模式的函数依赖关系:
• SD:Snof→Dept,Snof→Sn
BCNF关系 消除非平凡且非函数依赖的多值依
4NF关系 消除非候选码所蕴涵的连接依赖
5NF关系
练习
1. 指出下列关系模式最高是第几范式?并说明理由。 (1) R(X,Y,Z),F={XY→Z} (2) R(X,Y,Z),F={Y→Z,XZ→Y } (3) R(X,Y,Z),F={Y→Z,Y→X,X→YZ } (4) R(W,X,Y,Z),F={X→Z,WX→Y }
S4
SN
赵亦
钱尔
孙珊
李思
CNO C1 C2 C5 C6 C7 C5 C1 C2 C4 C1
AGE 17 18 20 21
SCORE 90 85 57 80
70 0 70 85 93
DEPT 计算机
信息 信息 自动化
MN 刘伟 王平 王平 刘伟
关系SD和SC
例 将SD(SNO,SN,AGE,DEPT,MN)规范到3NF。 分析SD的属性组成,可以判断,关系SD实际上描述 了两个实体: 一个为学生实体,属性有SNO,SN,AGE,DEPT; 另一个是系的实体,其属性DEPT和MN。
• 关系模式TCS(T,C,S),
一个教师可以讲授多门课程,一门课程可以为多个 教师讲授,
同样一个学生可以选听多门课程,一门课程可以为 多个学生选听,
(T,C,S)三个属性的组合是码,T,C,S都是主属性,而 无非主属性,所以也就不可能存在非主属性对码的 部分函数依赖,TCS2NF。
S
D
SNO SN AGE DEPT S1 赵亦 17 计算机 S2 钱尔 18 信息 S3 孙珊 20 信息 S4 李思 21 自动化
DEPT
计算机
信息
自动化
MN 刘伟 王平 刘伟
关系S和D
•对 于 分 解 后 的 两 个 关 系 S 和 D , 主 键 分 别 为 SNO 和 DEPT,不存在非主属性对主键的传递函数依赖。因此, S3NF,D3NF。
可分解为:
ST( S,T )
BCNF
TC( T,C,T →C ) BCNF
• 注意:以上分解可以保证无损连接,不能保持函数依赖。
• 总结:BCNF在函数依赖的范畴内,已实现了彻底的分解。
• 关系模式TCS由规范到BCNF后,使原来存在的四个异常问题得到解决。
1.数据冗余降低。每个教师开设课程的信息只在TC关系中存储一次。
• STJ∈3NF
没有任何非主属性对码传递依赖或部分依赖
• STJ∈BCNF
T是决定因素,T不包含码
• 解决方法:将STJ分解为二个关系模式:
ST(S,T) ∈ BCNF, TJ(T,J)∈ BCNF
S
Байду номын сангаас
J
T
J
ST
TJ
没有任何属性对码的部分函数依赖和传递函数依赖
3NF与BCNF的关系
• R ∈BCNF 充分 不必要
Snof→Age, Snof→Mn 是2NF
• SC:(Sno, Cno)f→SCORE:是2NF
SD(SNO,SN,AGE,DEPT,MN),描述学生实体; SC(SNO,CNO,SCORE),描述学生与课程的联系。
SNO
SD
S1
S2
S3
S4
SC
SNO
S1
S1
S2
S2
S2
S2
S3
S3
S3
6.3 数据依赖的公理系统
• 为从已知的数据依赖关系中推导出更多的数据依赖,人
们总结出许多数据依赖的推理规则,这些规则1974年 由 W.W.Armstrong 归纳为一个有效、完备的数据依 赖公理系统—— Armstrong公理系统。
• 数据依赖的公理系统是模式分解算法的理论基础
用途 求给定关系模式的码。 从一组函数依赖求得蕴含的函数依赖。
T
C
S
T1
C1
S1
T1
C1
S2
T2
C1
S3
T2
C1
S4
T3
C2
S2
T4
C2
S2
T4
C3
S2
实例模式的分解
• 管理(仓库号,设备号,职工号) 3NF BCNF
可分解为:
职工(职工号,仓库号,职工号→仓库号) BCNF
存放(仓库号,设备号)
BCNF
管理(职工号,设备号)
BCNF
• STC( S,T,C ) 3NF BCNF
2.不存在插入异常。对于所开课程尚未有学生选修的教师信息可以 直接存储在关系TC中,而对于尚未选修课程的学生可以存储在关系 ST中。
3.不存在删除异常。如果选修某门课程的学生全部毕业,可以只删 除关系ST中的相关学生记录,而不影响系关系TC中相应教师开设该 门课程的信息。
4.不存在更新异常。当某个教师开设的某门课程改名后,只需修改 关系TC中的一个相应元组即可,不会破坏数据的完整性。
属于3NF的关系模式一定是好模式?
例1:建仓立库一号个描设述备仓号 库管职理工号的关系模式
管理(C仓1 库号,M1设备号W,1职工号)
C1
M2
W1

3NF
语义:C一1 个仓库M有3 若干职W工2 ,一个职工仅在一个仓库工作
C一1 个仓库M可4 存放多W种2 设备,一种设备可放在多个仓库
C一2 个仓库M的5 一种设W备3 仅由一名职工保管
相关文档
最新文档