9关系规范化理论
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
继续分析,先讨论学生表,看是否还存在问题。
首先,在这个关系模式中,描述多少个学生就会重 复描述该学生所在系的教室,因此还存在数据冗余。 其次,当新组建一个系时,如果此系还没有招收学 生,但已分配了教室,则无法将此系的信息插入到 数据库中,因为这时学号为空。这是插入异常。 由此我们看到第二范式的表同样还可能存在操 作异常情况,因此我们需要对此关系模式做进一步 的分解。
• 解决之道:分解! 分解!! 再分解!!! 哇,原来生活可以如此简单
职工 赵明 钱广 孙志 李开 周祥
级别 4 5 6 5 6
级别 4 5 6
工资 500 600 700
有关学生的关系模式 S(SName ,Sdept ,CName,CRoom ,Grade) SName 赵一 赵一 孙三 李四 李四 吴六 郑七 Sdept CName CRoom Grade 计算机 数据库 A3 90 计算机 C语言 A3 87 计算机 数据库 A3 92 信管 Java A7 95 信管 Oracle A7 78 英语 数学 A2 82 英语 英语 A2 70
练
A a1 a1 a2 a2 a3 B b1 b2 b2 b3 b3
习
C c1 c1 c2 c2 c2 D d1 d2 d2 d3 d4
• 检验:A→C?C→A?AB→D? • 判断:自变量的字段取相同的值时,对应的因变量 字段是否也取相同的值
练
A 1 4 5 B 2 2 3
习
C 3 3 3
找出可能的函数依赖?
2.第二范式
定义:如果R(U,F)∈1NF,并且R中的每个非主属性 都完全函数依赖于主码,则R(U,F)∈2NF。 eg:关系S(Sno,Sdept,CRoom,Cno,Grade)是否2NF? 分析: 因为(Sno,Cno)是主码, 所以(Sno,Cno)→Sdept 但又有:Sno→Sdept, 因此有:(Sno,Cno)-P →Sdept 所以关系S不是2NF的。
分解! 分解!! 再分解!!!
5.1 函数依赖
5.1.1函数依赖基本概念 5.1.2一些术语和符号 5.1.3 为什么要讨论函数依赖
5.1 函数依赖原始概念
函数公式: Y=f(X)
表示X和Y的对应关系,即给定一个X值,都会有一个Y 值和它对应,也可以说X函数决定Y,或Y函数依赖于X。
关系模式的设计问题
• 示例 考虑为管理职工的工资信息而设计一个关系模式
职工 赵明 钱广 孙志 李开 周祥
级别 4 5 6 5 6
工资 500 600 700 600 700
• 问题:麻烦! 麻烦!! 好麻烦!!! 唉! 剪不断,理还乱!!!
–信息的不可表示问题 •插入异常:若没有职工有8级工资,则8级的工资数 额就难以插入 •删除异常:若仅有职工赵明是4级工资,如果将赵明 删除,则有关4级的工资数额信息也随之删除了 –信息的冗余问题 •数据冗余:职工很多,工资级别有限,每一级别的 工资数额反复存储多次 •更新异常:如果将5级工资的工资数额调为620,则 需要找到每个具有5级工资的职工,逐一修改
例3:
• 关系模式 • 主码:?
S(Sno ,SName ,SDept ,CRoom ,Cno ,Grade)
f → Grade • 函数依赖:(Sno,Cno)
p Sno→ SName,(Sno,Cno) →SName p Sno → SDept,(Sno,Cno) → SDept
姓名 王军 张立 李明 生日 68-7-10 79-7-10 80-3-28 姓名 王军 张立 李明 年 68 79 80 月日 7-10 7-10 3-28
• 如果只是查询出生日期,则它满足1NF • 如果查询两人生日是否相同,则只比较月、日, 需要将生日分解,就不满足1NF。
平凡函数依赖
• 如果X→Y,但Y⊄X,则称X→Y为非平凡的函数 依赖,若Y包含于X,则称X→Y为平凡函数依赖 • 如(S#,SN)→SN是平凡的函数依赖 • 注意:对任意一种依赖关系,平凡函数依赖都 是必然的,它不反映新的语义,因此我们总是 讨论的非平凡函数依赖
部分函数依赖 在R(U)中,如果X→Y,且对于任意X的真子 集X′,都有 ,则称Y对X完全函数依 X′→ Y f → 赖,记作 ,否则称为Y对X部分函数 X Y p 依赖,记作 → Y X 快速热身2:找出学生关系模式中存在的部 分函数依赖
1NF 2NF 3NF BCNF 4NF 5NF
1.第一范式
• 定义:不包含重复组的关系(即不包含非原子 项的属性)。 • 在任何关系数据库中,第一范式是关系模式最 起码的要求,不满足第一范式的数据库模式不 能称为关系数据库模式。 • 一张表格中所有的列都不能再分解了,则称这 张表满足第一范式
如: Sno → SDept,SDept → CRoom 则Sno → CRoom • 快速热身3:找出职工工资表中的传递函数依 赖
⊄
5.2 关系规范化
5.2.1 关系模式中的码 5.2.2 范式
5.2.1关系模式中的码
• 设U表示关系模式R的属性全集,即 U={A1, A2, …, An}, 用F表示关系模式R上 的函数依赖集,则关系模式R可表示为 R(U, F).
分解
• 首先,对组成主码的属性集合的每一个子集, 用它作为主码构成一个表。 学生(Sno,…)课程(Cno,…)选课(Sno,Cno,…) • 对每个表,将依赖于此主码的属性放置到此表 中。若没有属性依赖于该主码,则将该子表删 除。 学生(Sno,Sdept,Croom)选课(Sno,Cno,grade)
5.1.1函数依赖基本概念
• 定义:如果有一个关系模式(U),X和Y为U的子集,那 么对于关系R中的任意一个X值,都只有一个Y值与之对 应,则称X函数决定Y,或Y函数依赖于X,记作X→Y, 称X为决定因子 • eg:学生关系模式:Student(Sno,Sname,Sdept,Sage) 有:Sno→SName, Sno→Sdept, Sno→Sage 学生修课关系模式:SC(Sno, Cno, Grade) 有:(Sno, Cno)→Grade 函数依赖讨论的是一张二维表内各字段间是否有相互依 存关系
例1:SC(SNO,CNO,GRADE)
• 其候选码为:(Sno,Cno),也为主码 • 主属性为: Sno,Cno • Grade为非主属性。
例2: • 有如下语义:一个演奏者可演奏多个作品, 某一作品可被多个演奏者演奏;听众可以欣 赏不同演奏者的不同作品。
• 其关系模式为R(P,W,A),其中各属性含义分别 为: 演奏者(performance),作品(works)和 听众(audience)。 • 其候选码为:(P,W,A),因为只有这三者才能确 定一场音乐会。我们称全部属性均为主码的表 为全码表。
数据库原理与应用
关系数据库规范化理论
提纲
• 关系模式的设计问题 • 函数依赖 • 范式 • 模式分解
关系模式的设计问题
• 问题 针对一个具体问题或一个项目,应该如何 构造一个适合于它的数据模式,即应该构造几 个关系模式,每个关系模式又由哪些属性组成 等。这是数据库的设计问题,确切的讲,是关 系数据库的逻辑设计问题。
分解
• 对不是候选码的每个决定因子,从表中删去依 赖于它的所有属性; S-C(Sno,Sdept,CRoom),删去依赖于Sdept的 Croom,组成新的表S-S(Sno,Sdept) • 新建一个表,新表中包含在原表中所有依赖于 该决定因子的属性; • 将决定因子作为新表的主码。 S-C(Sdept,CRoom) 通常在数据库设计中,一般要求要达到3NF
• 快速热身:它存在哪些问题? • 望闻问切:不良的数据依赖
不良特性((学号,课程名)是主键) 插入异常:如果学生没有选课,关于他的个人信 息及所在系的信息就无法插入 删除异常:如果删除学生的选课信息,则有关他 的个人信息及所在系的信息也随之删除了 更新异常:如果学生转系,若他选修了n门课, 则需要修改n次 数据冗余:如果一个学生选修了n门课,则有关 他的所在系的信息重复
1.候选码
• 设K为R(U,F)中的属性或属性组,若K→U,则K为R的 候选码。(K为决定R全部属性值的最小属性组)。 主码:关系R(U,F)中可能有多个候选码,选其中一 个作为主码 全码:候选码为整个属性组。
• 主属性与非主属性:
• 在R(U,F)中,包含在任一候选码中的属性称为主属性,不 包含在任一候选码中的属性称为非主属性。
EX
系名称 高级职称人数 教授 副教授 计算机系 6 10 信管系 3 5 电信系 4 8
系名称 教授 副教授 计算机系 6 10 信管系 3 5 电信系 4 8
EX
• 分量是否需要再分,与具体应用有关。如果用到 值的一部分,则需要进一步分割.如:
SDept → CRoom
2.外码
定义:若R(U,F)的属性(组)X(X属于U)是 另一个关系S的主码,则称X为R的外码。 例:SC中的Sno是Student关系的主码,Cno是 Course关系的主码,所以SC中的Sno和Cno是SC 表的外码。
5.2.2范式Normal Form
• 范式是对关系的不同数据依赖程度的要求。 • 通过模式分解将一个低级范式转换为若干个高级 范式的过程称作规范化。
SName Sdept 赵一 计算机 孙三 计算机 李四 信管 吴六 英语 郑七 英语
Sdept CRoom 计算机 A3 信管 A7 英语 A2
SName 赵一 赵一 孙三 李四 李四 吴六 郑七
CName Grade 数据库 90 C语言 87 数据库 92 Java 95 Oracle 78 数学 82 英语 70
S(SName ,Sdept ,CName,CRoom ,Grade)
依赖关系如下:
f → • (SName,CName) grade
•
f → SName Sdept
• (SName,CName) Sdept →
p
传递函数依赖
在R(U)中,如果 X→Y,Y→Z,且Y X,则称Z 传递依赖于X,记作X →Z
3.第三范式
定义:如果R(U,F)∈2NF,并且所有非主属性都 不传递依赖于主码,则R(U,F)∈3NF。 对关系模式S-C(Sno,Sdept,Croom),因为有: Sno→Sdept,Sdept→CRoom 因此有:Sno→CRoom 因此,不是3NF的关系模式。
判断分解后的两个关系模式是否满足2NF。
• 学生(Sno,Sdept,CRoom)关系中,候选码是Sno, 单个属性做候选码,不存在非主属性对于候选 码的部分依赖,满足2NF。 f → • 选课(Sno,Cno,grade)中,(Sno,Cno) grade, 也不存在非主属性对于候选码的部分依赖,满 足2NF。
而在关系数据库中讨论函数或函数依赖关注的是语义 上的关系。 比如: 国家=f(城市)
源自文库
如果“城市”是自变量X,“省”是因变量或函数值Y。 则把X函数决定Y,或Y函数依赖于X表示为: X→Y
关系模式
• 一个关系的属性名的集合R(A1,A2,……An)叫 做关系模式。其中:R为关系名,A1,A2,…, An为属性名(i=1,2,……n)。 • 关系模式是关系的框架,或者称为表框架,指 出了关系由哪些属性构成,是对关系结构的描 述。