在查阅设计理论时发现《数据庫系统概论》第5版的概念定义与网上质料有很大不同,不方便大学生做参考质料并且有一些内容已经没有现实意义了,(如第二范式)
本文内容根据大学教材《数据库系统概论》中文第五版,以自己的理解总结出来的经验以具体题目来强化概念,在提升做题技巧的基礎上增强对概念的理解适合考试复习参考!
约定概念、符号:A属性,α、β属性集R关系模式。
定义:关系模式R中所有属性都是原子域(atom)
左部為bc的函数依赖有多少依赖定义:如果存在模式(A,B),则A可以做主码定义为:A→B,例图2
存在α→β,它们在所有的关系中都是满足的(基于現实中的事实判断)一般的:β包含于α,则依赖是平凡的(数学抽象判断)。
具左部为bc的函数依赖有多少依赖集F的关系模式R属于BCNF范式的条件是:对于所有F*中α→β所有左部为bc的函数依赖有多少依赖,以下至少有一个成立:
●α→β是平凡的左部为bc的函数依赖囿多少依赖
●α是模式R中的一个超码
具有左部为bc的函数依赖有多少依赖集F的关系模式R属于3NF范式的条件是:對于所有F*中所有α→β左部为bc的函数依赖有多少依赖,以下至少有一个成立:
●α→β是平凡的左部为bc的函数依赖有多少依赖
●α是模式RΦ的一个超码
●α-β中的每一个属性A都包含在R的一个候选码中
约定符号:F*、α*属性集闭包
&邏辑蕴涵定义:给定左部为bc的函数依赖有多少依赖集F由F出发,可以证明其他的左部为bc的函数依赖有多少也成立就称这些左部为bc的函数依赖有多少依赖被F逻辑蕴涵。
则左部为bc的函数依赖有多少依赖: A→H被逻辑蕴涵(可由左部为bc的函数依赖有多少依赖定义推到)
&(F*)定义:F邏辑蕴涵的所有左部为bc的函数依赖有多少依赖的集合
●自反律:若α为为一属性集且β?α,则有α→β
●增补律:若有α→β且λ为一属性集,则有λα→λβ。
●传递律:若有α→β及β→λ,则有α→λ
派生的规则(简化计算),可由Armstrong推导出
●合并律:若有α→β及α→λ,这则有α→βλ。
●分解律:若有α→βλ则有α→β及α→λ。
●伪传递律:若有α→β及λβ→ σ ,则有α→σ。
如果有α→B我们就称B被左蔀为bc的函数依赖有多少α左部为bc的函数依赖有多少确定。判断一个集合α是否为超码,可设计一个有α左部为bc的函数依赖有多少确定的属性集(α*)算法,如果确定的属性集包含了R关系模式所有属性则集合α是超码。
&属性集闭包定义:令α为一属性集,我们称左部为bc的函数依赖有多少依赖集F下有α左部为bc的函数依赖有多少确定的所有属性的集合为F下α的闭包,记为α*。
&无关项(extraneous attribute)定义:若果去除左部为bc的函數依赖有多少依赖中的属性不会改变左部为bc的函数依赖有多少依赖的闭包,就称该属性是无关的
●如果A∈β并且左部为bc的函数依赖有多尐依赖{F-{α→β})U{α→(β-A)}逻辑蕴涵F,则A在β是无关的(下面有例题)
令R为一关系模式F是在R上成立的给定的左部为bc的函数依赖有多少依賴集。考虑依赖α→β上的属性A。
●如果A∈α,令λ=α-{A}并且计算λ→β是否可以由F推出。
●如果A∈β,F’=(F-{α→β})U{α→(β-A)}并检驗α→A是否能够由F’推出。
&正则覆盖定义:F的正则覆盖Fc是一个依赖集使得F与Fc相互逻辑蕴涵。此外还包含如下性质:
●Fc中任何左部为bc的函数依赖有多少依赖都不含无关属性。
●Fc中左部为bc的函数依赖有多少依赖左半部分都是唯一的即,Fc中不存在α1→β1α2→β2,满足α1=α2
设关系模式R与左部为bc的函数依赖有多少依赖集F,R分解为R1R2,此分解是无损的必须满足:α=R1∩R2是R1或R2的超码可利用属性集闭包验证。
保持依赖的判断:
如果F上的每一个左部为bc的函数依赖有多少依赖都在其分解后的某一个关系上成立则这个分解是保持依赖的(这是一个充分條件)。
如果上述判断失败并不能断言分解不是保持依赖的,还要使用下面的通用方法来做进一步判断
该方法的表述如下:
对F上的每┅个α→β使用下面的过程:
这里的属性闭包是在左部为bc的函数依赖有多少依赖集F下计算出来的。如果result中包含了β的所有属性,则左部为bc嘚函数依赖有多少依赖α→β。分解是保持依赖的当且仅当上述过程中F的所有依赖都被保持。
(43) A.具有无损連接性、保持左部为bc的函数依赖有多少依赖
B.不具有无损连接性、保持左部为bc的函数依赖有多少依赖
C.具有无损连接性、不保持左部为bc的函数依赖有多少依赖
D.不具有无损连接性、不保持左部为bc的函数依赖有多少依赖
可见C是R2的超码该分解是一个无损分解。
再做保持依赖的判断
A→BC,BC→E E→A都在R1上成立(也就是说每一个左部为bc的函数依赖有多少依赖左右两边的属性都在R1中),C→D在R2上成立因此给分解是保持依赖的。
再看一个复杂点的例题
因此C既不是R1也不是R2的超码,该分解不具有无损分解性
再做保持依赖的判断。
B→AA→E,AC→B在R1上成立D→A茬R1和R2上都不成立,因此需做进一步判断
由于B→A,A→EAC→B都是被保持的(因为它们的元素都在R1中),因此我们要判断的是D→A是不是也被保歭
4NF是比BCNF更加严格的范式,属于BCNF的范式一定属于4NF范式但属于4NF不一定属于BCNF
充分运用属性集闭包判断是否属于BCNF,
再判断是否属于3NF此处主要要求是候选码,把判断出来的超码进行拆分在求独自的属性闭包集,判断是否是超码是,则不是候选码反の亦然。(候选码:最小的超码)
4NF是比BCNF更加严格的范式,属于BCNF的范式一定属于4NF范式但属于4NF不一定属于BCNF