5.4 关系模式的范式

本文详细介绍了数据库的范式理论,包括第一范式、第二范式、第三范式和BCNF,以及它们的定义和例子。通过实例解析了如何进行关系模式的分解以满足不同范式,强调了范式在消除数据冗余和保证数据一致性中的作用。同时,提出了好的数据库模式设计应遵循的原则,包括无损分解、保持依赖、分离性和最小冗余性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一范式(1NF):关系模式R的每个关系r的属性值都是不可分的原子值。

满足1NF的关系称为规范化的关系,否则称为非规范化的关系。

第二范式(2NF):关系模式R是1NF,且每个非主属性完全函数依赖于候选键。

如果A是关系模式R的候选键中的属性,则为主属性,否则为非主属性。

例子:

设关系模式R(SNO,CNO,GRADE, TNAME, TADDR)TADDR表教师地址。

(SNO, CNO)表示R的候选键。

R上存在两个FD:

(SNO,CNO)→ TNAME,TADDR

(CNO)→ TNAME,TADDR

第一个FD存在局部依赖,因此不是2NF,如果有100个学生选修同一门课,任课老师的信息就会重复100次。

可分解为R1(CNO,TNAME,TADDR)和R2(SNO,CNO,GRADE)。

R1和R2都是2NF。

完全依赖、局部依赖:对于FD W→A,如果存在X⊂W,有X→A成立,那么称W→A是局部依赖,否则称为完全依赖。

完全依赖也称为“左部不可约依赖”。

传递依赖:如果X→Y,Y→A,且Y ↛ X 和A  Y,那么称X→A是传递依赖。

局部依赖的存在必定蕴含着传递依赖的存在,也就是说,R如果是3NF模式,也是2NF模式。(由局部依赖定义:W→X,X→A W→A

我的理解是,不存在传递依赖就不存在局部依赖!

第三范式(3NF):关系模式R是1NF。且每个非主属性都不传递依赖于候选键。

3NF等价定义:设F是关系模式的FD集,如果对于F中每个非平凡的FD X→Y,都有X是R的超键,或Y的每个属性都是主属性。

例子:

上述R1(CNO,TNAME,TADDR)为2NF,如果R1中存在CNO→TNAME,

TNAME→TADDR那么R1不是3NF,如果有一个教师开设了5门课,那么该教师的信息也会重复五次。

如果将R1分解为R11(CNO,TNAME),R12(TNAME,TADDR)两者都为3NF。

BCNF(Boyce and Codd):如果关系模式R是1NF,每个属性不传递依赖于R的候选键。

BCNF等价定义:设F是关系模式的FD集,如果对于F中每个非平凡的FD X→Y,都有X是R的超键。

例子:

设关系模式R(BNO, BNAME,AUTHOR)有两个FD:

BNO→BNAME,(AUTHOR和BNAME)→ BNO。

因此R有关键码(BNO,AUTHOR)或(BNO,BNAME),因此R的属性都为主属性,R是3NF模式,但(AUTHOR和BNAME)→ BNAME,因此R不是BCNF模式。

可分解为(BNO,BNAME)和(BNO,AUTHOR)但这个分解会造成

(AUTHOR,BNAME)→BNO丢失。

范式的分解:

2NF的分解:

设关系模式(WXYZ),主键为WX, R上还存在FD X→Z (也就是WX→Z是一个局部依赖)。此时应把R分解为两个模式:

R1(XZ),主键是X;

R2(WXY),主键是WX,外键是X(REFERENCE R1);

利用外键和主键的连接可以从R1和R2重新得到R。

如果R1和R2还不是2NF,则重复上述过程,直到每个关系模式都是2NF为止。

3NF的分解:

1. 对于关系模式R和R上成立的FD集F,先求出F的最小依赖集,然后再把最小依赖集中哪些左部相同的FD用合并性合并起来。

2. 对最小依赖集中每个FD X→Y去构成一个模式XY

3. 在构成的模式集中,如果每个模式都不包含R的候选键,那么把候选键作为一个模式放入模式集中。

举个栗子:

设关系模式R(ABCDE), R的最小依赖集为{A→B,C→D}。从依赖集可知R的候选键为ACE

根据最小依赖集,可知ρ = {AB,CD},再加入由候选键组成的模式ACE,因此最后结果

ρ =  {AB,CD,ACE}

BCNF的分解:

对于关系模式R的分解ρ(初始ρ= {R}),如果ρ中有一个关系模式Ri相对于ΠRi(F)不是BCNF,由BCNF等价定义可知,Ri中存在一个非平凡的FD X → Y,有X不包含超键。此时把 Ri

分解成XY和Ri – Y两个模式。重复上述过程,一直到ρ中每一个模式都是BCNF。

这个方法能保证把R分解为ρ,但不一定能保证ρ保持FD。BCNF的例子说明了该情况。

一个好的模式设计方法应符合三条原则:

表达式:用无损分解和保持依赖来衡量。

分离性:只储存有直接联系的属性值,把有间接联系的属性放在不同的表中。在分解为BCNF模式集中,分离与依赖等价有时是不兼容的。

最小冗余性:最后分解的模式个数和模式中属性总数达到最少。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值