同济大学数据库关系模型和关系运算理论课件_第1页
同济大学数据库关系模型和关系运算理论课件_第2页
同济大学数据库关系模型和关系运算理论课件_第3页
同济大学数据库关系模型和关系运算理论课件_第4页
同济大学数据库关系模型和关系运算理论课件_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第2章关系数据库

2本章重要概念(1)基本概念 关系模型,关键码(主键和外键),关系的定义和性质,三类完整性规则,(2)关系代数 五个基本操作,四个组合操作.(3)理论知识关系模型设计理论,关系数据库设计过程。3本章概要

本章先介绍关系模型的基本概念;然后介绍关系运算的三种理论:关系代数、关系演算;最后介绍关系模型设计理论,关系数据库设计过程。4关系模型和关系运算理论

3.1关系模型的基本概念3.2关系代数

3.3关系模型设计理论3.4关系数据库设计过程返回53.1关系模型的基本概念

3.1.1基本术语

3.1.2关系的定义和性质3.1.3关系模型的三类完整性规则

3.1.4关系模型的三级体系结构

3.1.5关系模型的形式定义和优点

3.1.6关系查询语言和关系运算

返回63.1.1基本术语(1)

定义3.1用二维表格表示实体集,用关键码进行数据导航的数据模型称为关系模型(relationalModel)。这里数据导航(datanavigation)是指从已知数据查找未知数据的过程和方法。

图3.1职工登记表

73.1.1基本术语(2)

在关系模型中,字段称为属性,字段值称为属性值,记录类型称为关系模式。在图3.2中,关系模式名是R。记录称为元组(tuple),元组的集合称为关系(relation)或实例(instance)。一般用大写字母A、B、C、…表示单个属性,用大写字母…、X、Y、Z表示属性集,用小写字母表示属性值,有时也习惯称呼关系为表或表格,元组为行(row),属性为列(column)。关系中属性个数称为“元数”(arity),元组个数为“基数”(cardinality)。

83.1.1基本术语(3)关系元数为5,基数为4。

一般术语

关系模型术语字段、数据项 属性记录类型 关系模式记录1 元组1记录2 元组2记录3 元组3记录4 元组4字段值 属性值图3.2关系模型的术语

文件关系93.1.1基本术语(4)

关键码(key,简称键)由一个或多个属性组成。在实际使用中,有下列几种键。(1)超键(SuperKey)(2)候选键(CandidateKey)(3)主键(PrimaryKey)

在图3.1中,(工号,姓名)是模式的一个超键,但不是候选键, 而(工号)是候选键。在实际使用中,如果选择(工号)作为删除或查找元组的标志,那么称(工号)是主键。(4)外键(ForeignKey)返回103.1.2关系的定义和性质

定义3.2关系是一个属性数目相同的元组的 集合。

在关系模型中,对关系作了下列规范性限制:(1)关系中每一个属性值都是不可分解的;(2)关系中不允许出现重复元组(即不允许出现相同的元组);(3)由于关系是一个集合,因此不考虑元组间 的顺序,即没有行序;(4)元组中的属性在理论上也是无序的, 但使用时按习惯考虑列的顺序。返回113.1.3关系模型的完整性规则(1)

实体完整性规则(entityintegrityrule) 要求关系中元组在组成主键的属性上不能有空值。如果出现空值,那么主键值就起不了惟一标识元组的作用。123.1.3关系模型的完整性规则(2)参照完整性规则(referenceintegrityrule)定义3.3参照完整性规则的形式定义如下:如果属性集K是关系模式R1的主键,K也是关系模式R2的外键,那么在R2的关系中,K的取值只允许两种可能,或者为空值,或者等于R1关系中某个主键值。这条规则的实质是“不允许引用不存在的实体”。在上述形式定义中,关系模式R1的关系称为“参照关系”,关系模式R2的关系称为“依赖关系”。“主表”和“副表”,“父表”和“子表”。133.1.3关系模型的完整性规则(3)例3.1下面各种情况说明了参照完整性规则在关系中如何实现的。①在关系数据库中有下列两个关系模式:

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)这里带 线者为主键,带线者为外键。据规则要求关系SC中的S#值应该在关系S中出现。如果关系SC中有一个元组(S7,C4,80),而学号S7却在关系S中找不到,那么我们就认为在关系SC中引用了一个不存在的学生实体,这就违反了参照完整性规则。另外,在关系SC中S#不仅是外键,也是主键的一部分,因此这里S#值不允许空。143.1.3关系模型的完整性规则(4)②设工厂数据库中有两个关系模式:

DEPT(D#,DNAME) EMP(E#,ENAME,SALARY,D#)

车间模式DEPT的属性为车间编号、车间名,职工模式EMP的属性为工号、姓名、工资、所在车间的编号。每个模式的主键与外键已标出。在EMP中,由于D#不在主键中,因此D#值允许空。153.1.3关系模型的完整性规则(5)③设课程之间有先修、后继连系。模式如下:

R(C#,CNAME,PC#)其属性表示课程号、课程名、先修课的课程号。如果规定,每门课程的直接先修课只有一门,那么模式R的主键是C#,外键是PC#.。这里参照完整性在一个模式中实现。即每门课程的直接先修课必须在关系中出现。

163.1.3关系模型的完整性规则(6)用户定义的完整性规则在建立关系模式时,对属性定义了数据类型,即使这样可能还满足不了用户的需求。此时,用户可以针对具体的数据约束,设置完整性规则,由系统来检验实施,以使用统一的方法处理它们,不再由应用程序承担这项工作。 例如学生的年龄定义为两位整数,范围还太大,我们可以写如下规则把年龄限制在15~30岁之间:

CHECK(AGEBETWEEN15AND30)

返回173.1.5关系模型的三级体系结构--关系模式

在关系模型中,记录类型称为关系模式,而关系模式的集合就是数据库的概念模式。在系统实现时,关系模式和属性的命名一般都用英文单词。譬如图3.5的ER图转换成的关系模式集可用图3.6表示。而图3.7是这个关系模型的三个具体关系。图3.6关系模式集

学生关系模式S(S#,SNAME,AGE,SEX)选课关系模式SC(S#,C#,GRADE)课程关系模式C(C#,CNAME,TEACHER)183.1.5关系模型的三级体系结构 --子模式

子模式是用户所用到的那部分数据的描述。除此之外,还应指出数据与关系模式中相应数据的连系。例如,用户需要用到子模式G(图3.8)。成绩子模式G(S#,SNAME,C#,GRADE)

193.1.5关系模型的三级体系结构--存储模式

图3.10关系S和SC的环结构

在有些DBMS中,关系存储是作为文件看待的,每个元组就是一个记录。由于关系模式有键,因此存储一个关系可用散列方法或索引方法实现。如果关系的元组数目较少(100个以内),那么也可以用“堆文件”方式实现(即没有特定的次序)。此外,还可对任意的属性集建立辅助索引。

返回203.1.6关系模型的形式定义

关系模型有三个重要组成部分:数据结构,数据操纵,数据完整性规则。(1)数据结构:数据库中全部数据及其相互连系都被组织成“关系”(二维表格)的形式。关系模型基本的数据结构是关系。(2)数据操纵:关系模型提供一组完备的高级关系运算,以支持对数据库的各种操作。关系运算分成关系代数、关系演算和关系逻辑等三类。(3)数据完整性规则:数据库中数据必须满足实体完整性,参照完整性和用户定义的完整性等三类完整性规则。

213.1.6关系模型的优点与其它数据模型相比,关系模型突出的优点如下:(1)关系模型提供单一的数据结构形式,具有高度的简明性和精确性。(2)关系模型的逻辑结构和相应的操作完全独立于数据存储方式,具有高度的数据独立性。(3)关系模型使数据库的研究建立在比较坚实的数学基础上。(4)关系数据库语言与一阶谓词逻辑的固有内在连系,为以关系数据库为基础的推理系统和知识库系统的研究提供了方便。返回223.1.7关系查询语言和关系运算

关系数据库的数据操纵语言(DML)的语句分成查询语句和更新语句两大类。查询语句用于描述用户的各种检索要求;更新语句用于描述用户进行插入、删除、修改等操作。关于查询的理论称为“关系运算理论”。关系查询语言根据其理论基础的不同分成三类:(1)关系代数语言。(2)关系演算语言。(3)关系逻辑语言。

返回23关系代数基本概念和符号传统的集合运算专门的关系运算基本运算及变换

关系代数应用实例重要内容分析24关系代数的基本概念关系代数是一种抽象的查询语言,它用对关系的运算来表达查询,即,运算对象是关系,关系代数的运算结果也是关系。与一般的运算一样,运算对象、运算符和运算结果也是关系代数的三个要素。关系代数的运算可以分为两大类传统的集合运算

专门的关系运算

25几个概念和专门的符号元组的分量元组的连串元组中属性的映像集26元组的分量设有关系模式R(A1,A2,…,An)r∈R表示r是R的一个元组r.Ai或r[Ai]表示r这个元组中相应于属性Ai的一个分量例如,假设R是仓库关系,r=("WH1","北京",370)是仓库关系的一个元组,则r∈R

,r.仓库号或r[仓库号]为"WH1"。27元组的连串

设R为m元关系,S为n元关系,并且

r=(r1,r2,…,rm)∈Rs=(s1,s2,…,sn)∈S则称为元组的连串。这是一个(m+n)元组,前m个分量为R中的一个m元组,后n个分量为S中的一个n元组。

28元组中属性的映像集设有关系模式R(X,Y),其中X、Y可以是单个属性,也可以是属性集,定义当X取值为x时,x在R中的映象集为:

29设有如右上表所示的订购单关系,把它命名为R,并且进一步设X为属性职工号,Y为属性集{供应商号,订购单号,订购日期},则当X取值为E3时

{(S7,OR67,2002/06/23),(S4,OR79,2002/07/29),(S6,OR90,2002/07/13),(S3,OR91,2002/10/27)}Yx=?映像集的例子30传统的集合运算集合的并运算集合的交运算集合的差运算集合的广义笛卡尔积运算31并运算定义所有至少出现在两个关系中之一的元组集合RS={r|rRrS}RS两个关系R和S若进行并运算,则它们必须是相容的:关系R和S必须是同元的,即它们的属性数目必须相同对i,R的第i个属性的域必须和S的第i个属性的域相同32并运算ABC367257723443RABC345723SABC367257723443345R∪S33差运算定义所有出现在一个关系而不在另一关系中的元组集合RS={r|rRrS}R和S必须是相容的RS34差运算ABC367257723443RABC345723SABC367257443R-SABC367S-R35交运算定义所有同时出现在两个关系中的元组集合RS={r|rRrS}交运算可以通过差运算来重写RS=R(RS)RS36交运算ABC367257723443RABC345723SABC723R∩S37集合的并、交、差运算示意38集合的广义笛卡尔积运算设R和S是两个关系,如果R是m元关系、有k个元组,S是n元关系、有l个元组,则广义笛卡尔积R×S是一个m+n元关系、有k×l个元组。广义笛卡儿积可以记作:RS={rs|rRsS}39广义笛卡尔积运算AB12rCD10102010EaabbsAB11112222CD1019201010102010Eaabbaabbrx

s40专门的关系运算选择运算(Select)投影运算(Project)连接运算(Join)除运算(Division)41选择运算

选择运算是从指定的关系中选择某些元组形成一个新的关系,被选择的元组是用满足某个逻辑条件来指定的。选择运算表示为:

其中R是关系名,σ是选择运算符,F是逻辑表达式。42F的形式:由逻辑运算符连接算术表达式而成 逻辑表达式:,, 算术表达式:XY X,Y是属性名、常量、或简单函数 是比较算符,{,,,,,≠}示例学生数据库S中找年龄不小于20的男学生AGE≥20∧

SEX=‘male’(S)选择运算43选择运算ABC367257723443RA<5(R)

ABC367257443A<5C=7(R)

ABC36725744选择运算举例:σ职工号="E3"(订购单)订购单关系

从订购单关系中选择职工号为“E3”的元组构成新的关系45投影运算1)选择指定的属性,形成一个可能含有重复行的表格;2)删除重复行,形成新的关系。

投影运算对指定的关系进行投影操作,根据该关系分两步产生一个新关系:46投影运算表示为

其中R是关系名,π是投影运算符,A是被投影的属性或属性集。cbcfedcbaCBABCbcef

RB,C(R)47投影示例学生表S,选课表SC给出所有学生的姓名和年龄SN,AGE(S)找001号学生所选修的课程号C#(S#=001

(SC))求选修了001号或002号课程的学生号S#(C#=001∨

C#=002(SC))48投影示例学生表S,选课表SC求选修了001号而没有选002号课程的学生号S#(C#=001(SC))-S#(C#=002(SC))求同时选修了001号和002号课程的学生号错误的写法:S#(C#=001

C#=002(SC))正确的写法:S#(C#=001(SC))∩

S#(C#=002(SC))49投影运算举例:订购单关系

选取职工号和供应商号两列构成新的关系π职工号,供应商号(订购单)50选择和投影运算举例:

从订购单关系中,选取出职工号为E3的所经手的订购单号和与之相关的供应商号。订购单关系π供应商号,订购单号(σ职工号="E3"(订购单))51连接运算定义从两个关系的广义笛卡儿积中选取给定属性间满足一定条件的元组

A,B为R和S上度数相等且可比的属性列为算术比较符,为等号时称为等值连接ABRS={rs|rRsSr[A]s[B]}RS=r[A]s[B](R×S)AB52连接求数学成绩比王红同学高的学生姓名。987654321CBADE3162ABCDE123311236245662

RSB<D

R

SS.姓名((课程=数学姓名=王红(R))(

课程=数学S(R)))R.成绩<S.成绩53自然连接定义从两个关系的广义笛卡儿积中选取在相同属性列B上取值相等的元组,并去掉重复的行。自然连接与等值连接的不同自然连接中相等的分量必须是相同的属性组,并且要在结果中去掉重复的属性,而等值连接则不必。当R与S无相同属性时,RS=R×SRS={rs[B]|rRsSr[B]=s[B]}54AB12412CDaababrB13123DaaabbEs11112aaaabABCDEr

s自然连接55示例求001号学生所在系的名称DN(S#=001(S)DEPT)987654321CBACD3162

R

SABCD12314562

RS自然连接56自然连接做了三件事:计算广义笛卡尔积R×S

;选择满足条件r[Ai]=s[Bj]的所有元组;去掉重复的属性。57自然连接的例子58综合运算实例仓库号城市面积WH1北京370WH2上海500WH3广州200WH5合肥130

根据以上关系求出在上海工作的职工的工资值都有哪些?职工关系代数语句为:仓库仓库号职工号工资WH2E11220WH1E31210WH2E41250WH3E61230WH1E7125059查询过程示意选择运算自然连接运算投影运算60注意

自然连接和等值连接很相象,但它们不同,自然连接要去掉重复的属性,而等值连接却不需要去掉重复的属性。61除运算象集(ImageSet)关系R(X,Z),X,Z是属性组,x是X上的取值,定义x在R中的象集为Zx={t[Z]|tRt[X]=x}

从R中选出在X上取值为x的元组,去掉X上的分量,只留Z上的分量XZ张军同学所选修的全部课程x=张军Zx姓名课程张军物理王红数学张军数学课程数学物理62除运算

做法:逐个考虑选课关系SC中的元组r,求r在姓名SN上的分量x,再求x在选课关系中的象集课程Cx,若Cx包含了所有的课程C,则x是满足条件的一个元组如何得到选修了全部课程的学生?{x|x=r[SN]

rSC

CxC}选修全部课程的学生全部课程x同学所选修的全部课程63除运算除定义R(X,Y)S(Y)={x|x=r[X]

rRYxy(S)}R(X,Y)S(Y)={tr[X]|trRYxy(S)}RS是R中满足下列条件的元组在X属性列上的投影:元组在X上的分量值x的象集Yx包含S在Y上投影的集合。如何理解除运算?64除运算物理数学课程=物理王红数学张军数学王红物理张军课程姓名王红张军姓名没有选修全部课程的学生所有学生选修全部课程=数学张军数学王红物理张军课程姓名物理王红数学张军数学王红物理张军课程姓名姓名王红姓名王红张军姓名王红=姓名张军选修了全部课程的学生65除运算ABCDabcdabefabdebcefedcdedefCDcdefABabedABabbcedABCDabcdabefbccdbcefedcdedefR

AB(R)S

ABAB

(R)CD(S)AB(R)CD(S)-R

ABCDbccdRS=ABabbcedABbc-=66除运算示例求同时选修了001和002号课程的学生号

方案1:S#,C#(SC)C#=001

C#=002(C)

方案2:S#(SCC#=001

C#=002(C))

哪一个正确?67除运算课程数学物理=姓名课程成绩张军物理93王红数学86张军数学93王红物理92课程数学物理姓名课程张军物理王红数学张军数学王红物理姓名张军王红=姓名成绩张军93选修了全部课程并且成绩都相同的学生选修了全部课程的学生68除运算的例子它的含义是:至少向WH1、WH3、WH5供货的供应商号。69基本运算及变换

在关系代数运算中集合的并运算、差运算、笛卡尔积运算以及选择运算和投影运算是5种基本运算,另三种运算(集合的交运算以及连接运算和除运算)可以用5种基本运算来表达,引进它们并不增加语言的能力,但是可以简化表达。70两个关系的交运算可以表示为R∩S=R-(R-S)RS71两个关系的自然连接运算可以表示为两个关系的θ连接运算可以表示为72两个关系的除运算可以表示为XRS73关系代数的五个基本操作

(例)例有两个关系R和S,试求

R∪S,R-S,σB=ˊbˊ(R),πC,A(R),即π3,1(R)

R×S,此处R和S的属性名相同,就应在属性名前注上相应的关系名。(a)关系R(b)关系S74关系代数的五个基本操作

(例)

R∪S R-S R×SπC,A(R)σB='b'(R)

关系R关系S75BAOS1SNAMESNOR÷P3MISC4OSC2MISC4LIS4LIS4DBC1OSC2LIS4BAOS1CNAMECNOP3OSC2ANS3SNAMESNOR÷P2OSC2GUS2MISC4DBC1GUS2LIS4OSC2MISC4BAOS1ANS3CNAMECNOP2OSC3BAOS1GUS2OSC2BAOS1BAOS1OSC2DBC1BAOS1SNAMESNOR÷P1CNAMECNOP1CNAMECNOSNAMESNOR除法操作的例子76关系代数运算的应用实例

在关系代数运算中,把由五个基本操作经过有限次复合的式子称为关系代数表达式。这种表达式的运算结果仍是一个关系。我们可以用关系代数表达式表示各种数据查询操作。例3.7设教学数据库中有三个关系: 学生关系S(S#,SNAME,AGE,SEX) 选课关系SC(S#,C#,GRADE) 课程关系C(C#,CNAME,TEACHER)

77

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)⑴检索学习课程号为C2的学生学号与成绩。

πS#,GRADE(σC#='C2'(SC))表达式中也可以不写属性名,而写上属性的序号: π1,3(σ2='C2'(SC))⑵检索学习课程号为C2的学生学号与姓名。

πS#,SNAME(σC#='C2'(S⋈SC)) 由于这个查询涉及到两个关系S与SC,因此先要对这两个关系进行自然联接操作,然后再执行选择和投影操作。78

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)

C(C#,CNAME,TEACHER)⑶检索选修课程名为MATHS的学生学号与姓名。

πS#,SNAME(σCNAME='MATHS'(S⋈SC⋈C))⑷检索选修课程号为C2或C4的学生学号。

πS#(σC#='C2'∨C#='C4'(SC))⑸检索至少选修课程号为C2和C4的学生学号。

π1(σ1=4∧2='C2'∧5='C4'(SC×SC)) 这里(SC×SC)表示关系SC自身相乘的笛卡尔积操作。79

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)⑹检索不学C2课的学生姓名与年龄。πSNAME,AGE(S)-πSNAME,AGE(σC#='C2'(S⋈SC))

这里要用到集合差操作。先求出全体学生的 姓名和年龄,再求出学了C2课的学生的姓名 和年龄,最后执行两个集合的差操作。

πSNAME,AGE(σC#≠'C2'(S⋈SC))80

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)

C(C#,CNAME,TEACHER)⑺检索学习全部课程的学生姓名。编写这个查询语句的关系代数表达式过程如下:·学生选课情况可用操作πS#,C#(SC)表示;·全部课程可用操作

πC#(C)表示;·学了全部课程的学生学号可用除法操作表示,操作结果是学号S#集:

πS#,C#(SC)÷πC#(C)·从S#求学生姓名SNAME,可以用自然联接和投影操作组合而成:

πSNAME(S(πS#,C#(SC)÷πC#(C)))81

SC(S#,C#,GRADE)⑻检索所学课程包含学生S3所学课程的学生学号。·学生选课情况可用操作πS#,C#(SC)表示;·学生S3所学课程可用操作πC#(σS#='S3'(SC)) 表示;·所学课程包含学生S3所学课程的学生学号,可以用除法操作求得:

πS#,C#(SC)÷πC#(σS#='S3'(SC))

82

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)

C(C#,CNAME,TEACHER)(9)

检索至少学习LIU老师所授一门课程的女学生学号和姓名。该查询语句的关系代数表达式如下:

πS#,SNAME(σTEACHER=’LIU’∧SEX=’F’(C⋈SC⋈S))

83重要内容分析(一)

(1)一般规则·对于只涉及到选择、投影、连接的查询可用下列表达式表示:

π…(σ…(R×S)) 或者π…(σ…(RS))·对于否定的操作,一般要用差操作表示,例如“检索不学C2课的学生姓名”。·对于检索具有“全部”特征的操作,一般要用除法操作表示,例如“检索学习全部课程的学生姓名”。84重要内容分析(二)(2)“检索不学C2课的学生姓名”,决不能用下式表示:

πSNAME,AGE(σC#≠'C2'(SSC))

一定要用“差”的形式:πSNAME,AGE(S)-πSNAME,AGE(σC#='C2'(SSC))(3)“检索学习全部课程的学生学号”, 要用πS#,C#(SC)÷πC#(C)表示, 而不能写成 πS#(SC÷πC#(C))形式。这是因为一个学生学的课程的成绩可能是不一样的。85关系模型设计理论规范化设计理论规范化实例分析86规范化设计理论关系模式的设计问题函数依赖范式模式分解87关系模式的设计问题示例 考虑为管理职工的工资信息而设计一个关系模式88关系模式的设计问题问题:麻烦!麻烦!!好麻烦!!!唉,剪不断,理还乱信息的不可表示问题插入异常:如果没有职工具有8级工资,则8级工资的工资数额就难以插入删除异常:如果仅有职工赵明具有4级工资,如果将赵明删除,则有关4级工资的工资数额信息也随之删除了信息的冗余问题数据冗余:职工很多,工资级别有限,每一级别的工资数额反复存储多次更新异常:如果将5级工资的工资数额调为620,则需要找到每个具有5级工资的职工,逐一修改89关系模式的设计问题解决之道:分解!分解!!再分解!!!哇,原来生活可以如此简单级别工资45005600670090关系模式的设计问题有关学生的关系模式S(S#,SN,SD,DEAN,C#,G)快速热身1:它存在哪些问题?望闻问切:不良的数据依赖91函数依赖函数依赖

设R(U)是属性集U上的关系模式,X,YU,r是R(U)

上的任意一个关系,如果成立对t,sr,若t[X]=s[X],则t[Y]=s[Y]

那么称“X函数决定Y”,或“Y函数依赖于X”,记作XY

称X为决定因素 如S#SN,(S#,C#)

G92函数依赖检验:A→C?C→A?AB→D?辨识:满足依赖的关系:依赖在模式的某个关系实例上成立模式上成立的依赖:依赖在模式的所有关系实例上都成立ABCDa1b1c1d1a1b2c1d2a2b2c2d2a2b3c2d3a3b3c2d493函数依赖部分函数依赖 在R(U)中,如果XY,且对于任意X的真子集X′,都有X′Y

,则称Y对X完全函数依赖,记作 否则称为Y对X部分函数依赖,记作X

YXY(S#,C#)

G(S#,C#)SN结论:若关系模式中存在非主属性对主键的部分依赖时,就会产生数据冗余,若是完全函数依赖,则不会出现类似问题94函数依赖传递函数依赖在R(U)中,如果则称Z对X传递函数依赖因为S#SD,SDDEAN,SDS#

所以S#t

DEAN结论:传递依赖也是产生数据冗余和更新异常的主要根源XY,YZ,YX,且Z不是Y的子集95范例关系模式S(S#,SN,SD,DEAN,C#,G)主键:(S#,C#)函数依赖:

(S#,C#) GS#SN,(S#,C#) SNS#SD,(S#,C#) SDSDDEAN 96范式定义范式:符合某一规范级别的关系模式的集合规范化:通过模式分解将一个低级范式转换为若干个高级范式的过程称作规范化(概念的纯粹化)1NF2NF3NF4NFBCNF5NF971NF定义

当关系模式R的所有属性都不能分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF

。即不能以集合、序列等作为属性值S#C#S1{C1,C2,C3}S#C#S1C1S1C2S1C3981NF

分量是否需要再分,与具体应用有关。如果用到值的一部分,则需要进一步分割

如果只是查询出生日期,则它满足1NF

如果查询两人生日是否相同,则只比较月、日,需要将生日分解,就不满足1NF

如果比较两人的生肖呢?姓名生日王军68.7.10张立69.7.10李明80.3.28姓名年月日王军687.10张立697.10李明803.28992NF定义若R1NF,且每个非主属性完全依赖于主键,则称R2NF消除非主属性对码的部分依赖 如S2NF,因为(S#,C#) SN(S#,C#)SD1002NF改造 非主属性有两种,一种完全依赖于码,一种部分依赖于码。 将S分解为:

SC(S#,C#,G) S_SD(S#,SN,SD,DEAN)1013NF定义

若关系模式R属于第一范式,且每个非主属性都不传递依赖于R的主键,称R满足第三范式,简记为R3NF消除非主属性对主键的传递依赖 如S_SD

3NF,因为有S#SD,SDDEAN1023NF改造 将S_SD分解为

STUDENT(S#,SN,SD) DEPT(SD,DEAN)103BCNF定义

若关系模式R属于第一范式,且每个属性都不传递依赖于R的主键,称R属于BC范式,简记为RBCNF,即决定因素必须包含键码104模式分解1.模式分解的定义

所谓关系模式的分解,就是对原有关系在不同的属性上进行投影,从而将原有关系分解为两个或两个以上的含有较少属性的多个关系

模式分解的基本原则无损连接性函数依赖保持性达到更高级范式105无损连接性R(A,B,C)ABC112221AB1122BC1221ABC112221R1(A,B)R2(B,C)R1R2R(A,B,C)ABC111212AB1121BC1112ABC111112211212R1R2有损分解无损分解R1(A,B)R2(B,C)106规范化实例分析有关学生的关系模式Student(S#,SN,SD,DEAN,C#,G)107规范化实例分析确定是否是1NF

关系模式student中,每个属性都是不可再分的,所以关系模式student1NF确定是否属于2NF

在关系student中,主键为:{S#,C#,},因为存在属性集{S#,SD,DEAN}对主键的部分依赖,所以student

2NF

通过观察发现,在Student(S#,SN,SD,DEAN,C#,G)中存在如下函数依赖:108规范化实例分析

S

#SN,SDSDDEANS

#DEANS

#,C#G

通过分析非主属性和主键的依赖关系可以得出:

S

#,C#

SN,SD,DEANS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论