第五章 关系数据库设计理论

21
第第第 第第第第第第第第第 5.1 第第 5.2 第第第第 5.3 第第 5.4 第第第第第 4 NF

description

第五章 关系数据库设计理论. 5.1 引言. 5.2 函数依赖. 5.3 范式. 5.4 多值依赖和 4NF. 描述一个客观事实的一组数据重复出现在一个关系中,造 成冗余数据,进而使得数据的存储发生异常现象。研究表明, 造成异常现象的原因,问题就出在关系模式的属性组合上。什 么样的关系模式才不会出现数据的异常现象,这就是关系模式 的规范化设计要解决的问题,满足一定规范化程度的关系模式 才是合理需要的关系模式。. 5.1 关系模式的设计问题. 5.1.1 异常问题. 指数据的冗余现象、修改异常、插入异常、删除异常。. 存在异常问题的关系实例. - PowerPoint PPT Presentation

Transcript of 第五章 关系数据库设计理论

Page 1: 第五章  关系数据库设计理论

第五章 关系数据库设计理论5.1 引言

5.2 函数依赖

5.3 范式

5.4 多值依赖和4NF

Page 2: 第五章  关系数据库设计理论

5.1 关系模式的设计问题5.1.1 异常问题

描述一个客观事实的一组数据重复出现在一个关系中,造成冗余数据,进而使得数据的存储发生异常现象。研究表明,造成异常现象的原因,问题就出在关系模式的属性组合上。什么样的关系模式才不会出现数据的异常现象,这就是关系模式的规范化设计要解决的问题,满足一定规范化程度的关系模式才是合理需要的关系模式。

指数据的冗余现象、修改异常、插入异常、删除异常。

Page 3: 第五章  关系数据库设计理论

isbn Title Page type Price pressName author

7-04-001968.xo.719 概率论与数理统计 403 数学 5.80 高教出版社 盛骤

7-04-001968.xo.719 概率论与数理统计 403 数学 5.80 高教出版社 谢世干

7-04-001968.xo.719 概率论与数理统计 403 数学 5.80 高教出版社 潘承义

7-111.06887-4 可靠性模型与应用 270 数学 19.00 机械出版社 蒋仁言

7-111.06887-4 可靠性模型与应用 270 文学 19.00 机械出版社 左明健

7-5327-1224.91.717 基督山伯爵 1248 文学 18.00 译文出版社 大仲马

7-5327-1224.91.321 三个火枪手 982 文学 16.70 译文出版社 大仲马

7-5327-0924.81.489 乱世佳人 1320 文学 16.10 译文出版社 米切尔

7-200-02999-8 王子与贫儿 255 文学 13.00 北京出版社 马克 . 土温

7-5063-0281-01.280 金盏花 250 文学 5.20 作家出版社 琼瑶

7-5063-0149-01-148 月朦胧.鸟朦胧 234 文学 4.90 作家出版社 琼瑶

7-5063-0513-51.512 碧云天 288 文学 4.30 作家出版社 琼瑶

存在异常问题的关系实例

返回

Page 4: 第五章  关系数据库设计理论

5.2 函数依赖

5.2.1 函数依赖的定义

元组中的数据之间存在各种数据依赖现象,其中一种是函数依赖。不同形式的函数依赖将揭示出不同的数据异常现象。

设关系模式 R 有属性集 U , X 、 Y 是 U 的子集, t 、 s 是 R 的实例中的任意两个元组, t[X] 、 t[Y] 、 s[X] 、 s[Y] 分别表示对应元组在属性子集上的取 值, 如果: t[X]=s[X] , 有: t[Y]=s[Y] , 则称: Y 函数依赖于 X ,或 X 函数决定 Y 简记为: X→Y ( 可用 X→Y 表示没有依赖关系 )

例: Book(isbn,title,page,type,price,pressName,authorName) 有: isbn→title isbn→page isbn→type isbn→price isbn→pressName isbn→authorName

Page 5: 第五章  关系数据库设计理论

5.2.2 函数依赖和键码

1 .超键码关系 R 有属性集 {A1,A2,….An,B1,B2,….Bm)如果: A1A2….An → B1B2….Bm 则: A1A2….An 为 R 的超键码。 且: A1A2….AnBi A1A2,….AnBiBj …………………….

A1A2….AnBiBj….Bn 皆为 R 的超键码。其中: n,m≥1 的整数 , i=0 ~ n , j=0 ~ m , i≠j

2 .键码关系 R 的属性集合: A1A2….An → B1B2….BmA1A2….An 的真子集 T : T → B1B2….Bm则: A1A2….An 为 R 的键码。

Page 6: 第五章  关系数据库设计理论

5.2.3 逻辑蕴含 关系 R 有函数依赖集 F 成立,另一个函数依赖集 T 也成立,若满足 F 的关系实例也满足 T ,则称 F 蕴含于 T 。

例: R(A,B,C) 有: A→B, B→C , 则: A→C 中 把 A→B, B→C 记为 F , 把 A→C 记为 T 。

5.2.4 函数依赖的推理规则 判断函数依赖的蕴含关系是判断关系模式规范化的基础,因此,由已知函数依赖集推导其他函数依赖集的推倒规则是判断关系模式是否规范的重要依据。

分解规则: 把一个 A1A2….An → B1B2….Bm 分解成一组: A1A2….An →B1 , A1A2….An →B2 ,… . , A1A2….An →Bm

合并规则:把一组函数依赖合并成一个函数依赖。平凡依赖: A1A2….An → B1B2….Bm 中 B 是 A 的子集。非平凡依赖: B 不完全在 A 中。完全非平凡依赖: B 完全不在 A 中。

Page 7: 第五章  关系数据库设计理论

平凡依赖规则: A1A2….An → B1B2….Bm 与 A1A2….An → C1C2….Cm 等价 其中: C 是 B 的子集,但 C 不在 A 中。

依据上面规则,函数依赖左边有右边的属性时,可删除右边。以简化函数依赖的形式。

Armstrong 公理: 自反律:如果 {B1,B2,….,Bm} {A∈ 1,A2,….,An} , 则 A1A2….An → B1B2….Bm 属平凡依赖。 增长律:如果 {B1,B2,….,Bm} ,任何的 C1,C2,….,Ck , 存在 A1A2….An C1C2….Ck→ B1B2….Bm C1C2….Ck 。 传递律: A1A2….An → B1B2….Bm , B1B2….Bm→ C1C2….Ck

则 A1A2….An→ C1C2….Ck

Page 8: 第五章  关系数据库设计理论

5.2.5 属性集的闭包

5.2.6 正则覆盖

判定一个具体的函数依赖是否蕴含于已知函数依赖集的方法。

在数据库中,对关系的操作必须保证原有函数依赖不变,这需要 DBMS 的检测处理,为减少检测开销,应使闭包不受改变的情况下对函数依赖集进行简化,正则覆盖就是简化使用的方法。

Page 9: 第五章  关系数据库设计理论

关系模式的分解

为消除关系模式 R 中的异常,把 R 中的属性分开,构成两个新的关系模型。

分解的两个准则: 1)关系模式分解后原有的信息不丢失。 称为无损连接。 2)分解后保持原有函数依赖仍然成立。

分解 R(A1,A2,….An), 成为: X(B1,B2,….Bm), Y(C1,C2,….,Ck )应满足的条件: 1) {A1,A2,….,An} ={B1,B2,….,Bm} {C∪ 1,C2,….,Ck }

2) π X( R) ={t[B1,B2,….Bm] t R}∣ ∈ 有相同元组。 3) π Y( R) ={t[C1,C2,….,Ck ] t R}∣ ∈ 无相同元组。

Page 10: 第五章  关系数据库设计理论

isbn Title Page type Price pressName author

7-04-001968.xo.719

概率论与数理统计 403 数学 5.80 高教出版社 盛骤

7-04-001968.xo.719

概率论与数理统计 403 数学 5.80 高教出版社 谢世干

7-04-001968.xo.719

概率论与数理统计 403 数学 5.80 高教出版社 潘承义

7-111.06887-4 可靠性模型与应用 270 数学 19.00

机械出版社 蒋仁言

7-111.06887-4 可靠性模型与应用 270 文学 19.00

机械出版社 左明健

7-5327-1224.91.717

基督山伯爵 1248 文学 18.00

译文出版社 大仲马

7-5327-1224.91.321

三个火枪手 982 文学 16.70

译文出版社 大仲马

7-5327-0924.81.489

乱世佳人 1320 文学 16.10

译文出版社 米切尔

7-200-02999-8 王子与贫儿 255 文学 13.00

北京出版社 马克 . 土温

7-5063-0281-01.280

金盏花 250 文学 5.20 作家出版社 琼瑶

7-5063-0149-01-148

月朦胧.鸟朦胧 234 文学 4.90 作家出版社 琼瑶

7-5063-0513-51.512

碧云天 288 文学 4.30 作家出版社 琼瑶

Book

分解: Book(isbn,title,page,type,price,pressName,author) 为: BookFirst(isbn,title,page,type,price,pressName) BookSecond(isbn,authorName)

Page 11: 第五章  关系数据库设计理论

isbn Title Page type Price pressName

7-04-001968.xo.719

概率论与数理统计 403 数学 5.80 高教出版社

7-111.06887-4 可靠性模型与应用 270 数学 19.00

机械出版社

7-5327-1224.91.717

基督山伯爵 1248 文学 18.00

译文出版社

7-5327-1224.91.321

三个火枪手 982 文学 16.70

译文出版社

7-5327-0924.81.489

乱世佳人 1320 文学 16.10

译文出版社

7-200-02999-8 王子与贫儿 255 文学 13.00

北京出版社

7-5063-0281-01.280

金盏花 250 文学 5.20 作家出版社

7-5063-0149-01-148

月朦胧.鸟朦胧 234 文学 4.90 作家出版社

7-5063-0513-51.512

碧云天 288 文学 4.30 作家出版社

BookFirst

Page 12: 第五章  关系数据库设计理论

isbn author

7-04-001968.xo.719 盛骤

7-04-001968.xo.719 谢世干

7-04-001968.xo.719 潘承义

7-111.06887-4 蒋仁言7-111.06887-4 左明健

7-5327-1224.91.717 大仲马

7-5327-1224.91.321 大仲马

7-5327-0924.81.489 米切尔

7-200-02999-8 马克 . 土温7-5063-0281-01.280 琼瑶

7-5063-0149-01-148 琼瑶

7-5063-0513-51.512 琼瑶

BookSecond

返回

Page 13: 第五章  关系数据库设计理论

5.3 关系模式的范式

关系模式的范式 NF( Normal Form)是衡量关系模式好坏的一种标准。目前已采用的 NF 标准有如下五个级别: 4NF BCNF 3NF 2NF 1NF

5.3.1 第一范式 1NF

关系 R 中的所有属性取值都是原子性的,称 R 的关系模式是 1NF 的。这是 DBMS 对关系模式的最低规范化要求。 属性取值是否是原子的,取决于对事实重要程度的决定。如: 属性 adress 若不重要,可取值一个大地方名,是原子性的; 若很重要,则取详值:省、市、区、街道、门牌号,这样 取值的属性是非原子性的。

Page 14: 第五章  关系数据库设计理论

5.3.2 第二范式 2NF

有 A1,A2,….,An →B 非平凡依赖存在, {A1,A2,….,An} 是关系 R 的键码 , B 是任意非键码,称这样的关系模式是 2NF 的。

如: Author(ID,name,birthplace,birthday,nowAge) ID→name birthplace birthday nowAge 其中的 birthday→nowAge 表明该关系模式存在传递依 赖,不是 3NF 的。

Page 15: 第五章  关系数据库设计理论

5.3.3 第三范式 3NF 关系模式的规范化程度并非越高越好,因为高规范化的模式可能是经多次分解后得到的。为恢复原模式的信息需连接这些模式,但这种连接可能出现原模式的函数依赖得不到保持的现象。 模式无法达到 BCNF 要求时,最好使其达到 3NF 条件要求。

有 A1,A2,….,An →B 非平凡依赖存在, {A1,A2,….,An} 或是关系 R的超键码,或 B 是某个键码的组成部分。这样的关系模式是 3NF 的。

例: 3NF 关系模式 bookStore(reader, store, manager) 合理存在的依赖: store → manager , reader manager → store 。模式的键码: {reader, manager} 、 {store, reader} ;不是 {store, manager} 或 单个的属性。由此可知 store → manager 是一个 BCNF违例。 依这个违例,分解 bookStore 成: {sotre, manager} {store, reader} 。 但发现再连接后不能保持原函数依赖 reader manager → store 。 为防止这种问题的出现,凡满足 3NF 的关系模式,不再对其分解。

Page 16: 第五章  关系数据库设计理论

5.3.4 BC 范式 BCNF

有 A1,A2,….,An →B 非平凡依赖存在, {A1,A2,….,An} 是关系 R 必然的超键码, 这样的关系模式是 BCNF 的。

如:关系 book 和 关系 bookFirst 都存在函数依赖: isbn→title page type price pressName

在 book(isbn, title, page, type, price, pressName, author) 中 由于键码是 {isbn, author} ,而函数依赖的左边 isbn 不是超键码, 这就违背了 BCNF 的条件,所以,关系模式 book 不是 BCNF 的。

在 bookFirst(isbn, title, page, type, price, pressName) 中 由于键码是 {isbn} ,而函数依赖的左边 isbn 是超键码,满足 BCNF 的条件,所以,关系模式 bookFirst 是 BCNF 的。

Page 17: 第五章  关系数据库设计理论

分解成 BCNF 模式的算法

1)找到一个违背 BCNF 条件的非平凡依赖,并在依赖的右边 划入 尽量多的依赖左边的属性。 2)分解原关系模式为属性重叠的两个关系模式,其中一个包含 违例中的所有属性,另一个包含违例中左边和未包含在右边 的所有属性。 3)判断关系模式是否是 BCNF 的,否则,继续分解。

如在关系 book (isbn, title, page, type, price, pressName, author) 中的函数依赖: isbn→title page type price pressName 是一个 BCNF 违例,其右边就包含了由 isbn 决定的所有属性。 把关系模式 book 分解成以下两个关系模式: bookFirst(isbn, title, page, type, price, pressName) bookSecond(isbn,author) 判断这两个分解后的关系模式都是 BCNF 的了。

Page 18: 第五章  关系数据库设计理论

分解成 BCNF 例: 有关系模式 book(isbn, title, price, press, director, directorAddress)的函数依赖: isbn→title price press press→director director→directorAddress 由于关系 book 的键码是 {isbn},所以后两个函数依赖都是 BCNF 违例。现选第一个违例进行分解: 用计算 press→director 的闭包的方法向右边增加尽量多的属性: {press} ={press, director, directorAddress}﹢ 根据函数依赖: press→director,directorAddress 分解原模式: {press, director, directorAddress} (1) {isbn, title, price, press} (2)(1) 中存在 director→directorAddress 而 director 不是超键码,因此 此函数依赖是 关系模式( 1)的 BCNF 违例 , (1) 不是 BCNF 的。(2) 是 BCNF 的。再对 (1) 进行分解,最终 book 模式分解为: {isbn, title, price, press} {press, director} {director, directorAddress} .

两个属性的关系模式一定是 BCNF 的。返回

Page 19: 第五章  关系数据库设计理论

5.4 多值依赖

5.4.1 多值依赖的概念

函数依赖的概念是帮助排除关系中存在冗余数据的元组。即使关系达到 3NF 或 BCNF ,数据冗余现象仍可能存在。 多值依赖不排除关系中存在某些元组,而是容许某些元组在关系中出现。

Name

City Street title

琼瑶 台北市 忠孝西路 365号

还珠格格

琼瑶 长沙市 湘春路 25号 还珠格格琼瑶 台北市 忠孝西路 365

号 月朦胧 · 鸟朦胧

琼瑶 长沙市 湘春路 25号 月朦胧 · 鸟朦胧

琼瑶 台北市 忠孝西路 365号

碧云天

琼瑶 长沙市 湘春路 25号 碧云天琼瑶 台北市 忠孝西路 365

号金盏花

琼瑶 长沙市 湘春路 25号 金盏花

在 author(name, city, street, title) 中元组数据重复,但无 BCNF违例,因所有四个属性组成关系的唯一键码。

多值依赖:A1,A2,….,An→→ B1,B2,….,Bm关系的元组在属于 A 的每个属性上取特定值,使属于 B 的属 name →→city street性取值的集合与既不属于 A 也不属于 B 的其它属性的取值的集合无关。

Page 20: 第五章  关系数据库设计理论

多值依赖的推理规则平凡依赖规则: 设 C=B+Ai i≤n , D B ∈ 如果 A1,A2,...,An→→ B1,B2,...,Bm 和 A1,A2,...,An→→ C1,C2,...,Ck 成立, 导致 A1,A2,...,An→→ D1,D2,...,Dr 成立。 传递依赖规则:

如果 A1,A2,...,An→→ B1,B2,...,Bm 和 B1,B2,...,Bm →→ C1,C2,...,Ck 成立, 则 A1,A2,...,An→→ C1,C2,...,Ck 也成立。

复制规则: A1,A2,...,An→ B1,B2,...,Bm 成立, A1,A2,...,An→→ B1,B2,...,Bm 也成立。互补规则: A1,A2,...,An→→ B1,B2,...,Bm 成立, A1,A2,...,An→→ C1,C2,...,Ck 也成立。 其中, C 不属于 A 和 B 的所有其他属性。

Page 21: 第五章  关系数据库设计理论

6.4.2 第四范式 4NF非平凡多值依赖: A1,A2,...,An→→ B1,B2,...,Bm

其中的 B都不在 A 中,且 R 的所有属性没全部包含在 A 和B 中。

4NF : A1,A2,...,An→→ B1,B2,...,Bm 是非平凡多值依赖,且 {A1,A2,...,An} 是超键码 ( 同 BCNF) ,这样的关系属于 4NF 关系。

name →→city street 非平凡多值依赖是一个 4NF违例。据此,分解原关系得: {name, city, sreet} {name, title} 两个模式。

类似 BCNF , 4NF 的分解步骤如下:

4NF 将消除 BCNF违例和非平凡多值依赖,最终消除多值依赖冗余。

1) 找到一个 4NF违例;2) 分解该关系模式,一个模式包含 A 和 B 中的属性,另一个 包含 A 中的属性以及既不属于 A 也不属于 B 的所有其他属性。

Name City street

琼瑶 台北 忠孝路

琼瑶 长沙 湘春路

name title

琼瑶 还珠格格琼瑶 月朦胧 . 鸟朦

胧琼瑶 碧云天琼瑶 金盏花

返回