七、函数依赖及范式
函数依赖基本概念:
  • 函数依赖:FD(function dependency),设有关系模式R(U),X,Y是U的子集, r是R的任一具体关系,如果对r的任意两个元组t 1,t 2,由t 1[X]=t 2[X]导致t 1[Y]=t 2[Y], 则称X函数决定Y,或Y函数依赖于X,记为X→Y。X→Y为模式R的一个函数依赖。
  • 部分函数依赖:即局部依赖,对于一个函数依赖W→A,如果存在X W(X包含于W)有X→A成立, 那么称W→A是局部依赖,否则称W→A为 完全函数依赖
  • 传递依赖:在关系模式中,如果Y→X,X→A,且X Y(X不决定Y), A X(A不属于X),那么称Y→A是传递依赖。
  • 函数依赖集F的闭包F+: 被逻辑蕴涵的函数依赖的全体构成的集合,称为F的闭包(closure),记为F +
  • 最小依赖集:如果函数集合F满足以下三个条件 (1)F中每个函数依赖的右部都是单属性; (2)F中的任一函数依赖X→A,其F-{X→A}与F是不等价的;(3)F中的任一函数依赖X→A,Z为X的子集,(F-{X→A})∪{Z→A}与F不等价。则称F为最小函数依赖集合,记为Fmin。
函数依赖的公理系统:
    设有关系模式R(U),X,Y,Z,W均是U的子集,F是R上只涉及到U中属性的函数依赖集,推理规则如下:
  • 自反律:如果Y X U,则X→Y在R上成立。
  • 增广律:如果X→Y为F所蕴涵,Z U,则XZ→YZ在R上成立。(XZ表示X∪Z,下同)
  • 传递律:如果X→Y和Y→Z在R上成立,则X→Z在R上成立。
    以上三条为Armstrong公理系统
  • 合并律:如果X→Y和X→Z成立,那么X→YZ成立。
  • 伪传递律:如果X→Y和WY→Z成立,那么WX→Z成立。
  • 分解律:如果X→Y和Z Y成立,那么X→Z成立。
    这三条为引理   
注意:
  • 函数依赖推理规则系统(自反律、增广律和传递律)是完备的。
  • 由自反律所得到的函数依赖均是平凡的函数依赖。

四种范式的含义:
  • 如果某个数据库模式都是第一范式的,则称该数据库模式是属于 第一范式的数据库模式。
  • 如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键,则称为 第二范式 模式
  • 如果关系模式R是第二范式,且每个非主属性都不传递依赖于R的候选键,则称R为 第三范式 模式
  • 若关系模式R是第一范式,且每个属性都不传递依赖于R的候选键。这种关系模式就是 BCNF 模式
四种范式,可以发现它们之间存在如下关系:
        BCNF3NF2NF1NF

1NF
消去非主属性对键的部分函数依赖
2NF
消去非主属性对键的传递函数依赖
3NF
消去主属性对键的传递函数依赖
BCNF
 范式举例
1. 设有关系模型R(A,B,C,D,E),F是R上成立的函数依赖集,F={ABC→DE,BC→D,D→E}, 试问R达到第几范式,并说明理由。
 
    R属于1NF。 由于候选键是ABC。而非主属性D和E部分函数依赖于候选键ABC,因此R不是2NF,只能是1NF。
 
2. 数据模型分析,关系模型R(U,F)
U=ABCDEG,F={AD→E,AC→E,CB→G,BCD→AG,BD→A,AB→G,A→C}

(1) 求此模型的最小函数依赖集。
(2) 求出关系模式的候选码。
(3) 此关系模型最高属于哪级范式。
(4) 将此模型按照模式分解的要求分解为3NF。

依照题意,得出:
(1)通过最小集求法:
  • 分解函数依赖的右部, F={AD→E,AC→E,BC→G,BCD→A,BCD→G,BD→A,AB→G,A→C}
  • 消去左边的冗余属性:F={A→E,A→E,BC→G,BD→A,BC→G,BD→A,AB→G,A→C}
  • 消去冗余的函数依赖:Fm={A→E,BC→G,BD→A,A→C}
                  也可以为:  Fm={A→E,AB→G,BD→A,A→C}
(2)候选码:BD
(3)R中每一个非主属性完全函数依赖于R的候选键BD;但C,G,E都传递依赖于R的候选键BD,也就是说,R满足2NF的要求,而不满足3NF的要求。此关系模型最高属于2NF。
(4)依据算法4.4
      R1:U1=ABD F1={BD→A}
      R2:U2=BCG F2={BC→G}
      R3:U3=ACE F3={A→C,A→E} 
模式分解
模式分解的三个准则:
  • 分解具有“无损连接性”
  • 分解要“保持函数依赖”
  • 分解既要“保持函数依赖”,又要具有“无损连接性”
 模式分解举例
模式分解
试分析下列分解是否具有无损联接和保持函数依赖的特点:
设R(ABC),F1={A→B} 在R上成立,ρ1={AB,AC}。

首先,检查是否具有无损联接特点:
第1种解法--算法4.2:
 
A
B
C
AB
a1
a2
b13
AC
a1
b22
a3
A
B
C
a1
a2
b13
a1
a2
a3
(1) 构造表
(2)根据A→B进行处理

结果第二行全是a行,因 此分解是无损联接分解

第2种解法:(定理4.8)
  R1(AB)∩R2(AC)=A
  R2- R1=B
  ∵A→B, ∴该分解是无损联接分解。

然后,检查分解是否保持函数依赖
  π R1(F1)={A→B,以及按自反率推出的一些函数依赖}
  π R2(F1)={按自反率推出的一些函数依赖}
   F1被π R1(F1)所蕴涵, 所以该分解保持函数依赖。 
模式分解与范式的关系
如果关系模式没有达到所需的范式,则需要模式分解
模式分解的几个重要事实:
  • 若只要求分解具有“无损连接性”,一定可以达到4NF;
  • 若要求分解要“保持函数依赖”,可以达到3NF,但不一定能达到BCNF;
  • 若要求分解既要“保持函数依赖”,又要具有“无损连接性”,可以达到3NF,但不一定能达到BCNF;
函数 职场 休闲

0

收藏

上一篇:游戏开发要素设计 下一篇:数据库设计三大范式应用实例剖析
数据库原理重点提示之函数依赖及范式_第2张图片
aoxiao

14篇文章,6W+人气,0粉丝

数据库原理重点提示之函数依赖及范式_第3张图片

Ctrl+Enter 发布

发布

取消

推荐专栏更多

数据库原理重点提示之函数依赖及范式_第4张图片
十年老兵教你练一套正宗的MySQL降龙十八掌

MySQL全通晓

共18章 | 张甦

¥51.00 419人订阅
订   阅
数据库原理重点提示之函数依赖及范式_第5张图片
负载均衡高手炼成记

高并发架构之路

共15章 | sery

¥51.00 561人订阅
订   阅

猜你喜欢

我的友情链接 “文字对战游戏”开发实例 李彦宏:未来20年人们对手机的依赖度会越来越低! python的排序函数sort,sorted在列表排序和字典排序中的应用详解和举例 Hystrix 分布式系统限流、降级、熔断框架 nginx 并发数问题思考:worker_connections,worker_processes与 max clients 出现身份验证错误,要求的函数不受支持(这可能是由于CredSSP加密Oracle修正) maven scope含义的说明 shell 自定义函数 控制反转(IoC)与依赖注入(DI) C++ 类访问控制(public/protected/private) Python之sys模块小探 PostgreSQL VFD机制 支付结算系统如何应对高并发、热点账户等问题 PostgreSQL WAL解析:构建WAL记录准备 playbook自动安装kafka集群 PostgreSQL的B-tree索引 PostgreSQL pg_rewind实例--could not find previous WA redis geo 地理位置系应用战案例 PostgreSQL逻辑备份pg_dump使用及其原理解析
数据库原理重点提示之函数依赖及范式_第6张图片
数据库原理重点提示之函数依赖及范式_第7张图片

扫一扫,领取大礼包

0

分享
数据库原理重点提示之函数依赖及范式_第8张图片
aoxiao
数据库原理重点提示之函数依赖及范式_第9张图片