关系数据库设计理论-->3NF

函数依赖<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.函数依赖定义

A-> B,即  “ A函数决定B ”   ,A称为决定因素。

2.关系的键码、超键码

属性函数决定关系R的所有其它属性,并且该属性的任何真子集都不能函数决定R的所有其它属性,则属性是键码。 键码必须是最小的。

包含键码的属性集称为 “ 超键码 ” 。每个键码都是超键码。

例题: 已知关系R包含属性{A,B,C,D},R的键码为{A,B},则下面的选项哪1个是R

的超键码(  )。

A.{A}    B.{C,D}   C.{A,B,C,D}  D.{B,C,D}

答案:C

3.几个概念

平凡依赖:如果B是A的子集,则称该依赖为平凡的。

非平凡依赖:如果B中至少有一个属性不在A中,则称该依赖为非平凡的。

完全非平凡依赖:如果B中没有一个属性在A中,则称该依赖为完全非平凡的。

平凡依赖规则:函数依赖A1A2 … An → B1B2 … Bm等价于A1A2 … An → C1C2 … Ck,其中   C是B的子集,但不在A中出现。称这个规则为 “ 平凡依赖规则 ” 。

4.传递规则

如果A1A2 … An → B1B2 … Bm和B1B2 … Bm → C1C2 … Ck,在关系R中成立,则A1A2 … An → C1C2 … Ck在R中也成立。这个规则就称为传递规则。

 

例题: 现给定一个关系R的实例如下表,则可能是函数依赖的是( B ).

Fl

F2

R

F。

F5

李华

20020330

H

1

lO

金谦

20020330

0

1

5

李华

20020218

O  ·

3

15

吕宋

200201]5

H

2

5

顾小华

20020218

O

1

20

A.F1 →F2            B.F1F2→F5

C.F3 F4→F5        D.F2F3→F4

 

学习要点二

1. 函数依赖集:假设{A1,A2, … ,An}是属性集,记为A,S是函数依赖集。

属性集A在依赖集S下的封闭集是这样的属性集X,它使得满足依赖集S中的所有依赖的每个关系也都满足A → X。

A1A2 … An → X是蕴含于S中的函数依赖。

2.封闭集:

对于给定的函数依赖集S,属性集A函数决定的属性的集合就是属性集A在依赖集S下的封闭集。

学会计算某属性集的封闭集,可以根据给定的函数依赖集推导蕴含于该依赖集的其他函数依赖。

例题: 假设关系模式为R(A,B,C,D),函数依赖为A→B,B→C和B→D。

(1)求蕴含于给定函数依赖的所有非平凡函数依赖;

(2)求R的所有键码;

(3)求R的所有超码(不包括键码)。

参考答案:

(1)先求各种属性组合的封闭集,再从中找出新的函数依赖。

A+=ABCD         B+=BCD   C+=C   D+=D

A→C,A→D    (2)

AB+==ABCD  AC+==ABCD    AD+=ABCD  BC+=BCD   BD+=BCD

CD+=CD

AB→C,AB→D AC→B,AC→D  AD→B,AD→C  BC→D  BD→C

ABC+=ABCD  ABD+=ABCD   BCD+=BCD

ABC→D  ABD→C

ABCD+=ABCD

蕴含于给定函数依赖的非平凡函数依赖共12个。

(2)A为键码。

(3)AB,AC,AD,ABC,ABD,ABCD为超键码。

学习要点三

1. 几个概念

l         主属性:键码所在的属性称为主属性。

l         主属性:键码所在的属性称为主属性。

l         非主属性:键码属性以外的属性称为非主属性。

l         非主属性:键码属性以外的属性称为非主属性。

l         完全依赖:对于函数依赖W → A,如果存在V是W的真子集而函数依赖

V → A成立,则称A部分依赖于W;若不存在这种V,则称A完全依赖于W。

l         传递依赖

对于函数依赖X → Y,如果X不函数依赖于Y,而函数依赖Y → Z成立,则称Z对X传递依赖。

 

学习要点四

1.第一范式(1NF)

如果一个关系模式R的所有属性都是不可分的基本数据项,则这个关系属于第一范式。

2.第二范式(2NF)

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

例题:学生关系模式Student(Sno,Sname,Sdept,Mname,Cname,Grade)。

•该关系模式存在如下部分依赖:

Sno,Cname → Sname,Sdept,Mname

不满足 “ 每个非主属性都完全函数依赖于键码 ” 的条件。学生关系模式不属于第二范式。

3.第三范式(3NF)

若关系模式R属于第一范式,且每个非主属性都不传递依赖于键码,则R属于第三范式。

4.BC范式(BCNF)

若关系模式R属于第一范式,且每个属性都不传递依赖于键码,则R属于BC范式。

BC范式的条件表述:

l         每个非平凡依赖的左边必须包含键码;每个决定因素必须包含键码。

l         BC范式既检查非主属性,又检查主属性。

例题: 写出3个关系模式分别满足:

(1)是1NF,不是2NF;

(2)是2NF,不是3NF;

(3)是3NF,也是BCNF。

各用两句话分别说明所写的关系模式是前者,不是(或也是)后者。

答:(1)学生选课(学号,姓名,课程号,成绩)

属性不可分,是1NF;存在非主属性对键码的部分依赖(学号,课程号→姓名),不

是2NF。

(2)学生(学号,姓名,系别,系主任)

键码为单属性,不存在部分依赖,是2NF;存在非主属性对键码的传递依赖(学号→

姓名,系别;系别≯学号;系别→系主任;学号传递→系主任),不是3NF。

(3)学生(学号,姓名,年龄)

非主属性(姓名,年龄)对键码不存在部分依赖和传递依赖,是3NF;

主属性(学号)对键码也不存在部分依赖和传递依赖,是BCNF。

 

学习要点五

1.模式分解的三种方法

1)部分依赖归子集;完全依赖随键码。

关系模式 “ 升级 ” 第二范式:消除非主属性对键码的部分依赖。

解决的办法:对原有模式进行分解。

分解的关键:找出对键码部分依赖的非主属性所依赖的键码的真子集,把这个真子集与所有相应的非主属性组合成一个新的模式;对键码完全依赖的所有非主属性则与键码组合成另一个新模式。

2)基本依赖为基础,中间属性作桥梁

关系模式 “ 升级 ” 第三范式:消除非主属性对键码的传递依赖。

解决的办法:以构成传递链的两个基本依赖为基础形成两个新的模式,切断传递链,保持两个基本依赖,有中间属性作为桥梁,跨接两个新的模式,实现无损的自然连接。

3)找违例自成一体,舍其右全集归一

关系模式 “ 升级 ” BC范式:消除非主属性对键码的部分依赖和传递依赖,消除  主属性对键码的部分依赖和传递依赖。

解决的办法:对关系R(A,B,C),若存在BCNF的违例A → B ,则R分解为

R1(A,B)  R2(A,C), R1,R2则为BCNF.

例题: 关系模式为R(A,B,C,D),函数依赖为AB→C,C→D和D→A。

(1)找出所有违背BCNF的函数依赖。提示:应该考虑不在给定的依赖集但蕴含于

其中的依赖;

(2)关系模式R分解成属于BCNF的关系模式的集合。

参考答案:

(1)参看主教材P.122例6.1,共有14个非平凡函数依赖(包括已知的和导出的)

C→A,C→D,D→A

AB→C,AB→D,AC→D,BC→A,BC→D,BD→A,BD→C,CD→A

ABC→D,ABD→C,BCD→A

共有3个键码:AB,BC,BD

其决定因素不包含键码的函数依赖即为BC范式的违例,如下所示:

C→A,C→D,D→A,AC→D,CD→A

(2)以违例C→D为基础进行分解:

Rl(C,D),R2(A,B,C)

R1属于BC范式。

R2有函数依赖C→A,AB→C,BC→A

AB+=ABC.BC+=ABC

AB,BC均为键码。

函数依赖C→A为BC范式违例。于是R2又可分解为:

R3(A,C),R4(B,C)

至此,R分解为R1,R3,R4,均属于BC范式

关系数据库设计理论--3NF相关推荐

  1. 关系数据库设计理论(函数依赖、异常、范式)、ER图

    1. 关系数据库设计理论 1.1 函数依赖 记 A->B 表示 A 函数决定 B,也可以说 B 函数依赖于 A. 如果 {A1,A2,... ,An} 是关系的一个或多个属性的集合,该集合函数决 ...

  2. 【数据库】概念设计、逻辑设计、关系数据库设计理论

    一:概念设计: ER模型:实体属性和联系 实体及实体集: 实体的属性:属性和实体都是名词: 需求–>ER图: 属性无法再分,实体可由多个属性组成. 同一类联系: 实体与派生实体间的基本联系: 如 ...

  3. 关系数据库规范化理论(关系数据库设计理论)

    学习网址 :中国大学MOOC https://www.icourse163.org/spoc/learn/ZZULI-1207222804?tid=1450316458#/learn/content? ...

  4. 数据库原理及设计 第六章 关系数据库设计理论 思维导图

  5. 二、数据库原理-设计理论

    第一章 关系数据库设计理论   第一节  完整性 关系完整性是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则.完整性通常包括实体完整性,参照完整性和用户定义完整性. 一.实体完 ...

  6. 数据库系统概念总结:第八章 关系数据库设计

    周末无事水文章,期末备考的总结资料 第八章 关系数据库设计 8.1 好的关系设计的特点 数据库逻辑设计主要解决的问题: –关系数据库应该组织成几个关系模式 –关系模式中有包括哪些属性 从不良的设计模式 ...

  7. 数据库系统概念(机械工业出版社,第六版)复习——第八章:关系数据库设计

    第八章:关系数据库设计 第一范式(1NF) 如果某个域的元素被认为是不可再分的单元,那么这个域就是原子的(atomic).如果一个关系模式R的所有的属性域都是原子的,我们称关系模式R属于第一范式(fi ...

  8. 【数据库学习笔记】Day06 - 关系数据库规范化理论

    [数据库学习笔记]Day06 - 关系数据库规范化理论 目录 一.关系数据库中存在的数据冗余问题 二.函数依赖 三.关系规范化 一.关系数据库中存在的数据冗余问题: 以学生信息表为例: 该关系模式存在 ...

  9. 1-5:关系数据库设计

    好的关系设计的特点 可从E-R设计生成一组关系模式 设计选择:更大的模式 假定用以下这个模式代替instructor模式和department模式 inst_dept(ID, name, salary ...

  10. 【数据库原理及应用】经典题库附答案(14章全)——第六章:关系数据库设计过程

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

最新文章

  1. HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求。...
  2. vs2005格式化代码
  3. 隐藏了十年的Sudo漏洞爆出:无需密码就能获取root权限
  4. SQL Server 2008 性能测试和调优
  5. java注解 sql_mybatis中注解映射SQL示例代码
  6. 非Java专家的APM:什么泄漏?
  7. java书面_Java程序猿的书面采访String3
  8. python 编程环境 微信_微信开发之新浪SAE上配置WeRoBot微信机器人,python,Mac环境...
  9. 【OpenCV】目标检测
  10. C++之vs2017导出动态库失败
  11. 最新版计算机知识超全题库,超全的计算机基础知识题库.doc
  12. tp-801bs单板微型计算机,线切割应知应会
  13. TOEFL资料 280多个
  14. 大华设备无法注册EasyGBS国标视频平台,是什么原因?
  15. 跨境电商与国内电商运营得区别
  16. mysql安装时初始密码错误_踩坑之MySQL安装及修改初始密码
  17. 普通学历,大一大二要不要打ACM?
  18. Python如何使用Continue语句?用法示例
  19. Verilog:【7】超详细WaveDrom教程,时序图绘制利器,看这一篇就够了。
  20. PHPSTUDY端口被占用解决方法

热门文章

  1. Android 网络学习之获取服务器文本文件
  2. Linux内核入门(七)—— 必要的编译知识
  3. TCP UDP 本地套接字 网络套接字
  4. PowerPC 汇编
  5. 1090 Highest Price in Supply Chain(25 分)
  6. 距离之和最小 V3 51Nod - 1110(带权中位数或者爆搜)
  7. 用matplotlib中的scatter方法画散点图
  8. awk字符串匹配与传参
  9. 【数据结构】可以逃课其它字符串算法的字符串哈希算法
  10. 树莓派的命令和linux一样吗,常用的linux命令