复习提纲1

  • 格式:doc
  • 大小:136.50 KB
  • 文档页数:7

1 数据库系统的世界(概述)

什么是数据库

数据库管理系统

2.数据库建模

数据模型

信息模型(概念模型):E/R模型,ODL模型等

基本数据模型:层次模型,网状模型,关系模型等

实体/联系图

属性attribute:

联系relationship:

对约束建模

有哪些重要的约束种类?

键key

单值single-value 参照完整性reference integrity

关系数据模型

关系的等价表示法

改变列次序,不改变关系的含义。

改变行次序,不改变关系的含义。

从E/R图到关系设计

实体集到关系的转换

E/R联系到关系的转换

处理弱实体集

函数依赖

函数依赖是如何定义的?

若关系R的任意两个元组在属性A1、A2、…、An上一致(即有相同分量值),则这两个元组在属性B上也一致,则称属性A1A2…An函数决定B,或称B函数依赖于A1A2…An。

判断函数依赖的三种情形

如果任意两元组在属性A上一致,在B上也一致,则有A → B成立。

如果任意两元组在属性A上一致,在B上不一致,则A → B不成立。

如果任意两元组在属性A上不可能一致,则不管在B上是否一致,有A → B成立。

关系的键

如何用函数依赖定义键key?

定义:对于关系R,若属性集合{A1,A2,…,An}满足下列条件,则该属性集合是R的一个键key:

1.A1,A2,…,An函数决定R中所有其他属性。(超键)

2.{A1,A2,…,An}的任何真子集都不能函数决定R中所有其他属性。(最小化)

超键

什么是超键super key?

键的超集superset of key。即包含键的属性集合。

可函数决定关系中所有属性的属性集合。

每个键都是超键。

一个关系的属性全集超键。

每个超键都是键吗?不是。

函数依赖规则

有哪些重要的函数依赖规则?

分解/合并(Splitting/combining)规则 2 平凡依赖(Trivial Dependance)规则

传递(Transitivy)规则

计算属性的闭包

如何计算属性的闭包?

给定函数依赖集S和属性集A={A1,A2,…An},如何计算A+?

1 将X初始化为{A1,A2,…,An},闭包最小集合。

2 遍历S中的每个函数依赖,对于每个依赖式:B1B2…Bm → C

如果B1、B2、…、Bm都在X中,而C不在X中,则把C加入X中。

3 重复第2步,直到遍历完S中所有函数依赖,而没有新属性能加入到X中。

4 最终属性集X即为属性集A在函数依赖集S下的闭包A+。

例3.28:P90 设有关系R(A, B, C, D, E, F)与函数依赖集

S:{AB → C,BC → AD,D → E,CF → B}

求:{A,B}+

解:X(1)={A,B}, 由AB → C,得:

X(2)={A,B,C}, 由BC → AD,得:

X(3)={A,B,C,D}, 由D → E,得:

X(4)={A,B,C,D,E}={A,B}+

属性闭包计算有何用途?

假设关系R上已有一个依赖集S,另有一个函数依赖A1A2…An → B,该依赖是否蕴含于S?

判断方法:

计算{A1,A2,…,An}+。

若B在{A1,A2,…An}+中,则函数依赖A1A2…An → B蕴含于S中。

若B不在{A1,A2,…An}+中,则函数依赖A1A2…An → B不蕴含于S中。

属性的闭包和键之间有何关系?

对于一个关系R,当且仅当A1,A2,…,An是R的超键时,{A1,A2,…,An}+是R的所有属性的集合。

3.6.1 已知关系模式R(A, B, C, D)有函数依赖AB → C, C → D, D → A

(a)求蕴含于给定函数依赖的所有完全非平凡函数依赖。

(b)求R的所有键。

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

解:

(a)根据所有属性集合的闭包,计算所有可能的函数依赖。

{A}+={A}

{B}+={B}

{C}+={C, D, A} C → AD

{D}+={D, A}

{A, B}+={A, B, C, D} AB → CD

{A, C}+={A, C, D} AC → D

{A, D}+={A, D}

{B, C}+={B, C, D, A} BC → AD

{B, D}+={B, D, A, C} BD → AC

{C, D}+={C, D, A} CD → A

{A, B, C}+={A, B, C, D} ABC → D

{A, B, D}+={A, B, D, C} ABD → C

{A, C, D}+={A, C, D}

{B, C, D}+={B, C, D, A} BCD → A

(b)所有的键:{A, B}, {B, C}, {B, D} 3 (c)所有的超键(不包括键):{A,B,C}, {A,B,D}, {B,C,D}, {A,B,C,D}

关系数据库模式设计

BC范式

若关系模式R的每个分量均是不可再分的数据项,则R满足第一范式,又记作:R ∈ 1NF。

BC范式如何定义?

关系模式R满足BC范式,当且仅当若非平凡函数依赖A1A2…An → B1B2…Bm在关系R中成立,则{A1,A2,…,An}是R的超键。

关系R满足BC范式的两种情形

关系R中不存在非平凡函数依赖。(只有平凡函数依赖)

每个非平凡函数依赖的左面包含某个键(即左面是超键)。

关系R违背BC范式的唯一情形

关系R中至少存在一个非平凡函数依赖,其左面不是超键。

分解为BC范式

分解策略:消除违背BCNF的函数依赖

1 找一个违背BCNF的非平凡函数依赖A1A2…An → B1B2…Bm。

2 把关系R分解成两个关系:

R1(A1,A2,…,An, B1,B2,…,Bm)。

R2(A1,A2,…,An, 所有其它属性),若不满足BC范式,则再分解。

例如:R(学号, 课号, 成绩, 系号, 系主任) 不满足BCNF。

1 非平凡函数依赖:学号 → 系号,系主任 成立

2 R分解为:R1(学号, 系号, 系主任)

R2(学号, 课号, 成绩)

3 非平凡函数依赖:系号 → 系主任 成立

4 R1继续分解为:R11(系号, 系主任)

R12(学号, 系号)

第三范式

关系模式R满足3NF,当且仅当若非平凡函数依赖A1A2…An → B在关系R中成立,则{A1,A2,…,An}是R的超键,或者B是某个键的组成部份(键属性)。

结论:一个关系模式总可以分解为满足3NF的模式,且所有的函数依赖都可得到保持。

第二范式

第二范式(2NF):

要求每个非键属性依赖于键的整体,而不是键的部分属性,即不允许有非平凡函数依赖的右面是非键属性,而左面是某个键的真子集。

满足2NF的几种情形:

不存在非平凡函数依赖。

存在非平凡函数依赖,且其右面是某个键的组成部分(键属性)。

存在非平凡函数依赖,且其右面是非键属性,则其左面要么是超键,要么包含非键属性。

例如:关系模式R(A, B, C, D)有函数依赖AB → C, C → D, D → A

找出所有违背BCNF的函数依赖。

必要时,分解为几个满足BCNF的关系

找出所有违背3NF的函数依赖。

解:

所有的键:{A, B}, {B, C}, {B, D}

违背BCNF的函数依赖:C → AD, D → A

分解:R1(A,C,D), R2(B,C)

R11(A,D), R12(C,D) 4 函数依赖AB → C 不保持

R满足3NF

关系模型中的运算

投影

选择

笛卡尔积

例4.5:p125

自然连接

自然连接是什么运算?

对于两个关系R和S,自然连接表示为R S

结果:属性是R和S中的属性的并集,去掉同名的属性;

其元组是R和S在同名属性上一致的元组的所有组合。

上例:

例4.7:p126

θ连接

θ连接是什么运算?

在笛卡尔积的基础上,增加条件以限制元组。

对于两个关系R和S,基于条件c的θ连接表示为 R cS,计算步骤: R

A B

1

3 2

4

S

B C D

2

4

9 5

7

10 6

8

11

R×S

A R.B S.B C D

1

1

1

3

3

3 2

2

2

4

4

4 2

4

9

2

4

9 5

7

10

5

7

10 6

8

11

6

8

11

R S

A B C D

1

3 2

4 5

7 6

8

U

A B C

1

6

9 2

7

7 3

8

8

V

B C D

2

2

7 3

3

8 4

5

10

U V

A B C D

1

1

6

9 2

2

7

7 3

3

8

8 4

5

10

10