《数据库管理系统》教案-第二章.ppt

上传人:人*** 文档编号:567714913 上传时间:2024-07-22 格式:PPT 页数:61 大小:356.50KB
返回 下载 相关 举报
《数据库管理系统》教案-第二章.ppt_第1页
第1页 / 共61页
《数据库管理系统》教案-第二章.ppt_第2页
第2页 / 共61页
《数据库管理系统》教案-第二章.ppt_第3页
第3页 / 共61页
《数据库管理系统》教案-第二章.ppt_第4页
第4页 / 共61页
《数据库管理系统》教案-第二章.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《《数据库管理系统》教案-第二章.ppt》由会员分享,可在线阅读,更多相关《《数据库管理系统》教案-第二章.ppt(61页珍藏版)》请在金锄头文库上搜索。

1、第第二二章章 关系关系数据模型数据模型2.1 2.1 关系定义关系定义2.2 2.2 关系运算和关系演算关系运算和关系演算2.2.3 函数依赖函数依赖2. 4 关系规范化关系规范化2.1 2.1 关系定义关系定义1基本术语(基本术语(terms)关系模型并不难理解,但它是理论,大多数理论都带关系模型并不难理解,但它是理论,大多数理论都带有它自己的专门术语,关系模型在这方面也不例外。有它自己的专门术语,关系模型在这方面也不例外。基本术语如图基本术语如图2.1-2.1-关系术语所示,有:关系术语所示,有: 域域 ( (domain) ) pool of legal values 元组元组 ( (t

2、uple) ) row or record 关系关系 ( (relation) ) table 属性属性 ( (attribute) ) column or field 度度 ( (degree) ) number of columns 势势 ( (cardinality) ) number of records 主键主键 ( (primary key) ) unique identifier域域 : 一个域就是一个数据类型一个域就是一个数据类型( (简称为类型简称为类型) ),(domain) 它可能是一种系统定义的类型,如它可能是一种系统定义的类型,如 INTERGER ( int ) 或

3、或CHAR ( char )。更更 常见的是用户自己定义的类型,如学生常见的是用户自己定义的类型,如学生- - 成成绩绩数数据据库库中中的的“学学号号”或或“课课程程编编号号”等等。值集值集: 即即值值 的集合的集合(value set) 类型类型: 什么是一个类型呢?它是一个什么是一个类型呢?它是一个值值的集合和的集合和( (data type) 定义在这个值集上的一组操作的总称。定义在这个值集上的一组操作的总称。 伴随着给定的类型,就会出现操作符的问题:即何种伴随着给定的类型,就会出现操作符的问题:即何种操作符能合法地应用于给定类型的值上;也就是说,操作符能合法地应用于给定类型的值上;也就

4、是说,该类型的值只能被定义在相应类型上的操作符操作。该类型的值只能被定义在相应类型上的操作符操作。例如,对于例如,对于INTEGER,系统提供:系统提供:操作符操作符“=”“=”、“”“”“”,等等,等等,X Y X Y 为定为定义好的条件义好的条件( (F)F),若给若给 X X 和和 Y Y 赋予具体的值,则能计赋予具体的值,则能计算出真值(算出真值(truetrue或或falsefalse)。)。关系关系 A A 在属性在属性 X X 和和 Y Y 上的选择是一个关系上的选择是一个关系 F F(A)(A),关系的表头和关系的表头和 A A 的的一样,主体包括所有满足条件一样,主体包括所有

5、满足条件X Y X Y 为真的元组。为真的元组。例如,关系例如,关系 A A 如左下表,条件如左下表,条件 F F 为为 性别性别=“=“男男” , 则则F F(A)(A):姓名姓名性别性别张金张金男男王银王银男男李玉李玉女女姓名姓名性别性别张金张金男男王银王银男男2)2)投影投影投影运算是对属性的操作,是从一个给定关系的所有投影运算是对属性的操作,是从一个给定关系的所有属性中选择某些指定的属性属性中选择某些指定的属性 T T 。假定关系假定关系A A有属性有属性X X, ,Y Y, , , ,Z Z(可能还有其他的)。关系可能还有其他的)。关系A A 在在T T上的投影上的投影T T( (A

6、)A)是一个满足如下条件的关系:是一个满足如下条件的关系: 表头由表头由 A A 的表头除去不包含在属性集合的表头除去不包含在属性集合T T中的属性中的属性 而得到;而得到; 主体包含所有形式为主体包含所有形式为X X: : x x,Y Y: : y y , , , , Z Z: : z z的的 元组,这样的元组是由对应关系元组,这样的元组是由对应关系 A A 的属性的属性 T T 的值的值 组成。组成。注意:投影之后不仅取消了某些属性,而且因属性减注意:投影之后不仅取消了某些属性,而且因属性减 少可能会出现重复的元组,这些元组也将自动少可能会出现重复的元组,这些元组也将自动 取消。取消。 例

7、如关系例如关系 A A 如左下表,选择的属性集合如左下表,选择的属性集合 T T 为为 性别性别 A A 则则T T( (A)A) :实际中经常出现这种情况:指定被投影掉的属性比指定实际中经常出现这种情况:指定被投影掉的属性比指定投影的属性更方便。例如第投影的属性更方便。例如第1313页图页图1-9 (1-9 (b)b)所示的关系所示的关系P P,可以说可以说“从关系从关系P P中投影掉属性中投影掉属性 颜色颜色 ”,而不是而不是“关系关系P P在属性在属性 零件号零件号 、 零件名零件名 、 重量重量 、 存放点存放点 上的投影上的投影”。(就像下面:。(就像下面:P ALL BUT WEI

8、GHT P ALL BUT WEIGHT )姓名姓名性别性别张金张金男男王银王银男男李玉李玉女女性别性别男男女女3)3)连接连接连接是从两个关系连接是从两个关系 R R 和和 S S 的笛卡尔积中选取满足条的笛卡尔积中选取满足条件的元组形成新的关系,记为件的元组形成新的关系,记为 R R F F S S。例如:例如: R S R R S R ZTZT S S XYZx135x161x240x321x453YT7401650758XRYZSYTx13574x13501x45301如果条件如果条件 F F 是一个相等条件,则称为等值连接,例如是一个相等条件,则称为等值连接,例如R R Z=TZ=T

9、 S S 。如果是同名属性的等值连接又称为自然连接。例如如果是同名属性的等值连接又称为自然连接。例如R R Y=YY=Y S , S ,简记为简记为 R S R S ,结果如下:结果如下:通常通常 JIONJION 总是指自然连接。总是指自然连接。XYZSYTx16165x45358XYZTx1615x45384)4)除除 除法运算表示为除法运算表示为 R RS S。应满足以下条件:应满足以下条件:关系关系S S的属性全部包含在关系的属性全部包含在关系R R中;中;关系关系R R的一些属性不包含在关系的一些属性不包含在关系S S中。中。运算所得结果是一个关系运算所得结果是一个关系( (T)T)

10、,则则 T T 中的属性由中的属性由 R R 中中除除 S S 中的属性之外的属性组成,而中的属性之外的属性组成,而 T T 中的元组由中的元组由 R R 与与 S S 中在所有相同属性上有相等值的元组组成。中在所有相同属性上有相等值的元组组成。ABCa1b1c2a1b2c4a2b3c1a3b1c2a3b2c4a4b1c2例如:例如: R S RR S RS SBCb1c2b2c4Aa1a3关系运算举例:关系运算举例:下面提供了用在查询中的有关关系代数表示的一些例子。对照下面提供了用在查询中的有关关系代数表示的一些例子。对照第第1313页图页图1 - 91 - 9中的数据检验这些例子。中的数据

11、检验这些例子。1. 1. 求提供零件求提供零件 P2 P2 的供应商名称的供应商名称(SP JOIN SSP JOIN S)WHERE WHERE 零件号零件号 = = 零件号零件号( (P2P2) ) )厂名厂名解释:首先构造关系解释:首先构造关系 SP SP 和和 S S 在供应厂号上的自然连接,从在供应厂号上的自然连接,从概念上来说,它扩展了每个概念上来说,它扩展了每个 SP SP 元组相应的供应商信息(即元组相应的供应商信息(即供应厂号、状态码和厂址的值)。随后这个连接以零件供应厂号、状态码和厂址的值)。随后这个连接以零件 P2 P2 为为条件进行了选择。最后选择在条件进行了选择。最后

12、选择在 供应厂号供应厂号 上做了投影。结果中上做了投影。结果中只有只有 供应厂号供应厂号 这一个属性。这一个属性。 结果如下图所示:结果如下图所示:供应厂号供应厂号零件号零件号存储量存储量厂名厂名状态码状态码厂址厂址S1P1300YL20咸阳咸阳S1P2200YL20咸阳咸阳S1P3400YL20咸阳咸阳S2P1300XQ10西安西安S2P2400XQ10西安西安S3P2200XT30西安西安关系关系 SP SP 和和 S S 在供应厂号上的自然连接:在供应厂号上的自然连接:厂名厂名YLXQXT结果:结果:关系运算举例:关系运算举例:2. 2. 求提供至少一个红色零件的供应商名称求提供至少一个

13、红色零件的供应商名称(P WHERE P WHERE 颜色颜色 = = 颜色颜色 ( “红红” )JOIN SPJOIN SP) 供应厂号供应厂号 JOIN SJOIN S) 厂名厂名 结果唯一的属性还是结果唯一的属性还是 厂名。厂名。下面给出对同一个查询的不同的表述:下面给出对同一个查询的不同的表述:(P WHERE P WHERE 颜色颜色 = = 颜色颜色 ( “红红” )JOIN SPJOIN SP) 零件号零件号 JOIN SJOIN S) 厂名厂名 这个例子说明了一个重要的事实:对同一个查询经常有不同的这个例子说明了一个重要的事实:对同一个查询经常有不同的表述。表述。关系演算关系演

14、算前面,我们说关系模型的操作部分是基于关系代数前面,我们说关系模型的操作部分是基于关系代数的,同样我们也可以说它是基于关系演算的。的,同样我们也可以说它是基于关系演算的。换句话说,换句话说,关系代数和关系演算是可以相互替代的。关系代数和关系演算是可以相互替代的。它们之间的基本区别是:它们之间的基本区别是:关系代数提供了像连接、并和投影等明确的集合操作关系代数提供了像连接、并和投影等明确的集合操作符,并且这些集合操作符告诉系统如何从给定关系构符,并且这些集合操作符告诉系统如何从给定关系构造所要求的关系;而关系演算仅提供了一种描述造所要求的关系;而关系演算仅提供了一种描述(notationnota

15、tion)来说明所要求的关系(这一关系是根据来说明所要求的关系(这一关系是根据给定关系导出的)的定义。给定关系导出的)的定义。例如第例如第1313页图页图1-91-9所示的关系所示的关系 SP SP 和和 S S。 查询提供零件查询提供零件P2P2的供应厂的厂名和厂址。的供应厂的厂名和厂址。此查询的一个代数操作形式可以描述如下:此查询的一个代数操作形式可以描述如下:首先,根据供应厂号连接供货厂表(关系首先,根据供应厂号连接供货厂表(关系 S S)和供和供货表(关系货表(关系 SPSP)中的元组;中的元组;其次,在上述连接结果中选择零件号为其次,在上述连接结果中选择零件号为P2P2的元组;的元组

16、;最后,将上述选择结果在供应厂号和厂址列上投影。最后,将上述选择结果在供应厂号和厂址列上投影。相比而言,一个演算形式可以简单地描述为:相比而言,一个演算形式可以简单地描述为:查取供应厂号和厂址当且仅当在关系查取供应厂号和厂址当且仅当在关系 SP SP 中存在这样中存在这样的一个元组:它具有同样的供应厂号的一个元组:它具有同样的供应厂号,且它的零件号且它的零件号取值取值 P2P2。在后一种形式中,用户仅仅描述了所要求结果的定义在后一种形式中,用户仅仅描述了所要求结果的定义而把具体的连接、选择等操作留给了系统。而把具体的连接、选择等操作留给了系统。提示:提示:关系演算是描述性(关系演算是描述性(d

17、escriptivedescriptive)形式的,而关系代形式的,而关系代数是说明性(数是说明性(prescriptiveprescriptive)形式的。形式的。关系演算描述了问题是什么,而关系代数说明了解决关系演算描述了问题是什么,而关系代数说明了解决问题的过程。问题的过程。 或者,可以说,或者,可以说,关系代数是过程化的(诚然,是高级的,但仍然是过关系代数是过程化的(诚然,是高级的,但仍然是过程化的);而关系演算是非过程化的。程化的);而关系演算是非过程化的。然而,我们强调的上述区别仅仅是表面上的。实际然而,我们强调的上述区别仅仅是表面上的。实际上,关系代数和关系演算在逻辑上是等价的。

18、即每一上,关系代数和关系演算在逻辑上是等价的。即每一个代数表达式都有一个等价的演算表达式,每一个演个代数表达式都有一个等价的演算表达式,每一个演算表达式都有一个等价的代数表达式。算表达式都有一个等价的代数表达式。关系演算举例:关系演算举例:下面下面给出一些范围变量给出一些范围变量的例子的例子(用供应商表和零件表为例):(用供应商表和零件表为例):RANGEVAR SX RANGES OVER S;RANGEVAR SPX RANGES OVER SP;1. 1. 找出找出提供零件提供零件 P2 P2 的所有的供应商的信息的所有的供应商的信息SX WHERE EXISTS SPX ( SPX.S

19、# = SX.S# AND SPX.P# = P# ( P2 ) )注意此原型元组中范围变量名的使用。这个例子可以写成以下注意此原型元组中范围变量名的使用。这个例子可以写成以下形式:形式:( SX.S#, SX.SNAME, SX.STATUS, SX.CITY )WHERE EXISTS SPX ( SPX.S# = SX.S# AND SPX.P# = P# ( P2 ) ) 关系演算举例:关系演算举例:2. 2. 找出至少供应一个红色零件的供应商名找出至少供应一个红色零件的供应商名SX.SNAME WHEREEXISTS SPX ( SX.S# = SPX.S# AND EXISTS P

20、X ( PX.P# = SPX.P# AND EXISTS PX ( PX.P# = SPX.P# AND PX.COLOR = COLOR ( Red ) ) )其中,其中, SNAME 厂名厂名 S# 供应厂号供应厂号 P# 零件号零件号 COLOR 颜色颜色域演算域演算域演算不同于元组演算,它是定义在域上而不是定义域演算不同于元组演算,它是定义在域上而不是定义在元组上。在元组上。下面只给出下面只给出“找出至少供应一个红色零件的供应商名找出至少供应一个红色零件的供应商名”这个例子的域演算的表示:这个例子的域演算的表示:NAMEX WHERE EXISTS SX EXXISTS PX ( S

21、 ( S# : SX, SNAME : NAMEX ) AND SP ( S# : SX, P# : PX ) AND P ( P# : PX, COLOR : COLOR ( Red )SQL语言语言一种给定的关系语言要么基于关系代数,要么基于关一种给定的关系语言要么基于关系代数,要么基于关系演算。那么系演算。那么 SQL SQL 语言是基于哪一个呢?很遗憾,语言是基于哪一个呢?很遗憾,SQL SQL 只有部分基于这两者,还有一部分并不基于它们。只有部分基于这两者,还有一部分并不基于它们。下面只给出下面只给出“找出供应零件找出供应零件 P2 P2 的供应商的名字的供应商的名字” ” 的的SQ

22、L SQL 语言表示:语言表示:SELECT DISTINCT S.SNAMEFROM SWHERE S.S# IN (SELECT SP.S# FROM SP WHERE SP.P# = P2 );2.3 2.3 函数依赖函数依赖在接下来的两节中介绍数据库的设计(更确切地说是在接下来的两节中介绍数据库的设计(更确切地说是关系数据库的设计),数据库设计问题可以简单地描关系数据库的设计),数据库设计问题可以简单地描述为:如果要把一组数据储存在数据库中,该如何为述为:如果要把一组数据储存在数据库中,该如何为这些数据设计一个合适的逻辑结构?也即应该有哪些这些数据设计一个合适的逻辑结构?也即应该有哪些

23、关系?每个关系该有哪些属性?关系?每个关系该有哪些属性?数据库设计应该说是一种艺术而不是一种科学。数据库设计应该说是一种艺术而不是一种科学。自上而下的数据库设计问题:从现实世界的实体开始,自上而下的数据库设计问题:从现实世界的实体开始,以规范的关系设计结束。以规范的关系设计结束。1基本概念基本概念为了解释本节的一些概念,把发货关系变量稍作修改,为了解释本节的一些概念,把发货关系变量稍作修改,使它除了含有原来的属性:使它除了含有原来的属性: S#S#(供应商编号)、供应商编号)、P#P#(零件编号)和零件编号)和 QTY (QTY (发货量发货量) )外,外,( (参见下页图表参见下页图表) )

24、增加一个属性增加一个属性CITYCITY(城市),该属城市),该属性表示供应商的地址,性表示供应商的地址,为了防止混淆,把这为了防止混淆,把这个关系变量称为个关系变量称为 SCPSCP。关系变量关系变量 SCPSCP的一的一个可能的值见右表。个可能的值见右表。供应商供应商- -零件零件 数据库数据库( (样本值样本值) )函数依赖函数依赖 主要是指一个主要是指一个关系变量关系变量 中一个属性集中一个属性集和另一个属性集间的多对一关系。例如:和另一个属性集间的多对一关系。例如:在发货关系变量在发货关系变量 SP SP 中存在由属性集中存在由属性集 S#S#,P# P# 到属到属性集性集 QTY

25、QTY 间的函数依赖,它的意思是,对于关系间的函数依赖,它的意思是,对于关系变量变量 SP SP 的任意一个合法的值(关系):的任意一个合法的值(关系):1)1)对于任意给定的属性集对于任意给定的属性集 S# S# 和和 P# P# 的值,只有一的值,只有一 个个 QTY QTY 的值与之对应;但是的值与之对应;但是2)2)可以存在许多可以存在许多 S# S# 和和 P# P# 的不同的值,而它们所对的不同的值,而它们所对 应的应的 QTY QTY 的值相同。的值相同。注意:我们通常所举的注意:我们通常所举的 SP SP 的例子确实满足以上两个的例子确实满足以上两个 条件。条件。定义定义1 1

26、:假设假设 r r 是一个关系,是一个关系, X X 和和Y Y 是是 r r 的属性集的属性集的任意子集,当且仅当的任意子集,当且仅当 r r 中任一给定的中任一给定的 X X 的值,在的值,在r r 中存在一个唯一的中存在一个唯一的 Y Y 与之对应。也就是说,如果与之对应。也就是说,如果 X X相等,相等,Y Y 也相等,则也相等,则 Y Y 函数依赖于函数依赖于 X X,表示为表示为 X XY Y (读作读作 X X 函数决定函数决定 Y Y,或简单读作或简单读作 X X 指向指向 Y Y)。)。例如:关系例如:关系 SCP SCP 满足下述函数依赖:满足下述函数依赖: S#S#CIT

27、Y CITY 可以简记为:可以简记为: S#S#CITY CITY (当且仅当当且仅当 X X 和和Y Y 中只包含中只包含一个属性一个属性)因为这个关系的任一给定的因为这个关系的任一给定的 S# S# 值都有一个给定的值都有一个给定的CITY CITY 与之对应与之对应( (任一给定的任一给定的 CITYCITY 值有多个值有多个 S# S# 与之与之对应对应) )。事实上,该关系还满足下列函数依赖:事实上,该关系还满足下列函数依赖: S #,P # QTY S #,P # CITY S #,P # CITY,QTY S #,P # S # S #,P # S #,P #,CITY,QTY

28、S # QTY QTY S # 现在,有必要分清楚以下两种不同的情况:现在,有必要分清楚以下两种不同的情况: ( ( a )a )给定的关系变量在某一特定时间的值;给定的关系变量在某一特定时间的值;( ( b )b )给定关系变量在不同时候所有可能的值。给定关系变量在不同时候所有可能的值。首先根据情况首先根据情况( ( a )a )讨论函数依赖,然后,把函数依赖讨论函数依赖,然后,把函数依赖的概念扩展到情况的概念扩展到情况( ( b )b )。前面前面 定义定义1 1 给出的是符合情况给出的是符合情况 ( ( a )a ) 的函数依赖的的函数依赖的定义,即定义,即对关系变量的某个或某些关系适用

29、的函数依对关系变量的某个或某些关系适用的函数依赖赖。人们所感兴趣的是对关系变量的所有可能的值都适用人们所感兴趣的是对关系变量的所有可能的值都适用的函数依赖。的函数依赖。例如在例如在 SCP SCP 中,函数依赖中,函数依赖 S# S# CITYCITY对对 SCP SCP 的所有可能值都适用,因为在任何情况下,一个的所有可能值都适用,因为在任何情况下,一个给定的供应商有一个确定的地址(给定的供应商有一个确定的地址(CITYCITY),),所以在所以在 SCP SCP 中的任意两个元组,如果它的供应商编号(中的任意两个元组,如果它的供应商编号( S# S# )相等,相等,则它们的地址(则它们的地

30、址(CITYCITY)相等。事实上,相等。事实上,“任何时间任何时间”都都适用的函数依赖(例如对所有适用的函数依赖(例如对所有S C PS C P可能的值)是关系变可能的值)是关系变量量 SCP SCP 的完整性约束条件的完整性约束条件它是对它是对 SCP SCP 所有被认为合所有被认为合法的值的一个限制。法的值的一个限制。下面是在情况(下面是在情况(b b)下函数依赖的定义:下函数依赖的定义: 设设R R 是关系变量,是关系变量,X X、Y Y 是是R R 的属性集的任意子集,的属性集的任意子集,当且仅当对于当且仅当对于R R 的所有可能的合法值,的所有可能的合法值,X X 的值和的值和Y

31、Y 的值密切相关。也就是说,对于的值密切相关。也就是说,对于R R 的所有的所有可能的合法值,当两个元组的可能的合法值,当两个元组的 X X 值相等时,值相等时,Y Y 值也相值也相等,则等,则Y Y 函数依赖于函数依赖于X X,表示为:表示为:X XY Y今后说今后说“函数依赖函数依赖”指的是要求更加严格的、具有时指的是要求更加严格的、具有时间独立性的函数依赖,而不必详细说明函数依赖成立间独立性的函数依赖,而不必详细说明函数依赖成立的条件。的条件。下面是关系变量下面是关系变量S C PS C P的一些函数依赖(具有时间独的一些函数依赖(具有时间独立性的函数依赖):立性的函数依赖): S #,

32、P # QTY S #,P # CITY S #,P # CITY,QTY S #,P # S # S #,P # S #,P #,CITY,QTY S# CITY特别要注意下列函数依赖,它们在图特别要注意下列函数依赖,它们在图1 0 - 11 0 - 1的情况的情况下成立,但并不是任何时间对关系变量下成立,但并不是任何时间对关系变量 SCP SCP 都成立。都成立。S #QTYQTYS #换句话说,在前面所示的关系换句话说,在前面所示的关系 SCP SCP 中,命题中,命题“给定给定供应商的发货量是相等的供应商的发货量是相等的”是真的,但并不是对关系是真的,但并不是对关系变量变量 SCP S

33、CP 的所有可能的合法值都是真的。的所有可能的合法值都是真的。问题:问题:即使只考虑任何时间都满足的函数依赖,一个给定的即使只考虑任何时间都满足的函数依赖,一个给定的关系变量的完整函数依赖集还是很庞大的,如关系变关系变量的完整函数依赖集还是很庞大的,如关系变量量 SCPSCP所示(练习:给出所示(练习:给出 SCP SCP 的完整的函数依赖集)的完整的函数依赖集)。应该寻找一个方法把这个集合缩小到一个可管理的。应该寻找一个方法把这个集合缩小到一个可管理的范围。范围。给定一个函数依赖集给定一个函数依赖集 S S,如果能找到一个集合如果能找到一个集合 T T,T T 远远小于远远小于S S,而集合

34、而集合 T T 的函数依赖蕴涵集合的函数依赖蕴涵集合 S S 的所的所有函数依赖,则有函数依赖,则 DBMSDBMS只要实现函数依赖集只要实现函数依赖集 T T,函数函数依赖集依赖集 S S 中的所有函数依赖会自动实现,因此,寻中的所有函数依赖会自动实现,因此,寻找函数依赖集找函数依赖集 T T 具有实践上的重要性。具有实践上的重要性。2平凡的函数依赖和非平凡的函数依赖平凡的函数依赖和非平凡的函数依赖缩小函数依赖集大小的一个简单方法是消除平凡的函缩小函数依赖集大小的一个简单方法是消除平凡的函数依赖。数依赖。一个不可能不满足的函数依赖称为平凡的函数依赖。一个不可能不满足的函数依赖称为平凡的函数依

35、赖。在前面提到的关系变量在前面提到的关系变量 SCP SCP 的一个函数依赖就是平凡的一个函数依赖就是平凡的函数依赖,即函数依赖:的函数依赖,即函数依赖: S#S#,P# P# S#S#事实上,当且仅当函数依赖的右边是左边的子集(不事实上,当且仅当函数依赖的右边是左边的子集(不一定是真子集)时,该函数依赖才是平凡的函数依赖。一定是真子集)时,该函数依赖才是平凡的函数依赖。如果如果 X X Y Y ,同时同时 Y X Y X ,则称则称 X X Y Y 是非平是非平凡的函数依赖。凡的函数依赖。2.3 2.3 关系规范化(关系规范化(normalization)规范化是关系数据库理论的重要内容。所

36、谓的规范化规范化是关系数据库理论的重要内容。所谓的规范化就是按照统一标准对关系进行优化(规范),以提高就是按照统一标准对关系进行优化(规范),以提高关系的质量(也称关系具有更关系的质量(也称关系具有更“好好”的表示形式)。的表示形式)。范式:范式:如果一个关系满足如果一个关系满足“每一个属性值都是不可再分的元每一个属性值都是不可再分的元素素”那么该关系是一个规范化那么该关系是一个规范化(normalized)的关系。满足的关系。满足这一要求(也是关系的最低要求)的关系叫做这一要求(也是关系的最低要求)的关系叫做 第一范第一范式,简记为式,简记为 1 1NFNF。在此基础上满足更高要求的称为在此

37、基础上满足更高要求的称为 2NF2NF、3NF 3NF 等。将第一范式转换为若干高一级范式的关等。将第一范式转换为若干高一级范式的关系的集合的过程就叫做系的集合的过程就叫做 规范化规范化。关系数据强调某些具有特定意义的信息要组合起来,关系数据强调某些具有特定意义的信息要组合起来,成为一个全局。在真实世界里,我们可以分出许多这成为一个全局。在真实世界里,我们可以分出许多这样的特定信息,于是我们会有许多这样的信息群样的特定信息,于是我们会有许多这样的信息群( Information Group Information Group )。而实际工作时,我们是从)。而实际工作时,我们是从每一个信息群中提

38、取出需要的信息,或者将修改过的每一个信息群中提取出需要的信息,或者将修改过的信息再信息再“还原还原”(RestoreRestore)到个别的信息群中。到个别的信息群中。这个特性也符合人类思维的模式,这就是我们从小受这个特性也符合人类思维的模式,这就是我们从小受教育时,被训练出来的教育时,被训练出来的“归纳与分析归纳与分析”的能力。的能力。在人类的思维模式里,每个不同的信息群之间都有一在人类的思维模式里,每个不同的信息群之间都有一些特定的关系。或许您不觉得,但是很奇怪的,人类些特定的关系。或许您不觉得,但是很奇怪的,人类就是会自动去检索这些关系,并存在脑海里。和它相就是会自动去检索这些关系,并存

39、在脑海里。和它相比,数据库系统也是一样,我们可以为一个目标建立比,数据库系统也是一样,我们可以为一个目标建立许多数椐文件,每个文件都包含某些特定类别的信息,许多数椐文件,每个文件都包含某些特定类别的信息,常常我们会同时提取许多不同数据文件的信息来使用。常常我们会同时提取许多不同数据文件的信息来使用。因此您要为每个数据文仵之间建立因此您要为每个数据文仵之间建立“关联性关联性”(RelationRelation)。)。这个关联性就是决定一件事:当您这个关联性就是决定一件事:当您需要查着某项数据时,您应该到哪一个文件的哪些地需要查着某项数据时,您应该到哪一个文件的哪些地方去寻找相关的信息。方去寻找相

40、关的信息。下面介绍实用的关系规范化原则:下面介绍实用的关系规范化原则:规则一:域的唯一性;规则一:域的唯一性;规则二:适当的主关键字(规则二:适当的主关键字(Primary KeyPrimary Key););规则三:功能上的相关性;规则三:功能上的相关性;规则四:域的独立性。规则四:域的独立性。下面以下面以 “ “关系规范化示例关系规范化示例- -学费数据学费数据” ” 数据库为例来数据库为例来应应用以上四条规则进行验证。用以上四条规则进行验证。域的唯一性域的唯一性(uniquenessuniqueness)所谓域的唯一性,是指在同一个所谓域的唯一性,是指在同一个 Table Table 中

41、,每一个域中,每一个域都应该具有唯一(都应该具有唯一(uniqueunique)的性质。的性质。也就是说,在同一个也就是说,在同一个 Table Table 中,不应该有两个或两个中,不应该有两个或两个以上相同性质的域。以上相同性质的域。例如,表例如,表“学生缴费详情学生缴费详情”中的中的 缴费项目缴费项目1,1,金额金额1 1 和和 缴费项目缴费项目2,2,金额金额2 2 具有相同性质。具有相同性质。改进:去掉改进:去掉 域域 缴费项目缴费项目2,2,金额金额2 2 (属性值(属性值 转换为转换为 一个新的元组值)一个新的元组值) 参见表参见表“学生缴费详情改进学生缴费详情改进”适当的主关键

42、字适当的主关键字(Primary KeyPrimary Key)在一个良好的关联性数据库的设计里,定义适当的主在一个良好的关联性数据库的设计里,定义适当的主关键字是非常重要的。关键字是非常重要的。例如,表例如,表“院系信息院系信息” ” 主关键字主关键字 院系代码院系代码 表表“专业信息专业信息” ” 主关键字主关键字 专业编号专业编号 而而 表表“学生缴费详情学生缴费详情” ” 没有没有 主关键字主关键字改进:增设改进:增设“缴费流水号缴费流水号” ” 为主关键字为主关键字 参见表参见表“学生缴费详情改进学生缴费详情改进”功能上的相关性功能上的相关性(relativityrelativity

43、)这个检查也是相当重要的,一旦您确定这个检查也是相当重要的,一旦您确定 Table Table 里的主里的主关键字之后,表示这个关键字之后,表示这个 Table Table 的主题已经非常明确了的主题已经非常明确了,这时候您就应该检查一下,是否所有其它的域都是,这时候您就应该检查一下,是否所有其它的域都是与这个主题有关的,您应该尽量剔除掉所有与与这个主题有关的,您应该尽量剔除掉所有与 TableTable主题无关的域。相反的,如果与这个主题有关的信息,主题无关的域。相反的,如果与这个主题有关的信息,也应尽量完整地纳入,也就是说,整笔记录的所有域,也应尽量完整地纳入,也就是说,整笔记录的所有域,

44、要能非常充份地描述该主题,这样才是一个好的数据要能非常充份地描述该主题,这样才是一个好的数据库设计。库设计。例如,表例如,表“学生缴费详情学生缴费详情” ” 包含的包含的 姓名姓名, ,性别,准考性别,准考证证号号 与与 “ “缴费流水号缴费流水号” ” 这个主关键字所代表的信息这个主关键字所代表的信息含含义不相关。义不相关。改进:增设表改进:增设表“学生信息学生信息” ” 主关键字主关键字 学号学号 参见表参见表“学生信息学生信息” ” 包含需要的属性包含需要的属性域的独立性域的独立性(independence )最后这个规则通常是最难实践,而且也是造成最后这个规则通常是最难实践,而且也是造成 TableTable修改幅度最大的关键。它的原则是,无论何时,当您修改幅度最大的关键。它的原则是,无论何时,当您修改某个域的内容时,都不应该去影响到其它域的内修改某个域的内容时,都不应该去影响到其它域的内容,这就是域的独立性。容,这就是域的独立性。例如,表例如,表“学生缴费详情学生缴费详情” ” 包含的包含的 金额金额1,1,金额金额22与与 合计金额合计金额 不独立。不独立。改进:去掉改进:去掉 合计金额合计金额 通过查询可以获得合计金额,通过查询可以获得合计金额, 参见查询参见查询“学生缴费详情合计金额学生缴费详情合计金额”

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号