文档库 最新最全的文档下载
当前位置:文档库 › 关系数据库理论

关系数据库理论

关系数据库理论
关系数据库理论

第4章关系数据库规范化理论

数据库设计的一个最基本的问题是怎样建立一个合理的数据库模式,使数据库系统无论是在数据存储方面,还是在数据操作方面都具有较好的性能。什么样的模型是合理的模型,什么样的模型是不合理的模型,应该通过什么标准去鉴别和采取什么方法来改进,这是在进行数据库设计之前必须明确的问题。

为使数据库设计合理可靠、简单实用,长期以来,形成了关系数据库设计理论,即规范化理论。它是根据现实世界存在的数据依赖而进行的关系模式的规范化处理,从而得到一个合理的数据库设计效果。

本章首先说明关系规范化的作用,接着引入函数依赖和范式等基本概念,然后介绍关系模式等价性判定和模式分解的方法,最后简要介绍两种数据依赖的概念。

4.1 关系规范化的作用

4.1.1问题的提出

从前面的有关章节可知,关系是一张二维表,它是涉及属性的笛卡尔积的一个子集。从笛卡尔积中选取哪些元组构成该关系,通常是由现实世界赋予该关系的元组语义来确定的。元组语义实质上是一个n目谓词(n是属性集中属性的个数)。使该n目谓词为真的笛卡尔积中的元素(或者说凡符合元组语义的元素)的全体就构成了该关系。

但由上述关系所组成的数据库还存在某些问题。为了说明的方便,我们先看一个实例。

【例4.1】设有一个关于教学管理的关系模式R(U),其中U由属性Sno、Sname、Ssex、Dname、Cname、Tname、Grade组成的属性集合,其中Sno的含义为学生学号,Sname为学生姓名,Ssex为学生性别,Dname为学生所在系别,Cname为学生所选的课程名称,Tname 为任课教师姓名,Grade为学生选修该门课程的成绩。若将这些信息设计成一个关系,则关系模式为:

教学(Sno,Sname,Ssex,Dname,Cname,Tname,Grade)选定此关系的主键为(Sno,Cname)。

由该关系的部分数据(如表4-1所示),我们不难看出,该关系存在着如下问题:

1. 数据冗余(Data Redundancy)

●每一个系名对该系的学生人数乘以每个学生选修的课程门数重复存储。

●每一个课程名均对选修该门课程的学生重复存储。

●每一个教师都对其所教的学生重复存储。

2. 更新异常(Update Anomalies)

由于存在数据冗余,就可能导致数据更新异常,这主要表现在以下几个方面:

⑴插入异常(Insert Anomalies):由于主键中元素的属性值不能取空值,如果新分配来一位教师或新成立一个系,则这位教师及新系名就无法插入;如果一位教师所开的课程无人选修或一门课程列入计划但目前不开课,也无法插入。

⑵修改异常(Modification Anomalies):如果更改一门课程的任课教师,则需要修改多个元组。如果仅部分修改,部分不修改,就会造成数据的不一致性。同样的情形,如果一个学生转系,则对应此学生的所有元组都必须修改,否则,也出现数据的不一致性。

⑶删除异常(Deletion Anomalies):如果某系的所有学生全部毕业,又没有在读及新生,当从表中删除毕业学生的选课信息时,则连同此系的信息将全部丢失。同样地,如果所有学生都退选一门课程,则该课程的相关信息也同样丢失了。

由此可知,上述的教学管理关系尽管看起来能满足一定的需求,但存在的问题太多,从而它并不是一个合理的关系模式。

表4-1 教学关系部分数据

4.1.2 解决的方法

不合理的关系模式最突出的问题是数据冗余。而数据冗余的产生有着较为复杂的原因。虽然关系模式充分地考虑到文件之间的相互关联而有效地处理了多个文件间的联系所产生

的冗余问题。但在关系本身内部数据之间的联系还没有得到充分的解决,正如例4.1所示,同一关系模式中各个属性之间存在着某种联系,如学生与系、课程与教师之间存在依赖关系的事实,才使得数据出现大量冗余,引发各种操作异常。这种依赖关系称之为数据依赖(Data Independence )。

关系系统当中数据冗余产生的重要原因就在于对数据依赖的处理,从而影响到关系模式本身的结构设计。解决数据间的依赖关系常常采用对关系的分解来消除不合理的部分,以减少数据冗余。在例4.1中,我们将教学关系分解为三个关系模式来表达:学生基本信息(Sno ,Sname ,Ssex ,Dname ),课程信息(Cno ,Cname ,Tname ,)及学生成绩(Sno ,Cno ,Grade ),其中Cno 为学生选修的课程编号;分解后的部分数据如表4-2、表4-3与表4-4所示。

表4-2 学生信息

表4-3 课程信息

表4-4 学生成绩

对教学关系进行分解后,我们再来考察一下:

⑴数据存储量减少。

设有n个学生,每个学生平均选修m门课程,则表4-1中学生信息就有4nm之多。经过改进后学生信息及成绩表中,学生的信息仅为3n+mn。学生信息的存储量减少了3(m-1)n。显然,学生选课数绝不会是1,因而,经过分解后数据量要少得多。

⑵更新方便。

①插入问题部分解决:对一位教师所开的无人选修的课程可方便地在课程信息表中插入。但是,新分配来的教师、新成立的系或列入计划但目前不开课的课程,还是无法插入。要解决无法插入的问题,还可继续将系名与课程作分解来解决。

②修改方便:原关系中对数据修改所造成的数据不一致性,在分解后得到了很好的解决,改进后,只需要修改一处。

③删除问题也部分解决:当所有学生都退选一门课程时,删除退选的课程不会丢失该门课程的信息。值得注意的是,系的信息丢失问题依然存在,解决的方法还需继续进行分解。

虽然改进后的模式部分地解决了不合理的关系模式所带来的问题,但同时,改进后的关系模式也会带来新的问题,如当查询某个系的学生成绩时,就需要将两个关系连接后进行查询,增加了查询时关系的连接开销,而关系的连接代价却又是很大的。

此外,必须说明的是,不是任何分解都是有效的。若将表4-1分解为(Sno,Sname,Ssex,Dname,)、(Sno,Cno,Cname,Tname)及(Sname,Cno,Grade),不但解决不了实际问题,反而会带来更多的问题。

那么,什么样的关系模式需要分解?分解关系模式的理论依据又是什么?分解后能完全消除上述的问题吗?回答这些问题需要理论的指导。下面几节将加以讨论。

4.1.3 关系模式规范化

由上面的讨论可知,在关系数据库的设计中,不是随便一种关系模式设计方案都“合适”,更不是任何一种关系模式都可以投入应用的。由于数据库中的每一个关系模式的属性之间需要满足某种内在的必然联系,设计一个好的数据库的根本方法是先要分析和掌握属性间的语义关联,然后再依据这些关联得到相应的设计方案。在理论研究和实际应用中,人们发现,属性间的关联表现为一个属性子集对另一个属性子集的“依赖”关系。按照属性间的对应情况可以将这种依赖关系分为两类,一类是“多对一”的依赖,一类是“一对多”的。“多对一”的依赖最为常见,研究结果也最为齐整,这就是本章着重讨论的“函数依赖”。“一对多”依赖相当复杂,就目前而言,人们认识到属性之间存在两种有用的“一对多”情形,一种是多值依赖关系,一种是连接依赖关系。基于对这三种依赖关系在不同层面上的具体要求,人们又将属性之间的这些关联分为若干等级,这就形成了所谓的关系的规范化(Relation Normalixation)。由此看来,解决关系数据库冗余问题的基本方案就是分析研究属性之间的联系,按照每个关系中属性间满足某种内在语义条件,以及相应运算当中表现出来某些特定要求,也就是按照属性间联系所处的规范等级来构造关系。由此产生的一整套有关理论称之为关系数据库的规范化理论。

4.2 函数依赖

函数依赖是数据依赖的一种,函数依赖反映了同一关系中属性间一一对应的约束。函数依赖是关系规范化的理论基础。

4.2.1 关系模式的简化表示

关系模式的完整表示是一个五元组:

R(U,D,Dom,F)

其中:R为关系名;U为关系的属性集合;D为属性集U中属性的数据域;Dom为属性到域的映射;F为属性集U的数据依赖集。

由于D和Dom对设计关系模式的作用不大,在讨论关系规范化理论时可以把它们简化掉,从而关系模式可以用三元组来表示为:

R(U,F)

从上式可以看出,数据依赖是关系模式的重要要素。数据依赖(Data Dependency)是同一关系中属性间的相互依赖和相互制约。数据依赖包括函数依赖(Functional Dependency,简称FD)、多值依赖(Multivalued Dependency,简称MVD)和连接依赖(Join Dependency,简称JD)。

4.2.2 函数依赖的基本概念

1. 函数依赖

定义4.1 设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。对于R(U)的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。

函数依赖和其他数据依赖一样,是语义范畴的概念。我们只能根据数据的语义来确定函数依赖。例如,知道了学生的学号,可以惟一地查询到其对应的姓名、性别等,因而,可以说“学号函数确定了姓名或性别”,记作“学号→姓名”、“性别”等。这里的惟一性并非只有一个元组,而是指任何元组,只要它在X(学号)上相同,则在Y(姓名或性别)上的值也相同。如果满足不了这个条件,就不能说它们是函数依赖了。例如,学生姓名与年龄的关系,当只有在没有同名人的情况下可以说函数依赖“姓名→年龄”成立,如果允许有相同的名字,则“年龄”就不再依赖于“姓名”了。

当X→Y成立时,则称X为决定因素(Determinant),称Y为依赖因素(Dependent)。当Y不函数依赖于X时,记为X\→Y。

如果X→Y,且Y→X,则记其为X←→Y。

特别需要注意的是,函数依赖不是指关系模式R中某个或某些关系满足的约束条件,而是指R的一切关系均要满足的约束条件。

函数依赖概念实际是是候选键概念的推广,事实上,每个关系模式R都存在候选键,每个候选键K都是一个属性子集,由候选键定义,对于R的任何一个属性子集Y,在R上都有函数依赖K→Y成立。一般而言,给定R的一个属性子集X,在R上另取一个属性子集Y,不一定有X→Y成立,但是对于R中候选键K,R的任何一个属性子集都与K有函数依赖关系,K是R中任意属性子集的决定因素。

2.函数依赖的三种基本情形

函数依赖可以分为三种基本情形:

⑴ 平凡函数依赖与非平凡函数依赖

定义4.2 在关系模式R(U)中,对于U 的子集X 和Y ,如果X →Y ,但Y 不是X 的子集,则称X →Y 是非平凡函数依赖(Nontrivial Function Dependency )。若Y 是X 的子集,则称X →Y 是平凡函数依赖(Trivial Function Dependency )。

对于任一关系模式,平凡函数依赖都是必然成立的。它不反映新的语义,因此,若不特别声明,本书总是讨论非平凡函数依赖。

⑵ 完全函数依赖与部分函数依赖 定义4.3 在关系模式R(U)中,如果X →Y ,并且对于X 的任何一个真子集X ′,都有X ′\→ Y ,则称Y 完全函数依赖(Full Functional Dependency )于X ,记作X —→F Y 。若X →Y ,但Y 不完全函数依赖于X ,则称Y 部分函数依赖(Partial Functional Dependency )于X ,记作X —→P Y 。

如果Y 对X 部分函数依赖,X 中的“部分”就可以确定对Y 的关联,从数据依赖的观点来看,X 中存在“冗余”属性。

⑶ 传递函数依赖

定义 4.4 在关系模式R(U)中,如果X →Y ,Y →Z ,且Y \→X ,则称Z 传递函数依赖(Transitive Functional Dependency )于X ,记作Z —→T X 。

传递函数依赖定义中之所以要加上条件Y \→X ,是因为如果Y →X ,则X ←→Y ,这实际上是Z 直接依赖于X ,而不是传递函数了。

按照函数依赖的定义,可以知道,如果Z 传递依赖于X ,则Z 必然函数依赖于X ,如果Z 传递依赖于X ,说明Z 是“间接”依赖于X ,从而表明X 和Z 之间的关联较弱,表现出间接的弱数据依赖。因而亦是产生数据冗余的原因之一。

4.2.3 码的函数依赖表示

前面章节中给出了关系模式的码的非形式化定义,这里使用函数依赖的概念来严格定义关系模式的码。

定义4.5 设K 为关系模式R (U ,F )中的属性或属性集合。若K →U ,则K 称为R 的一个超码(Super Key )。

定义4.6 设K 为关系模式R (U ,F )中的属性或属性集合。若K —→F

U ,则K 称为R 的一个候选码(Candidate Key )。候选码一定是超码,而且是“最小”的超码,即K 的任意一个真子集都不再是R 的超码。候选码有时也称为“候选键”或“码”。

若关系模式R 有多个候选码,则选定其中一个作为主码(Primary Key )。 组成候选码的属性称为主属性(Prime Attribute ),不参加任何候选码的属性称为非主属性(Non-key Attribute )。

在关系模式中,最简单的情况,单个属性是码,称为单码(Single Key );最极端的情况,整个属性组都是码,称为全码(All Key )

定义4.7 关系模式R 中属性或属性组X 并非R 的码,但X 是另一个关系模式的码,则称X 是R 的外部码(Foreign Key ),也称为外码。

码是关系模式中的一个重要概念。候选码能够惟一地标识关系的元组,是关系模式中一组最重要的属性。另一方面,主码又和外部码一起提供了一个表示关系间联系的手段。

4.2.4 函数依赖和码的惟一性

码是由一个或多个属性组成的可惟一标识元组的最小属性组。码在关系中总是惟一的,即码函数决定关系中的其他属性。因此,一个关系,码值总是惟一的(如果码的值重复,则整个元组都会重复)。否则,违反实体完整性规则。

与码的惟一性不同,在关系中,一个函数依赖的决定因素可能是惟一的,也可能不是惟一的。如果我们知道A决定B,且A和B在同一关系中,但我们仍无法知道A是否能决定除B以外的其他所有属性,所以无法知道A在关系中是否是惟一的。

【例4.2】有关系模式:学生成绩(学生号,课程号,成绩,教师,教师办公室)此关系中包含的四种函数依赖为:

(学生号,课程号)→成绩

课程号→教师

课程号→教师办公室

教师→教师办公室

其中,课程号是决定因素,但它不是惟一的。因为它能决定教师和教师办公室,但不能决定属性成绩。但决定因素(学生号,课程号)除了能决定成绩外,当然也能决定教师和教师办公室,所以它是惟一的。关系的码应取(学生号,课程号)。

函数依赖性是一个与数据有关的事物规则的概念。如果属性B函数依赖于属性A,那么,若知道了A的值,则完全可以找到B的值。这并不是说可以导算出B的值,而是逻辑上只能存在一个B的值。

例如,在人这个实体中,如果知道某人的惟一标识符,如身份证号,则可以得到此人的性别、身高、职业等信息,所有这些信息都依赖于确认此人的惟一的标识符。通过非主属性如年龄,无法确定此人的身高,从关系数据库的角度来看,身高不依赖于年龄。事实上,这也就意味着码是实体实例的惟一标识符。因此,在以人为实体来讨论依赖性时,如果已经知道是哪个人,则身高、体重等等就都知道了。码指示了实体中的某个具体实例。

4.3 函数依赖的公理系统

研究函数依赖是解决数据冗余的重要课题,其中首要的问题是在一个给定的关系模式中,找出其上的各种函数依赖。对于一个关系模式来说,在理论上总有函数依赖存在,例如平凡函数依赖和候选键确定的函数依赖;在实际应用中,人们通常也会制定一些语义明显的函数依赖。这样,一般总有一个作为问题展开的初始基础的函数依赖集F。本节主要讨论如何通过已知的F得到其他大量的未知函数依赖。

4.3.1 函数依赖集的完备性

1. 问题的引入

我们先考察下面的例子。

考察关系模式R上已知的函数依赖X→{A,B}时,按照函数依赖概念,就有函数依赖X →{A}和X→{B};而已知成立非平凡函数依赖X→Y和Y→Z,且有Y→X时,按照传递依赖概念,可以得到新的函数依赖X→Z。

若函数依赖X →{A}、X→{B}和X→Z并不直接显现在问题当中,而是按照一定规则(函数依赖和传递函数依赖概念)由已知“推导”出来的。将这个问题一般化,就是如何由已知的函数依赖集合F,推导出新的函数依赖。

为了表述简洁和推理方便,在本章的以下部分,对有关记号使用做如下约定:

⑴如果声明X、Y等是属性子集,则将X∪Y简记为XY。

⑵如果声明A、B等是属性,则将集合{A,B}简记为AB。

⑶如果X是属性集,A是属性,则将X∪{A}简记为XA或AX。

以上是两个对象的情形,对于多个对象也做类似约定。

⑷关系模式简讯为三元组R(U,F),其中U为模式的属性集合,F为模式的函数依赖集合。

2. 函数依赖集F的逻辑蕴涵

我们先说明由函数依赖集F“推导”出函数依赖的确切含义。

设有关系模式R(U,F),又设X和Y是属性集合U的两个子集,如果对于R中每个满足F 的关系r也满足X→Y,则称F逻辑蕴含X→Y,记为F=X→Y。

如果考虑到F所蕴含(所推导)的所有函数依赖,就有函数依赖集合闭包的概念。

3. 函数依赖集合的闭包

设F是函数依赖集合,被F逻辑蕴含的函数依赖的全体构成的集合,称为函数依赖集F 的闭包(Closure),记为F+,即

F+={X→Y|F·X→Y}

由以上定义可知,由已知函数依赖集F求得新函数依赖可以归结为求F的闭包F+。为了用一套系统的方法求得F+,还必须遵守一组函数依赖的推理规则。

4.3.2 函数依赖的推理规则

为了从关系模式R上已知的函数依赖F得到其闭包F+,W. W. Armstrong于1974年提出了一套推理规则。使用这套规则,可以由已有的函数依赖推导出新的函数依赖。后来又经过不断完善,形成了著名的“Armstrong公理系统”,为计算F+提供了一个有效并且完备的理论基础。

1. Armstrong公理系统

⑴Armstrong公理系统有3条基本公理:

①A1(自反律,reflexivity):如果Y?X?U,则X→Y在R上成立。

②A2(增广律,augmentation):如果X→Y在R上成立,且Z?U,则XZ→Y Z。

③A3(传递律,transitivity):如果X→Y和Y→Z在R上成立,则X→Z在R上也成立。

基于函数依赖集F,由Armstrong公理系统推出的函数是否一定在R上成立呢?或者说,这个公理系统是否正确呢?这个问题并不明显,需要进行必要的讨论。

⑵由于公理是不能证明的,其“正确性”只能按照某种途径进行间接的说明。人们通常是按照这样的思路考虑正确性问题的:即如果X→Y是基于F而由Armstrong公理系统推出,则X→Y一定属于F+,则就可认为Armstrong公理系统是正确的。由此可知:

①自反律是正确的:因为在一个关系中不可能存在两个元组在属性X上的值相等,而在X的某个子集Y上的值不等。

②增广律是正确的:因为可以使用反证法,如果关系模式R(U)中的某个具体关系r中存在两个元组t和s违反了XZ→Y Z,即t[XZ]=s[XZ],而t[YZ]≠s[YZ],则可以知道t[Y]≠s[Y]或t[Z]≠s[Z]。此时可以分为两种情形:

如果t[Y]≠s[Y],就与X→Y成立矛盾。

如果t[Z]≠s[Z],则与假设t[XZ]=s[XZ]矛盾。

这样假设就不成立,所以增广性公理正确。

③传递律是正确的,还是使用反证法。假设R(U)的某个具体关系r中存在两个存在两个元组t和s违反了X→Z,即t[X]=s[X],但t[Z]≠s[Z]。此时分为两种情形讨论:如果t[Y]≠s[Y],就与X→Y成立矛盾。

如果t[Y]=s[Y],而t[Z]≠s[Z],就与Y→Z成立矛盾。

由此可以知道传递性公理是正确的。

⑶由Armstrong基本公理A1,A2和A3为初始点,可以导出下面4条有用的推理规则。

①A4(合并性规则union):若X→Y,X→Z,则X→Y Z。

②A5(分解性规则decomposition):若X→Y,Z?Y,则X→Z。

③A6(伪传递性规则pseudotransivity):若X→Y,WY→Z,则WX→Z。

④A7(复合性规则compositon rule):若X→Y,W→Z,则WX→Y Z。

⑤A8(通用一致性规则general unification rule):若X→Y,W→Z,则X(W-Y)→Y Z。

例:由合并性规则A4和分解性规则A5,立即可以得到如下结论:

如果A1,A2,…,An是关系模式R的属性集,则X→A1A2…An的充分必要条件是X→Ai(I=1,2, …,n)成立。

2. Armstrong公理系统的完备性

如果由F出发根据Armstrong公理推导出的每一个函数依赖X→Y一定在F当中,人们就称Armstrong公理系统是有效的。由Armstrong公理系统正确性和有效性的一致性,不难得知Armstrong公理系统是具有有效性质的。另外,如果F+中每个函数依赖都可以由F出发根据Armstrong公理系统导出,就称Armstrong公理系统是完备的。可以证明,Armstrong 公理系统,即函数依赖推理规则系统(A1,A2,A3)具有完备性质。

由Armstrong公理系统的完备性可以得到重要结论:F+是由F根据Armstrong公理系统导出的函数依赖的集合。从而在理论上解决了由F计算F+的问题。

另外,由Armstrong公理系统的完备性和有效性还可以知道,“推导出”与“蕴含”是两个完全等价的概念,由此得到函数依赖集F的闭包的一个计算公式:

F+={X→Y|X→Y由F根据Armstrong公理系统导出}

【例4.3】设有关系模式R(U,F),其中U=ABC,F={A→B,B→C},则上述关于函数依赖集闭包计算公式,可以得到F+由43个函数依赖组成。例如,由自反性公理A1可以知道,A→Ф,B→Ф,C→Ф,A→A,B→B,C→C;由增广性公理A2可以推出AC→B C,AB→B ,A→AB等;由传递性公理A3可以推出A→C,…。为了清楚起见,F的闭包F+可以列举在表4-5中。

表4-5F的闭包F+

由此可见,一个小的具有两个元素函数依赖集F常常会有一个大的具有43个元素的闭包F+,当然F+中会有许多平凡函数依赖,例如A→Ф、AB→B等,这些并非都是实际中所需要的。

4.3.3 属性的闭包与F逻辑蕴含的充要条件

从理论上讲,对于给定的函数依赖集合F,只要反复使用Armstrong公理系统给出的推理规则,直到不能再产生新的函数依赖为止,就可以算出F的闭包F+。但在实际应用中,这种方法不仅效率较低,而且还会产生大量“无意义”或者意义不大的函数依赖。由于人们感兴趣可能只是F+的某个子集。所以许多实际过程几乎没有必要计算F的闭包F+自身。正是为了解决这样的问题,就引入了属性集闭包概念。

1.属性集闭包

设F是属性集合U上的一个函数依赖集,X?U,称

X F+={A|A∈U,X→A能由F按照Armstrong公理系统导出}为属性集X关于F的闭包。

如果只涉及到一个函数依赖集F,即无需对函数依赖集进行区分,属性集X关于F的闭包就可简记为X+。需要注意的是,上述定义中的A是U中单属性子集时,总有X?X+?U。

【例4.4】设有关系模式R(U,F),其中U=ABC,F={A→B,B→C},按照属性集闭包概念,则有:A+=ABC,B+=BC,C+=C。

2.求属性集闭包算法

设属性集X的闭包为closure,其计算算法如下:

closure = x;

do {if F中存在函数依赖UV满足U closure

then closure = closure V;

} while (closure 有所改变);

3.F逻辑蕴含的充要条件

一般而言,给定一个关系模式R(U,F),其中函数依赖集F的闭包F+只是U上所有函数依赖集的一个子集,那么对于U上的一个函数依赖X→Y,如何判定它是属于F+,即如何判定是否F逻辑蕴含X→Y呢?一个自然的思路就是将F+计算出来,然后看X→Y是否在集合F+之中,前面已经说过,由于种种原因,人们一般并不直接计算F+。注意到计算一个属性集的闭包通常比计算一个函数依赖集的闭包来得简便,有必要讨论能否将“X→Y属于F+”判断问题归结为其中决定因素X的闭包X+的计算问题。下面的例题对此作出了回答。

设F是属性集U上的函数依赖集,X和Y是U的子集,则X→Y能由F按照Armstrong 公理系统推出即X→Y∈ F+的充分必要条件是Y?X+。

事实上,如果Y=A1A2…An并且Y?X+,则由X关于F闭包F+的定义,对于每个Ai∈Y(i=1,2, …,n)能够关于F按照Armstrong公理推出,再由全并规则A4就可知道X→Y能由F按照Armstrong公理得到。充分性得证。

如果X→Y能由F按照Armstrong公理导出,并且Y=A1A2…An,按照分解规则A5可以得知X→Ai(i=1,2, …,n),这样由X+的定义就得到Ai∈X+(i=1,2, …,n),所以Y?X+,必要性得证。

4.3.4 最小函数依赖集F

min

设有函数依赖集F,F中可能有些函数依赖是平凡的,有些是“多余的”。如果有两个函数依赖集,它们在某种意义上“等价”,而其中一个“较大”些,另一个“较小些”,人们自然会选用“较小”的一个。这个问题的确切提法是:给定一个函数依赖集F,怎样求得一个与F“等价”的“最小”的函数依赖集F min。显然,这是一个有意义的课题。

1.函数依赖集的覆盖与等价

设F和G是关系模式R上的两个函数依赖集,如果所有为F所蕴含的函数依赖都为G 所蕴含,即F+是G+的子集:F+?G+,则称G是F的覆盖。

当G是F的覆盖时,只要实现了G中的函数依赖,就自动实现了F中的函数依赖。

如果G是F的函数覆盖,同时F又是G的函数覆盖,即F+=G+,则称F和G是相互等价的函数依赖集。

当F和G等价时,只要实现了其中一个的函数依赖,就自动实现了另一个的函数依赖。

2.最小函数依赖集

对于一个函数依赖集F,称函数依赖集F min为F的最小函数依赖集,是指F min满足下述条件:

⑴ F min与F等价:F+min=F+。

⑵ F min中每个函数依赖X→Y的依赖因素Y为单元素集,即Y只含有一个属性。

⑶ F min中每个函数依赖X→Y的决定因素X没有冗余,即只要删除X中任何一个属性就会改变F min的闭包F+min。顺便说一句,一个具有如此性质的函数依赖称为是左边不可约的。

⑷F min中每个函数依赖都不是冗余的,即删除F min中任何一个函数依赖,F min就将变为了另一个不等价于F min的集合。

最小函数依赖集F min实际上是函数依赖集F的一种没有“冗余”的标准或规范形式,定义中的“1”表明F和F min具有相同的“功能”;“2”表明F min中每一个函数依赖都是“标准”的,即其中依赖因素都是单属性子集;“3”表明F min中每一个函数依赖的决定因素都没有冗余的属性;“4”表明F min中没有可以从F的剩余函数依赖导出的冗余的函数依赖。

3.最小函数依赖集的算法

任何一个函数依赖集F都存在着最小函数依赖集F min。

事实上,对于函数依赖集F来说,由Armstrong公理系统中的分解性规则A5,如果其中的函数依赖中的依赖因素不是单属性集,就可以将其分解为单属性集,不失一般性,可以假定F中任意一个函数依赖的依赖因素Y都是单属性集合。对于任意函数依赖X→Y决定因素X中的每个属性A,如果将A去掉而不改变F的闭包,就将A从X中删除,否则将A保留;按照同样的方法逐一考察F中的其余函数依赖。最后,对所有如此处理过的函数依赖,再逐一讨论如果将其删除,函数依赖集是否改变,不改变就真正删除,否则保留,由此就得到函数依赖集F的最小函数依赖集F min。

需要注意的是,虽然任何一个函数依赖集的最小依赖集都是存在的,但并不唯一。

下面给出上述思路的实现算法:

⑴由分解性规则A5得到一个与F等价的函数依赖集G,G中任意函数依赖的依赖因素都是单属性集合。

⑵在G的每一个函数依赖中消除决定因素中的冗余属性。

⑶在G中消除冗余的函数依赖。

【例4.5】设有关系模式R(U,F),其中U=ABC,F={A→{B,C},B→C, A→B, {A, B}→C},按照上述算法,可以求出F min。

⑴将F中所有函数依赖的依赖因素写成单属性集形式:

G={A→B, A→C,B→C, A→B, {A, B}→C}

这里多出一个A→B,可以删掉,得到

G={A→B, A→C,B→C, {A, B}→C}

⑵ G中的A→C可以从A→B和B→C推导出来,A→C是冗余的,删掉A→C可得:G={A→B, B→C, {A, B}→C}

⑶ G中的{A, B}→C可以从B→C推导出来,是冗余的,删掉{A, B}→C最后得:G={A→B, B→C}。

所以F的最小函数依赖集F min={A→B, B→C}。

4.4 关系模式的规范化

关系数据库中的关系必须满足一定的规范化要求,对于不同的规范化程度可用范式来衡量。范式是符合某一种级别的关系模式的集合,是衡量关系模式规范化程度的标准,达到的关系才是规范化的。目前主要有6种范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。满足最低要求的叫第一范式,简称为1NF。在第一范式基础上进一步满足一些要求的为第二范式,简称为2NF。其余以此类推。显然各种范式之间存在联系。

1NF?2NF?3NF?BCNF?4NF?5NF

通常把某一关系模式R为第n范式简记为R∈nNF。

范式的概念最早是由E.F.Codd 提出的。在1971到1972年期间,他先后提出了1NF、2NF、3NF的概念,1974年他又和Boyee共同提出了BCNF的概念,1976年Fagin提出了4NF 的概念,后来又有人提出了5NF的概念。在这些范式中,最重要的是3NF和BCNF,它们是进行规范化的主要目标。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这个过程称为规范化。

4.4.1 规范化的含义

关系模式的规范化主要解决的问题是关系中数据冗余及由此产生的操作异常。而从函数依赖的观点来看,即是消除关系模式中产生数据冗余的函数依赖。

定义4.8 当一个关系中的所有分量都是不可分的数据项时,就称该关系是规范化的。

下述例子(表4-6、表4-7)由于具有组合数据项或多值数据项,因而说,它们都不是规范化的关系。

表4-6 具有组合数据项的非规范化关系

4.4.2 第一范式(1NF)

定义4.9 如果关系模式R中每个属性值都是一个不可分解的数据项,则称该关系模式满足第一范式(First Normal Form),简称1NF,记为R∈1NF。

第一范式规定了一个关系中的属性值必须是“原子”的,它排斥了属性值为元组、数组或某种复合数据的可能性,使得关系数据库中所有关系的属性值都是“最简形式”,这样要求的意义在于可能做到起始结构简单,为以后复杂情形讨论带来方便。一般而言,每一个关系模式都必须满足第一范式,1NF是对关系模式的起码要求。

非规范化关系转化为1NF的方法很简单,当然也不是唯一的,对表4-5、表4-6分别进

行横向和纵向展开,即可转化为如表4-8、表4-9所示的符合1NF 的关系。

表4-8 具有组合数据项的非规范化关系

但是满足第一范式的关系模式并不一定是一个好的关系模式,例如,关系模式

SLC (SNO ,DEPT ,SLOC ,CNO ,GRADE )

其中SLOC 为学生住处,假设每个学生住在同一地方,SLC 的码为(SNO ,CNO ),函数依赖包括:

(SNO ,CNO )—→F

GRADE SNO →DEPT

(SNO ,CNO )—→P

DEPT SNO →SLOC

(SNO ,CNO )—→P

SLOC

DEPT →SLOC (因为每个系只住一个地方)

显然,SLC 满足第一范式。这里(SNO ,CNO )两个属性一起函数决定GRADE 。(SNO ,CNO )也函数决定DEPT 和SLOC 。但实际上仅SNO 就函数决定DEPT 和SLOC 。因此非主属性DEPT 和SLOC 部分函数依赖于码(SNO ,CNO )。

SLC 关系存在以下3个问题: ⑴ 插入异常

假若要插入一个SNO =‘95102’,DEPT =‘IS ’,SLOC =‘N ’,但还未选课的学生,即这个学生无CNO ,这样的元组不能插入SLC 中,因为插入时必须给定码值,而此时码值的一部分为空,因而该学生的信息无法插入。

⑵ 删除异常

假定某个学生只选修了一门课,如‘99022’号学生只选修了3号课程,现在连3号课程他也选修不了,那么3号课程这个数据项就要删除。课程3是主属性,删除了课程号3,整个元组就不能存在了,也必须跟着删除,从而删除了‘99022’号学生的其它信息,产生了删除异常,即不应删除的信息也删除了。

⑶ 数据冗余度大

如果一个学生选修了10门课程,那么他的DEPT 和SLOC 值就要重复存储10次。并且当某个学生从数学系转到信息系,这本是只是一件事,只需要修改此学生元组中的DEPT 值。但因为关系模式SLC 还含有系的住处SLOC 属性,学生转系将同时改变住处,因而还必须修改元组中SLOC 的值。另外如果这个学生选修了10门课,由于DEPT ,SLOC 重复存储了10次,当数据更新时必须无遗漏地修改10个元组中全部DEPT ,SLOC 信息,这就造成了修改的复杂化,存在破坏数据一致性的隐患。

因此,SLC不是一个好的关系模式。

4.4.3 第二范式

定义4.10 如果一个关系模式R∈1NF,且它的所有非主属性都完全函数依赖于R的任一候选码,则R∈2NF。

关系模式SLC出现上述问题的原因是DEPT,SLOC对码的部分函数依赖。为了消除这些部分函数依赖,可以采用投影分解法,把SLC分解为两个关系模式:

SC(SNO,CNO,GRADE)

SL(SNO,DEPT,SLOC)

其中SC的码为(SNO,CNO),SL的码为SNO。

显然,在分解后的关系模式中,非主属性都完全函数依赖于码了。从而使上述3个问题在一定程度上得到部分的解决。

⑴在SL关系中可以插入尚未选课的学生。

⑵删除学生选课情况涉及的是SC关系,如果一个学生所有的选课记录全部删除了,只是SC关系中没有关于该学生的记录了,不会牵涉到SL关系中关于该学生的记录。

⑶由于学生选修课程的情况与学生的基本情况是分开存储在两个关系中的,因此不论该学生选多少门课程,他的DEPT和SLOC值都只存储了1次。这就大大降低了数据冗余程度。

⑷由于学生从数学系转到信息系,只需修改SL关系中该学生元组的DEPT值和SLOC值,由于DEPT,DLOC并未重复存储,因此简化了修改操作。

2NF就是不允许关系模式的属性之间有这样的依赖X→Y,其中X是码的真子集,Y是非主属性。显然,码只包含一个属性的关系模式,如果属于1NF,那么它一定属于2NF,因为它不可能存在非主属性对码的部分函数依赖。

上例中的SC关系和SL关系都属于2NF。可见,采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大等问题。

但是将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。也就是说,属于2NF的关系模式并不一定是一个好的关系模式。

例如,2NF关系模式SL(SNO,DEPT,SLOC)中有下列函数依赖。

SNO→DEPT

DEPT→SLOC

SNO→SLOC

由上可知,SLOC传递函数依赖于SNO,即SL中存在非主属性对码的传递函数依赖,SL 关系中仍然存在插入异常、删除异常和数据冗余度大的问题。

⑴删除异常:如果某个系的学生全部毕业了,在删除该系学生信息的同时,把这个系的信息也丢掉了。

⑵数据冗余度大:每一个系的学生都住在同一个地方,关于系的住处的信息却重复出现,重复次数与该系学生人数相同。

⑶修改复杂:当学校调整学生住处时,比如信息系的学生全部迁到另一地方住宿,由于关于每个系的住处信息是重复存储的,修改时必须同时更新该系所有学生的SLOC属性值。

所以SL仍然存在操作异常问题。仍然不是一个好的关系模式。

4.4.4 第三范式

定义4.11 如果一个关系模式R∈2NF,且所有非主属性都不传递函数依赖于任何候选码,则R∈3NF。

关系模式SL出现上述问题的原因是SLOC传递函数依赖于SNO。为了消除该传递函数依赖,可以采用投影分解法,把SL分解为两个关系模式:

SD(SNO,DEPT)

DL(DEPT,SLOC)

其中SD的码为SNO,DL的码为DEPT。

显然,在关系模式中既没有非主属性对码的部分函数依赖也没有非主属性对码的传递函数依赖,基本上解决了上述问题。

⑴ DL关系中可以插入无在校学生的信息。

⑵某个系的学生全部毕业了,只是删除SD关系中的相应元组,DL关系中关于该系的信息仍然存在。

⑶关于系的住处的信息只在DL关系中存储一次。

⑷当学校调整某个系的学生住处时,只需修改DL关系中一个相应元组的SLOC属性值。

3NF就是不允许关系模式的属性之间有这样的非平凡函数依赖X→Y,其中X不包含码,Y是非主属性。X不包含码有两种情况,一种情况X是码的真子集,这也是2NF不允许的,另一种情况X含有非主属性,这是3NF进一步限制的。

上例中的SD关系和DL关系都属于3NF。可见,采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上解决原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。

但是将一个2NF关系分解为多个3NF的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余。也就是说,属于3NF的关系模式虽然基本上消除大部分异常问题,但解决得并不彻底,仍然存在不足。

例如:模型SC(SNO,SNAME,CNO,GRADE)

如果姓名是惟一的,模型存在两个候选码:(SNO,CNO)和(SNAME,CNO)。

模型SC只有一个非主属性GRADE,对两个候选码(SNO,CNO)和(SNAME,CNO)都是完全函数依赖,并且不存在对两个候选码的传递函数依赖。因此SC∈3NF。

但是当学生如果退选了课程,元组被删除也失去学生学号与姓名的对应关系,因此仍然存在删除异常的问题;并且由于学生选课很多,姓名也将重复存储,造成数据冗余。因此3NF虽然已经是比较好的模型,但仍然存在改进的余地。

4.4.5 BCNF范式

定义4.12 关系模式R∈1NF,对任何非平凡的函数依赖X→Y(Y\ X),X均包含码,则R∈BCNF。

BCNF是从1NF直接定义而成的,可以证明,如果R∈BCNF,则R∈3NF。

由BCNF的定义可以看到,每个BCNF的关系模式都具有如下3个性质。

(1)所有非主属性都完全函数依赖于每个候选码。

(2)所有主属性都完全函数依赖于每个不包含它的候选码。

(3)没有任何属性完全函数依赖于非码的任何一组属性。

如果关系模式R∈BCNF,由定义可知,R中不存在任何属性传递函数依赖于或部分依赖

于任何候选码,所以必定有R∈3NF。但是,如果R∈3NF,R未必属于BCNF。

3NF和BCNF是以函数依赖为基础的关系模式规范化程度的测度。

如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。

BCNF是对3NF的改进,但是在具体实现时有时是有问题的,例如下面的模型SJT(U,F)中:

U=STJ,F={SJ→T,ST→J,T→J}

码是:ST和SJ,没有非主属性,所以STJ∈3NF。

但是非平凡的函数依赖T→J中T不是码,因此SJT不属于BCNF。

而当用分解的方法提高规范化程度时,将破坏原来模式的函数依赖关系,这对于系统设计来说是有问题的。这个问题涉及模式分解的一系列理论问题,在这里不再做进一步的探讨。

在信息系统的设计中,普遍采用的是“基于3NF的系统设计”方法,就是由于3NF是无条件可以达到的,并且基本解决了“异常”的问题,因此这种方法目前在信息系统的设计中仍然被广泛地应用。

如果仅考虑函数依赖这一种数据依赖,属于BCNF的关系模式已经很完美了。但如果考虑其他数据依赖,例如,多值依赖,属于BCNF的关系模式仍存在问题,不能算是一个完美的关系模式。

4.5 多值依赖与4NF

在关系模式中,数据之间是存在一定联系的,而对这种联系处理的适当与否直接关系到模式中数据冗余的情况。函数依赖是一种基本的数据依赖,通过对数据函数依赖的讨论和分解,可以有效地消除模式中的冗余现象。函数依赖实质上反映的是“多对一”联系,在实际应用中还会有“一对多”形式的数据联系,诸如此类的不同于函数依赖的数据联系也会产生数据冗余,从而引发各种数据异常现象。本节就讨论数据依赖中“多对一”现象及其产生的问题。

4.5.1 问题的引入

让我们先看下述例子:

【例4.6】设有一个课程安排关系,如表4-10所示:

表4-10 课程安排示意图

在这里的课程安排具有如下语义:

⑴“高等数学”这门课程可以由3个教师担任,同时有两本教材可以选用。

⑵“数据结构”这门课程可以由3个教师担任,同时有3本教材可以选用。

如果分别用Cn、Tn和Bn表示“课程名称”、“任课教师”和“教材名称”,上述情形可以表示如表4-11所示的关系CTB。

表4-11 关系CTB

很明显,这个关系表是数据高度冗余的。

通过仔细分析关系CTB,可以发现它有如下特点:

⑴属性集{Cn}与{Tn}之间存在着数据依赖关系,在属性集{Cn}与{Bn}之间也存在着数据依赖关系,而这两个数据依赖都不是“函数依赖”,当属性子集{Cn}的一个值确定之后,别一属性子集{Tn}就有一组值与之对应。例如当课程名称Cn的一个值“高等数学”确定之后,就有一组任课教师Tn的值“T11、T12和T13”与之对应。对于Cn与Bn 的数据依赖也是如此,显然,这是一种“一对多”的情形。

⑵属性集{Tn}和{Bn}也有关系,这种关系是通过{Cn}建立起来的间接关系,而且这种关系最值得注意的是,当{Cn}的一个值确定之后,其所对应的一组{Tn}值与U-{Cn}-{Tn}无关,取定{Cn}的一个值为“高等数学”,则对应{Tn}一组值“T11、T12和T13”与此“高等数学”课程选用的教材即U-{Cn}-{Tn}值无关。显然,这是“一对多”关系中的一种特殊情况。

如果属性X与Y之间依赖关系具有上述特征,就不为函数依赖关系所包容,需要引入新的概念予以刻画与描述,这就是多值依赖的概念。

4.5.2 多值依赖基本概念

1. 多值依赖的概念

定义4.13 设有关系模式R(U),X、Y是属性集U中的两个子集,而r是R(U)中任意给定的一个关系。如果有下述条件成立,则称Y多值依赖(Multivalued Dependency)于X,记为X→→Y:

⑴对于关系r在X上的一个确定的值(元组),都有r在Y中一组值与之对应。

⑵ Y的这组对应值与r在Z=U-X-Y中的属性值无关。

此时,如果X→→Y,但Z=U-X-Y≠Ф,则称为非平凡多值依赖,否则称为平凡多值依赖。平凡多值依赖的一个常见情形是U=X∪Y,此时Z=Ф,多值依赖定义中关于X→→Y

的要求总是满足的。

2. 多值依赖概念分析

属性集Y多值依赖于属性值X,即X→→Y的定义实际上说明下面几个基本点:

?“⑴”说明X与Y之间的对应关系是相当宽泛的,即X一个值所对应的Y值的个数没有作任何强制性规定,Y值的个数可以是从零到任意多个自然数,是“一对多”的情形。

?“⑵”说明这种“宽泛性”应当受必要的限制,即X所对应的Y的取值与U-X-Y无关,是一种特定的“一对多”情形。确切地说,如果用形式化语言描述,则有:在R(U)中如果存在X→→Y,则对R中任意一个关系r,当元组s和t属于r,并且在X 上的投影相等:s[X]=t[X],此时应有:

s=s[X]+s[Y]+s[U-X-Y]和t=t[X]+t[Y]+t[U-X-Y]

做出相应的两个新的元组:

u=s[X]+t[Y]+s[U-X-Y]和v=t[X]+s[Y]+t[U-X-Y]

则u和v还应当属于r。

上述情形可以用表4-12予以适当解释:

在例4.6关系CTB中,按照上述分析,可以验证Cn→→Tn, Cn→→Bn。

“(1)”和“(2)”说明考察关系模式R(U)上多值依赖X→→Y是与另一个属性子集Z=U-X -Y密切相关的,而X、Y和Z构成了U的一个分割,即U=X∪Y∪Z,这一观点对于多值依赖概念的推广十分重要。

3. 多值依赖的性质

由定义可以得到多值依赖具有下述基本性质:

⑴在R(U)中X→→Y成立的充分必要条件是X→→U-X-Y成立。

必要性可以从上述分析中得到证明。事实上,交换s和t的Y值所得到的元组和交换s 和t中的Z=U-X-Y值得到的两个元组是一样的。充分性类似可证。

⑵在R(U)中如果X→Y成立,则必有X→→Y。

事实上,此时,如果s、t在X上的投影相等,则在Y上的投影也必然相等,该投影自然与s和t在Z=U-X-Y的投影与关。

“⑴”表明多值依赖具有某种“对称性质”:只要知道了R上的一个多值依赖X→→Y,就可以得到另一个多值依赖X→→Z,而且X、Y和Z是U的分割;“⑵”说明多值依赖是函数依赖的某种推广,函数依赖是多值依赖的特例。

数据库设计理论

数据库的设计理论 第一节,关系模式的设计问题 一概念: 1. 关系模型:用二维表来表示实体集,用外键来表示实体间的联系,这样的数据模型,叫做关系数据模型。 关系模型包含内涵和外延两个方面: 外延:就是关系或实例、或当前值。它与时间有关,随时间的变化而变化。(主要是由于元组的插入、删除、修改等操作引起的) 内涵:内涵是与时间独立的,它包括关系属性、以及域的一些定义和说明。还有数据的各种完整性约束。 数据的完整性约束分为静态约束和动态约束。 静态约束包括数据之间的联系(称为数据依赖),主键的设计和各种限制。 动态约束主要定义如插入、删除和修改等操作的影响。 通常我们称内涵为关系模式。 2. 关系模式:是对一个关系的描述,二维表的表头那一行称为关系模式,又称为表的框架或记录类型。 关系模式的定义包括:模式名、属性名、值域名和模式的主键。关系模式仅仅是对数据特征的描述。 关系模式的一般形式为R ( U , D , DOM , F ) R 是关系名。 U 是全部属性的集合。 D 是属性域的集合。 DOM 是U 和D 之间的映射关系,关系运算的安全限制。 F 是属性间的各种约束关系,也称为数据依赖。

关系模式可以表示为: 关系模式(属性名1,属性名2 ,……,属性名n ) 示例:学生(学号,姓名,年龄,性别,籍贯)。 当且仅当U 上的一个关系r 满足 F 时,r 就称为关系模式R(U,F)上的一个关系,R是关系的型,r 是关系的值,每个值称为R 的一个关系。 关系数据库模式: 一个数据库是由多个关系构成的。 一个关系数据库对应多个不同的关系模式,关系数据库模式是一个数据库中所有的关系模式的集合。它规定了数据库的全局逻辑结构。 关系数据库模式可以表示为: S = { Ri < Ui , Di , DOM , Fi > | i = 1,2,…, n } 3. 关系子模式 关系子模式是用户所用到的那部分数据的描述。 外模式是关系子模式的集合。 4. 存储模式 存储模式及内模式。 关系数据库理论的主要内容: (1)数据依赖。数据依赖起着核心的作用。 (2)范式。 (3)模式的设计方法。 如何设计一个合理的数据库模式: (1)与实际问题相结合。 泛关系模式:把现实问题的所有属性组成一个关系模式 泛关系:泛关系模式的实例称为泛关系。 泛关系模式中存在的问题: a 数据冗余 b 更新异常, c 插入异常 d 删除异常。

数据库基本概念

数据库基本概念 引言 本章的目标是讲解数据库研究人员常常要使用到的一些理论和术语。我所在的工作组集中了一批以开发性能优异的数据库系统为谋生手段的精英,数据库理论乍看起来与我们的具体工作相距甚远。 是否很有必要学习有关数据库理论方面的知识可能是留给你思考的一个问题。我们说,理解一种技术的基本原理是非常重要的。这就好比把你的汽车交给一个不懂火花塞工作原理的机械师,或是坐在一架由不懂飞行理论的驾驶员的飞机上。如果你不懂数据库设计的相关理论,又怎能指望用户登陆门请你设计系统呢? 研究人员所用的某些术语和概念令我们感到困惑,部分原因是数学基础的问题。有一些术语,大多数程序员理解为一种含义,而实际上是完全不同的另一种含义。为了能设计合理的系统,了解关系数据库理论是十分重要的。 为了搞清楚研究人员的专业术语,我们需要学习一些关系数据库理论中较浅显的内容,并且同我们所熟知的SQL概念进行比较。许多书中都讲解了这些内容,所以并不打算过于深入地探讨理论。我们只提供一些基本且实用的数据库概念。 本章将主要从面向SQL的角度介绍关系理论。我们将常常涉及相关理论的具体实现,尽管这超出了本书的范围,但却是难以避免的。然而我们不会陷入实现的细节,仅仅给出一个概述。更进一步的内容,参看第一章提到的参考书目。 在本章中,我们将会看到下列内容: ?关系模型——考察相关的技术术语:我们将在后面的章节中构造它们 ?其他数据库概念的定义 关系模型 正像第1章中提到的,E.F.Codd早在1970年就提出了关系模型的概念。在这一节中,我们将从SQL Server 的角度出发,考察一些在关系模型中比较重要的内容。 正像我们所看到的那样,SQL Server 与关系模型有很多共性的东西,但

数据库原理期中练习答案

一、选择题 1.同一个关系模型的任意两个元组值(A )。 A. 不能全同 B. 可全同 C. 必须全同 D. 以上都不是2.关系模式R中的属性全部是主属性,则R的最高范式必定是(B )。 A. 2NF B. 3NF C. BCNF D. 4NF 3.下列哪个不是数据库系统必须提供的数据控制功能(B )。 A. 安全性 B. 可移植性 C. 完整性 D. 并发控制 4.若关系R的候选码都是由单属性构成的,则R的最高范式必定是(B )。 A. 1NF B. 2NF C. 3NF D.无法确定 5.下列哪些运算是关系代数的基本运算(D )。 A. 交、并、差 B. 投影、选取、除、联结 C. 联结、自然联结、笛卡尔乘积 D. 投影、选取、笛卡尔乘积、差运算6.SQL语句的一次查询结果是(D )。 A. 数据项 B. 记录 C. 元组 D. 表 7.在关系R(R#, RN, S#)和S(S#,SN, SD)中,R的主码是R#, S的主码是S#,则S#在R中称为(A )。 A. 外码候选码 C. 主码 D. 超码 8.在DBS中,DBMS和OS之间关系是(D )。 A. 并发运行 B. 相互调用 C. OS调用DBMS DBMS调用OS 9.层次模型、网状模型和关系模型的划分根据是(D )。 A. 记录长度 B. 文件的大小 C. 联系的复杂程度 D. 数据之间的联系 10.下列哪个是单目运算(C )。 A. 差 B. 并 C. 投影 D. 除法 11.采用SQL查询语言对关系进行查询操作,若要求查询结果中不能出现重复元组,可在SELECT子句后增加保留字( A )。 A. DISTINCT B. UNIQUE C. NOT NULL D. SINGLE 12.下列SQL语句中,能够实现“给用户teacher授予查询SC的权限”这一功能的是(A )。 A. GRANT SELECT on SC to teacher B. REVOKE SELECT on SC to teacher C. GRANT SELECT on TABLE to teacher D. REVOKE SELECT on TABLE to teacher 13.设有关系S (SNO,SNAME,DNAME,DADDR),将其规范化到第三范式正确的答案是( B )。 A. S1(SNO,SNAME)S2(DNAME,DADDR) B. S1 (SNO,SNAME,DNAME)DEPT(DNAME,DADDR) C. S1(SNO,SNAME,DADDR)S2(SNO,SNAME)

关系数据库逻辑设计(一)

关系数据库逻辑设计(一) (总分:116.98,做题时间:90分钟) 一、选择题(总题数:37,分数:37.00) 1.数据库逻辑设计的依据不包括______。 A) 概念模型 B) 安全性要求 C) 数据约束 D) 功能模型 (分数:1.00) A. B. C. D. √ 解析:[解析] 数据库逻辑设计的依据是数据库概念设计的结果,包括概念数据模型、数据处理要求、数据约束、安全性要求及DBMS的相关信息,因此本题答案为D。 2.以下关于数据库逻辑设计叙述错误的是______。 A) 数据库逻辑设计是面向机器世界的 B) 这个阶段将按照数据库管理系统支持的数据模型来组织和存储数据 C) 目标是得到实际的数据库管理系统可处理的数据库模式,并做到数据结构合理 D) 包括定义和描述数据库的局部逻辑结构、数据之间的关系、数据完整性及安全性要求等 (分数:1.00) A. B. C. D. √ 解析:[解析] 数据库逻辑设计包括定义和描述数据库的全局逻辑结构、数据之间的关系、数据完整性及安全性要求等。因此本题答案为D。 3.在关系数据库设计中,设计关系模式是数据库设计中哪个阶段的任务______。 A) 逻辑设计阶段 B) 概念设计阶段 C) 物理设计阶段 D) 需求分析阶段 (分数:1.00) A. √ B. C. D. 解析:[解析] 关系数据模型是常用的逻辑数据模型,所以设计关系模式是数据库设计中逻辑设计阶段的任务,因此本题答案为A。 4.对于关系的主码必须满足的条件,有下列说法: Ⅰ.一个关系中的主码属性或属性组能函数决定该关系中的所有其他属性 Ⅱ.一个关系中的主码属性不能与其他关系中的主码属性重名 Ⅲ.在一个关系中,一个主码属性的任一真子集都不能函数决定其他属性

关系数据库设计理论练习题答案

第四章关系数据库设计理论练习题 一、选择题 1、关系规范化中的删除操作异常是指①A,插入操作异常是指②D A、不该删除的数据被删除. B、不该插入的数据被插入; C、应该删除的数据未被删除; D、应该插入的数据未被插入. 2、关系数据库规范化是为解决关系数据库中()问题而引入的。 A、插入异常、删除异常和数据冗余; B、提高查询速度; C、减少数据操作的复杂性; D、保证数据的安全性和完整性。 3、假设关系模式R(A,B)属于3NF,下列说法中()是正确的。 A、R一定消除了插入和删除异常; B、R仍可能存在一定的插入和删除异常; C、R一定属于BCNF; D、A和C都是. 4、关系模式的分解 A、唯一 B、不唯一. 5、设有关系W(工号,姓名,工种,定额),将其规范化到第三范式正确的答案是() A、W1(工号,姓名),W2(工种,定额); B、W1(工号,工种,定额),W2(工号,姓名); C、W1(工号,姓名,工种),W2(工种,定额); D、以上都不对. 6、设学生关系模式为:学生(学号,姓名,年龄,性别,平均成绩,专业),则该关系模式的主键是() A、姓名; B、学号,姓名; C、学号; D、学号,姓名,年龄. 7根据数据库规范化理论,下面命题中正确的是() A、若R∈2NF,则R∈3NF B、若R∈1NF,则R不属于BCNF C、若R∈3NF,则R∈BCNF D、若R∈BCNF,则R∈3NF 8、关系数据库设计理论中,起核心作用的是 A、范式; B、模式设计; C、函数依赖; D、数据完整性. 9、设计性能较优的关系模设称为规范化,规范化的主要理论依据是() A、关系规范化理论; B、关系运算理论;

《数据库原理》知识点总结

《数据库原理》知识点总结标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

目录未找到目录项。 一数据库基础知识(第1、2章) 一、有关概念 1.数据 2.数据库(DB) 3.数据库管理系统(DBMS) Access 桌面DBMS VFP SQL Server Oracle 客户机/服务器型DBMS MySQL DB2 4.数据库系统(DBS) 数据库(DB) 数据库管理系统(DBMS) 开发工具 应用系统 二、数据管理技术的发展 1.数据管理的三个阶段 概念模型 一、模型的三个世界 1.现实世界

2.信息世界:即根据需求分析画概念模型(即E-R图),E-R图与DBMS 无关。 3.机器世界:将E-R图转换为某一种数据模型,数据模型与DBMS相关。 注意:信息世界又称概念模型,机器世界又称数据模型 二、实体及属性 1.实体:客观存在并可相互区别的事物。 2.属性: 3.关键词(码、key):能唯一标识每个实体又不含多余属性的属性组合。 一个表的码可以有多个,但主码只能有一个。 例:借书表(学号,姓名,书号,书名,作者,定价,借期,还期) 规定:学生一次可以借多本书,同一种书只能借一本,但可以多次续借。 4.实体型:即二维表的结构 例 student(no,name,sex,age,dept) 5.实体集:即整个二维表 三、实体间的联系: 1.两实体集间实体之间的联系 1:1联系 1:n联系 m:n联系 2.同一实体集内实体之间的联系 1:1联系 1:n联系 m:n联系 四、概念模型(常用E-R图表示) 属性: 联系: 说明:① E-R图作为用户与开发人员的中间语言。 ② E-R图可以等价转换为层次、网状、关系模型。 举例: 学校有若干个系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授 和副教授每人各带若干研究生。每个班有若干学生,每个学生选修若干课程,每门课程有若干学生选修。用E-R图画出概念模型。

数据库的4个基本概念

数据库的4个基本概念 1.数据(Data):描述事物的符号记录称为数据。 2.数据库(DataBase,DB):长期存储在计算机内、有组织的、可共享的大量数据的集合。 3.数据库管理系统(DataBase Management System,DBMS 4.数据库系统(DataBase System,DBS) 数据模型 数据模型(data model)也是一种模型,是对现实世界数据特征的抽象。用来抽象、表示和处理现实世界中的数据和信息。数据模型是数据库系统的核心和基础。 数据模型的分类 第一类:概念模型 按用户的观点来对数据和信息建模,完全不涉及信息在计算机中的表示,主要用于数据库设计现实世界到机器世界的一个中间层次 实体(Entity): 客观存在并可相互区分的事物。可以是具体的人事物,也可以使抽象的概念或联系 实体集(Entity Set): 同类型实体的集合。每个实体集必须命名。 属性(Attribute): 实体所具有的特征和性质。 属性值(Attribute Value): 为实体的属性取值。 域(Domain): 属性值的取值范围。 码(Key): 唯一标识实体集中一个实体的属性或属性集。学号是学生的码 实体型(Entity Type): 表示实体信息结构,由实体名及其属性名集合表示。如:实体名(属性1,属性2,…) 联系(Relationship): 在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体型内部的联系(各属性)和实体型之间的联系(各实体集)。有一对一,一对多,多对多等。 第二类:逻辑模型和物理模型 逻辑模型是数据在计算机中的组织方式 物理模型是数据在计算机中的存储方式 数据模型的组成要素 数据模型通常由数据结构、数据操作和数据的完整性约束条件三部分组成 关系模型(数据模型的一种,最重要的一种) 从用户观点看关系模型由一组关系组成。每个关系的数据结构是一张规范化的二维表。 ?关系(Relation):一个关系对应通常说的一张表。 ?元组(Tuple):表中的一行即为一个元组。 ?属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名。 ?码(Key):表中的某个属性组,它可以唯一确定一个元组。 ?域(Domain):一组具有相同数据类型的值的集合。属性的取值范围来自某个域。

关系数据库规范化理论常见试题及答案

关系数据库规范化理论常见试题及答案 1.关系规范化中的操作异常有哪些?它是由什么引起的?解决的办法是什么? 答:关系规范化中的操作异常有插入异常、更新异常和删除异常,这些异常是由于关系中存在不好的函数依赖关系引起的。消除不良函数依赖的办法是进行模式分解,即将一个关系模式分解为多个关系模式。 2.第一范式、第二范式和第三范式的关系的定义是什么? 答:不包含非原子项属性的关系就是第一范式的关系;对于第一范式的关系,如果此关系中的每个非主属性都完全函数依赖于主键,则此关系属于第二范式;对于第二范式的关系,如果所有的非主属性都不传递依赖于主键,则此关系就是第三范式的。 3.什么是部分依赖?什么是传递依赖?请举例说明。 答:部分依赖关系是指某个属性只由构成主键的部分列决定,而和另一些列无关。例如对关系:学生选课(学号,姓名,课程号,成绩),此关系的主键是(学号,课程号),而“姓名”列只由“学号”决定,与“课程号”无关,这就是部分依赖关系。 传递依赖指的是某个非主键属性是由另一个非主键属性决定的,而这个非主键属性再由主键决定。例如对关系:学生(学号、姓名、所在系,系主任),此关系的主键为(学号),而“系主任”由“所在系”决定,“所在系”又由“学号”决定,因此“系主任” 对“学号”是传递依赖关系。 4.第三范式的表是否一定不包含部分依赖关系? 答:是的。 5.对于主键只由一个属性组成的关系,如果它是第一范式关系,则它是否一定也是第二范式关系?答:是的。因为如果一个关系的主键只由一个属性组成,则此关系中一定不会存在部分依赖关系。 6.设有关系模式:学生修课管理(学号,姓名,所在系,性别,课程号,课程名,学分,成绩)。设一名学生可以选修多门课程,一门课程可以被多名学生选修。一名学生有唯一的所在系,每门课程有唯一的课程名和学分。请指出此关系模式的候选键,判断此关系模式是第几范式的;若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主键和外键。 答:候选键为:(学号,课程号),它也是此关系模式的主键。由于存在函数依赖:学号→姓名,课程号→课程名 因此,存在非主属性对主键的部分函数依赖关系,因此它不是第二范式的表。分解如下:学生表(学号,姓名,所在系,性别),主键为“学号”,已属于第三范式。 课程表(课程号,课程名,学分),主键为“课程号”,已属于第三范式。 选课表(学号,课程号,成绩),主键为(学号,课程号),已属于第三范式 7.设有关系模式:学生表(学号,姓名,所在系,班号,班主任,系主任),其语义为:一名学生只在一个系的一个班学习,一个系只有一名系主任,一个班只有一名班主任,一个系可以有多个班。请指出此关系模式的候选键,判断此关系模式是第几范式的;若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主键和外键。

关系数据库设计

目录 一 Codd的RDBMS12法则——RDBMS的起源 二关系型数据库设计阶段 三设计原则 四命名规则 数据库设计,一个软件项目成功的基石。很多从业人员都认为,数据库设计其实不那么重要。现实中的情景也相当雷同,开发人员的数量是数据库设计人员的数倍。多数人使用数据库中的一部分,所以也会把数据库设计想的如此简单。其实不然,数据库设计也是门学问。 从笔者的经历看来,笔者更赞成在项目早期由开发者进行数据库设计(后期调优需要DBA)。根据笔者的项目经验,一个精通OOP和ORM的开发者,设计的数据库往往更为合理,更能适应需求的变化,如果追其原因,笔者个人猜测是因为数据库的规范化,与OO的部分思想雷同(如内聚)。而DBA,设计的数据库的优势是能将DBMS的能力发挥到极致,能够使用SQL和DBMS实现很多程序实现的逻辑,与开发者相比,DBA优化过的数据库更为高效和稳定。如标题所示,本文旨在分享一名开发者的数据库设计经验,并不涉及复杂的SQL语句或DBMS使用,因此也不会局限到某种DBMS产品上。真切地希望这篇文章对开发者能有所帮助,也希望读者能帮助笔者查漏补缺。 一?Codd的RDBMS12法则——RDBMS的起源 Edgar Frank Codd(埃德加·弗兰克·科德)被誉为“关系数据库之父”,并因为在数据库管理系统的理论和实践方面的杰出贡献于1981年获图灵奖。在1985年,Codd 博士发布了12条规则,这些规则简明的定义出一个关系型数据库的理念,它们被作为所有关系数据库系统的设计指导性方针。 1.信息法则?关系数据库中的所有信息都用唯一的一种方式表示——表中的值。 2.保证访问法则?依靠表名、主键值和列名的组合,保证能访问每个数据项。 3.空值的系统化处理?支持空值(NULL),以系统化的方式处理空值,空值不依赖于数据类型。 4.基于关系模型的动态联机目录?数据库的描述应该是自描述的,在逻辑级别上和普通数据采用同样 的表示方式,即数据库必须含有描述该数据库结构的系统表或者数据库描述信息应该包含在用 户可以访问的表中。 5.统一的数据子语言法则?一个关系数据库系统可以支持几种语言和多种终端使用方式,但必须至少 有一种语言,它的语句能够一某种定义良好的语法表示为字符串,并能全面地支持以下所有规 则:数据定义、视图定义、数据操作、约束、授权以及事务。(这种语言就是SQL) 6.视图更新法则?所有理论上可以更新的视图也可以由系统更新。 7.高级的插入、更新和删除操作?把一个基础关系或派生关系作为单个操作对象处理的能力不仅适应 于数据的检索,还适用于数据的插入、修改个删除,即在插入、修改和删除操作中数据行被视 作集合。 8.数据的物理独立性?不管数据库的数据在存储表示或访问方式上怎么变化,应用程序和终端活动都 保持着逻辑上的不变性。 9.数据的逻辑独立性?当对表做了理论上不会损害信息的改变时,应用程序和终端活动都会保持逻辑 上的不变性。 10.数据完整性的独立性?专用于某个关系型数据库的完整性约束必须可以用关系数据库子语言定 义,而且可以存储在数据目录中,而非程序中。

关系数据库理论

第4部分关系数据库理论 复习习题与讲解资料 【主讲教师:钱哨】 一.考试大纲考点要求 1 了解关系模式设计中可能出现的问题及其产生原因以及解决的途径。 2 掌握函数依赖、完全函数依赖、部分函数依赖、传递函数依赖的定义,能计算属性的封闭集,并由此得到关系的候选键。 3 掌握第一范式( 1NF )、第二范式( 2NF )和第三范式( 3NF )的定义,能判别关系模式的范式等级。 4 掌握关系模式的分解(规范到 3NF )的步骤、分解的原则和分解的方法。 二.单项选择题 1. 为了设计出性能较优的关系模式,必须进行规范化,规范化主要的理论依据是()。 A. 关系规范化理论 B. 关系代数理论 C.数理逻辑 D. 关系运算理论 2. 规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每一个属性都是()。 A. 长度不变的 B. 不可分解的 C.互相关联的 D. 互不相关的 3. 已知关系模式R(A,B,C,D,E)及其上的函数相关性集合F={A→D,B→C ,E→ A },该关系模式的候选关键字是()。 A.AB B. BE C.CD D. DE

4. 设学生关系S(SNO,SNAME,SSEX,SAGE,SDPART)的主键为SNO,学生选课关系SC(SNO,CNO,SCORE)的主键为SNO和CNO,则关系R(SNO,CNO,SSEX,SAGE,SDPART,SCORE)的主键为SNO和CNO,其满足()。 A. 1NF B.2NF C. 3NF D. BCNF 5. 设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={ C →P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R },关系模式W的一个关键字是()。 A. (S,C) B. (T,R) C. (T,P) D. (T,S) 6. 关系模式中,满足2NF的模式()。 A. 可能是1NF B. 必定是1NF C. 必定是3NF D. 必定是BCNF 7. 关系模式R中的属性全是主属性,则R的最高范式必定是()。 A. 1NF B. 2NF C. 3NF D. BCNF 8. 消除了部分函数依赖的1NF的关系模式,必定是()。 A. 1NF B. 2NF C. 3NF D. BCNF 9. 如果A->B ,那么属性A和属性B的联系是()。 A. 一对多 B. 多对一 C.多对多 D. 以上都不是 10. 关系模式的候选关键字可以有1个或多个,而主关键字有()。 A. 多个 B. 0个 C. 1个 D. 1个或多个 11. 候选关键字的属性可以有()。 A. 多个 B. 0个 C. 1个 D. 1个或多个 12. 关系模式的任何属性()。 A. 不可再分 B. 可以再分 C. 命名在关系模式上可以不唯一 D. 以上都不是 13. 设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={ C →P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R },若将关系模式W分解为三个关系模式W1(C,P),W2(S,C,G),W2(S,T,R,C),则W1的规范化程序最

第4章+关系数据库设计理论答案

第4章关系数据库设计理论 选择题答案: (1) A (2) B (3) B (4) A (5) D (6) B (7) C (8) B (9) B (10) C (11) D (12) A (13) D (14) D (15) B (16) B (17) D (20) C (21) C (23) A (26) B (27) B (28) B (29) B (30) B (31) D (33) B B D 一、选择题: 1. 为了设计出性能较优的关系模式,必须进行规范化,规范化主要的理论依据是()。 A. 关系规范化理论 B. 关系代数理论C.数理逻辑 D. 关系运算理论 2. 规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每一个属性都是()。 A. 长度不变的 B. 不可分解的 C.互相关联的 D. 互不相关的 3. 已知关系模式R(A,B,C,D,E)及其上的函数相关性集合F={A→D,B→C ,E→A },该关系模式的候选关键字是()。 A.AB B. BE C.CD D. DE 4. 设学生关系S(SNO,SNAME,SSEX,SAGE,SDPART)的主键为SNO,学生选课关系SC(SNO,CNO,SCORE)的主键为SNO和CNO, 则关系R(SNO,CNO,SSEX,SAGE,SDPART,SCORE)的主键为SNO和CNO,其满足()。 A. 1NF B.2NF C. 3NF D. BCNF 5. 设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={ C→P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R },关系模式W的一个关键字是()。 A. (S,C) B. (T,R) C. (T,P) D. (T,S) 6. 关系模式中,满足2NF的模式()。 A. 可能是1NF B. 必定是1NF C. 必定是3NF D. 必定是BCNF 7. 关系模式R中的属性全是主属性,则R的最高范式必定是()。 A. 1NF B. 2NF C. 3NF D. BCNF 8. 消除了部分函数依赖的1NF的关系模式,必定是()。 A. 1NF B. 2NF C. 3NF D. BCNF 9. 如果A->B ,那么属性A和属性B的联系是()。 A. 一对多 B. 多对一C.多对多 D. 以上都不是 10. 关系模式的候选关键字可以有1个或多个,而主关键字有()。 A. 多个 B. 0个 C. 1个 D. 1个或多个 11. 候选关键字的属性可以有()。 A. 多个 B. 0个 C. 1个 D. 1个或多个 12. 关系模式的任何属性()。 A. 不可再分 B. 可以再分 C. 命名在关系模式上可以不唯一 D. 以上都不是 13. 设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={ C→P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R },若将关系模式W分解为三个关系

关系数据库的基本概念应用

★事业单位考试专用★ 数据库 1.数据模型(Data Models):在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。通俗地讲数据模型就是现实世界的模拟。 2.数据模型应满足三方面要求:能比较真实地模拟现实世界;容易为人所理解;便于在计算机上实现。 3.数据模型:按计算机的观点对数据建模,主要用于DBMS的实现。一般有层次,网状,关系三种。 4.矩形:表示实体集;菱形:表示联系集;线:连接实体集与联系集或属性与实体集;椭圆:表示属性;下划线:主码属性。 5.常用数据模型:层次模型、网状模型、关系模型、面向对象模型。 6.层次模型的存储结构:邻接法:前序穿线树;链接法:用指针表示层次关系(子女-兄弟链接法,层次序列链接法)。(众) 7.网状模型存储结构:链接法:用指针表示层次关系(单链,双链,环链等)。(S_XH,C_KCH) 8.关系模型中,关系的每一个分量必须是一个不可分的数据项。 9.SQL语言的REVOKE语句实现安全性数据控制功能。 10.数据仓库通常采用三层体系结构、底层的数据仓库服务器一般是一个关系型数据库系统、数据仓库前端分析工具中包括报表工具。 11.Linux是一套免费使用和自由传播的类Unix操作系统、Linux提供强大的应用程序开发环境,支持多种编程语言、Linux提供对TCP/IP协议的完全支持。 12.Solaris是SUN公司的高性能Unix,Solaris运行在许多RISC工作站和服务器

上,Solaris支持多处理、多线程。 13.Unix系统的特色:交互的分时系统、以全局变量为中心的模块结构、可以分成内核和外壳。Unix系统中进程由三部分组成:进程控制块,正文段和数据段。Unix系统中,输入/输出设备被看成是特殊文件。 14.属于企业级的大型数据库管理系统的主要有Oracle、DB2、Informix、Sybase 、SQL Server。 15.DBA是数据库系统的一个重要组成,有很多职责:定义数据库的存储结构和存取策略、定义数据库的结构、定期对数据库进行重组和重构。 16.对于数据量大的网站,应选用的数据库是DB2。 17.关系代数表达式的优化策略中,首先要做的是尽早执行选择运算。

数据库原理及应用学位考试试题及答案

《数据库原理》学位考试试题 一、单项选择题(本大题共10小题,每小题2分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,错选、多选或未选均无分。 1.在数据库三级模式间引入二级映象的主要作用是( A ) A.提高数据与程序的独立性B.提高数据与程序的安全性 C.保持数据与程序的一致性D.提高数据与程序的可移植性 2.如何构造出一个合适的数据逻辑结构是(C )主要解决的问题。 A.关系系统查询优化B.数据字典 C.关系数据库规范化理论D.关系数据库查询 3.如果事务T已在数据R上加了X锁,则其他事务在数据R上( D ) A.只可加X锁 B.只可加S锁 C. 可加S锁或X锁 D. 不能加任何锁 4.关系规范化中的删除异常是指 ( D ) A.不该删除的数据被删除B.不该插入的数据被插入 C.应该删除的数据未被删除D.应该插入的数据未被插入 5.有一名为“列车运营”实体,含有:车次、日期、实际发车时间、实际抵达时间、情况摘要等属性,该实体主码是( C ) A.车次B.日期 C.车次+日期D.车次+情况摘要 6. 对数据库物理存储方式的描述称为( B ) A.外模式B.内模式 C.概念模式D.逻辑模式 7. 关系R与关系S只有1个公共属性,T1是R与S作θ连接的结果,T2是R与S作自然连接的结果, 则(D )。 A. T1的属性个数等于T2的属性个数 B. T1的属性个数小于T2的属性个数 C. T1的属性个数大于或等于T2的属性个数 D. T1的属性个数大于T2的属性个数 8. 一个关系模式R(x1, x2, x3, x4),假定该关系存在着如下函数依赖: x1→x2,x1→x3,x3→x4,则该关系属于(A )。 A. 2NF B. 3NF C. 4NF D. BCNF 9. 把对关系SPJ的属性QTY的修改权授予用户李勇的T-SQL语句是( C ) A. GRANT QTY ON SPJ TO '李勇' B. GRANT UPDATE(QTY) ON SPJ TO '李勇' C. GRANT UPDATE (QTY) ON SPJ TO 李勇 D. GRANT UPDATE ON SPJ (QTY) TO 李勇

《数据库原理》1-2章作业(答案)

《数据库原理》知识点 第一章 1、什么是4D(Data, DB、DBMS、DBS),它们之间的关系? 答: 所谓4D是分别指:数据(Data)、数据库(DB或DataBase)、数据库管理系统(DBMS)、数据库系统(DBS)。其中: 数据(Data): 数据库(DB或DataBase): 数据库管理系统(DBMS): 数据库系统(DBS): 当开发一个数据库系统(DBS)时,通常需要借助数据库管理系统(DBMS)来完成建立数据库(DB)、对数据库中数据(Data)进行操作等功能。 2、数据模型的组成要素有哪些? 答:包括: 数据结构:描述数据库的组成对象以及对象之间的联系。 数据操作:指对数据库中各种对象的实例允许执行的操作集合。 数据的完整性约束条件:是指给定的数据模型中数据及其联系所具有的制约和依存规则。 3、ER模型的组成要素有哪些? 答: 实体型、属性和联系所组成。 实体型: 属性: 联系: 4、学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教师,其中有的教授和副教授每人各带若干研究生,每个班有若干学生,每个学生选修若干课程,每门课程可由若干学生选修。请用E-R图画出此学校的概念模型。 答:

5、某工厂生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上。这些零件由不同的原材料制成,不同零件所用的材料可以相同。这些零件按照所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中。请用E-R图画出此工厂产品、零件、材料、仓库的概念模型。

6、试述数据库系统三级模式结构,这种结构的优点是什么? 答: 数据库系统的三级模式结构由外模式、模式、内模式组成。 外模式: 模式: 内模式: 数据库系统的三级模式是针对数据的3个抽象级别,其优点是:它把数据的具体组织留给DBMS管理,使用户能抽象地处理数据,而不必关心数据在计算机中的具体表示和存储方式。 为了能够在内部实现这3个抽象层次之间的联系和转换,数据库系统在三级模式之间提供了二层映像:外模式/模式映像、模式/内模式映像,通过二层映像保证了数据库系统中数据能够具有较高的逻辑独立性和物理独立性。 7、叙述DBS的组成,其中的主要软件是什么?主要人员是谁? 答: DBS一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户组成。 主要软件包括:数据库管理系统。 主要人员:数据库管理员。 第二章 1、叙述关系模型的三类完整性,并举例说明。 答:

数据库原理及应用(课后练习)---第4章 关系数据库设计理论

第4章关系数据库设计理论第4章关系数据库设计理论 习题 一、选择题 1、C 2、B 3、C 4、C 5、A 6、B 7、A 8、B 9、D 10、B 二、填空题 1、数据依赖主要包括_函数_依赖、_多值_依赖和连接依赖。 2、一个不好的关系模式会存在_插入异常_、_删除异常_和__修改复杂_等弊端。 3、设X→Y为R上的一个函数依赖,若_对任意X的真子集X’,均无X’→Y 存在__,则称Y完全函数依赖于X。 4、设关系模式R上有函数依赖X→Y和Y→Z成立,若_Y不包含于X_且_Y→X不成立_,则称Z传递函数依赖于X。 5、设关系模式R的属性集为U,K为U的子集,若_K→U为完全函数依赖_,则称K 为R的候选键。 6、包含R中全部属性的候选键称_主属性_。不在任何候选键中的属性称__非主属性_。 7、Armstrong公理系统是_有效__的和_完备__的。 8、第三范式是基于_函数_依赖的范式,第四范式是基于_多值_依赖的范式。 9、关系数据库中的关系模式至少应属于_第一_范式。 10、规范化过程,是通过投影分解,把_一个范式级别较低的_的关系模式“分解”为_若干个范式级别较高__的关系模式。 111

数据库原理及应用 112 三、简答题 1、解释下列术语的含义:函数依赖、平凡函数依赖、非平凡函数依赖、部分函数依赖、完全函数依赖、传递函数依赖、范式、无损连接性、依赖保持性。 解: 函数依赖:设关系模式R (U ,F ),U 是属性全集,F 是U 上的函数依赖集,X 和Y 是U 的子集,如果对于R (U )的任意一个可能的关系r ,对于X 的每一个具体值,Y 都有唯一的具体的值与之对应,则称X 函数决定Y ,或Y 函数依赖于X ,记X →Y 。我们称X 为决定因素,Y 为依赖因素。当Y 不函数依赖于X 时,记作:X Y 。当X →Y 且Y →X 时,则记作:X ?Y 。 平凡函数依赖:当属性集Y 是属性集X 的子集时,则必然存在着函数依赖X →Y ,这种类型的函数依赖称为平凡的函数依赖。 非平凡函数依赖:如果Y 不是X 子集,则称X →Y 为非平凡的函数依赖。 完全函数依赖与部分函数依赖:设有关系模式R (U ),U 是属性全集,X 和Y 是U 的子 集,X →Y ,并且对于X 的任何一个真子集X ',都有X 'Y ,则称Y 对X 完全函数依赖(Full Functional Dependency ),记作X ?→?f Y 。如果对X 的某个真子集X ',有X '→Y ,则称Y 对X 部分函数依赖(Partial Functional Dependency ),记作X ?→? p Y 。 传递函数依赖:设有关系模式R (U ),U 是属性全集,X ,Y ,Z 是U 的子集,若X →Y (Y X ),但Y X ,又Y →Z ,则称Z 对X 传递函数依赖(Transitive Functional Dependency ),记作:X ?→? t Z 。 范式:在关系数据库的规范化过程中,为不同程度的规范化要求设立的不同的标准或准则称为范式(Normal Form )。满足最低要求的叫第一范式,简称1NF 。在第一范式中满足进一步要求的为第二范式(2NF),其余以此类推。R 为第几范式就可以写成R ∈xNF (x 表示某范式名)。 当把某范式看成是满足该范式的所有关系模式的集合时,各个范式之间的集合关系可以表示为:5NF ?4NF ?BCNF ?3NF ?2NF ?1NF 。 一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。 无损连接性:设R (X ,Y ,Z ),X 、Y 、Z 为不相交的属性集合,如果有X →Y 、X →Z ,则有R (X ,Y ,Z )=R[X ,Y]∞R[X ,Z],其中R[X ,Y]表示关系R 在属性(X ,Y )上的投影,即R 等于两个分别含决定因素X 的投影关系(分别是R[X ,Y]与R[X ,Z])在X 上的自然连接,这样便保证了关系R 分解后不会丢失原有的信息,这称作关系分解的无损连接性。 依赖保持性:设有关系模式R (U ,F ),Z ?U ,则Z 所涉及到的F 中所有函数依赖为F

数据库的基本概念

1.关系的基本操作:选择、投影、并、差、笛卡尔集。 2.声明变量的语句:declare @XXX (XXX为变量名称) 3.判断并发调度的正确性: (1)可串行性的调度:多个事务的并发执行是正确的,当且仅当其结果与某一次串行的执行这些实物的结果相同。 (2)可串行性:是并发事务调度的准则。按照这个准则,一个给定的并发调度,当且仅当他是可串行化的才认为是正确的调度。 4.事物的四个特性:原子性、一致性、隔离性和持续性。 5.定义视图: Create view <视图名称>[(列名)[,(列名)]] As <子查询> [with check option] 6.关系数据理论: 7.范式: (1)第二范式:若R∈1NF,且每一个非主属性完全依赖于码,则R∈2NF (2)第三范式:非主属性中不存在传递关系。 8.角色、权限 (1)创建角色:create role <角色名> (2)给角色授权:create <权限> on <对象类型> 对象名to 角色。 9.设计中概念模型描述什么:实体、属性、码、实体型、实体集、联系。 10.关系的完整性:实体完整性、参照完整性、用户定义的完整性。 11.读锁和写锁的定义: (1)写锁:又称“排它锁”,若事物T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事物都不能对A加任何类型的锁,直到T释放A上的锁。 (2)读锁:又称“共享锁”,若事物T对数据对象A加上S锁,则事物T可以读A但不能修改A,其他事物只能对A加S锁,而不能加X锁,直到T释放A上的S锁。 简答: 1.关系模式:判断是第几范式,分析指出主键、外键P175 例题4 2.举例说明参照完整性(外键取值的几种情况)P49例题1,例题2,例题3 3.数据库的设计步骤、任务。 (1)需求分析(2)概念结构设计(3)逻辑结构设计(4)物理结构设计 (5)数据库实施(6)数据库运行和维护 4.描述并发调度中锁的概念、作用 (1)概念:事物T对某个数据对象操作之前,先向系统发出申请,对其加锁。加锁后的事物T就对该数据对象有了一定的控制,在事物T释放它的锁之前,其他的事物不能更新此数据对象。 (2)作用:解决了事物并发过程中可能出现的丢失修改、不可重复读、读“脏”数据。

数据库原理复习资料与答案

数据库原理习题 一、核心知识点 1、数据库系统和文件系统的比较。 文件系统:数据可长期保存、由文件系统管理数据,但是数据共享性差,冗余度大,数据独立性差; 数据库系统:数据库实现整体数据的结构化、数据的共享性高,冗余度低,意扩充、数据独立性高、数据由DBMS统一管理和控制 2、简述数据库系统的三级模式结构。 外模式/模式、模式、内模式 3、简述数据库系统三级模式结构中的两级映像,并说明其优点。 两级映像:外模式/模式映像 模式/内模式 优点:这两级映像保证了数据库系统中的数据具有较高的逻辑独立性和物理独立性 4、简述数据模型的三要素。 数据结构、数据操作、数据的完整性约束 5、简述数据库独立性的特点。 数据独立性是由DBMS二级映像功能来保证的,数据与程序的独立性大大减少了应用程序的维护和修改 6、简述数据库系统的组成部分 数据库、硬件、软件、人员 7、简述DBA的主要职责。 数据库管理员(DBA)负责全面管理和控制数据库系统,其主要职责有;设计与定义数据库系统;帮助最终用户使用数据库系统;监督与控制数据库系统的使用和运行;转储与恢复数据库;改进和重组数据库系统,调优数据库系统的性能;重构数据库 8、简述关系模型的特点。 关系中每一个字段也称字段,不可再分,是最基本的单位;每一列数据项是同属性的。列数根据需要而设,且各列的顺序是任意的;每一行记录由一个事物的诸多属性组成,记录的顺序可以是任意的;一个关系是一张二维表,不允许有相同的字段名,也不允许有相同的记录行

9、简述关系模型的组成部分。 关系数据结构、关系操作集合、关系完整性约束 10、简述关系的性质。 1对1 1对0..* 1对1..* 关系中不允许出现相同的元组 关系中元组的顺序(即行序)可任意 关系中属性的顺序可任意 同一属性名下的各个属性值必须来自同一个域,必须是同一类型的数据 关系中各个属性必须有不同的名字,不同的属性可来自同一个域,即它们的分量可以取自同一个域。 关系中每一个分量必须是不可分的数据项,或者说所有的属性值都是原子的,即是一个确定的值,而不是值的集合。 11、简述关系的完整性。 关系完整性是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则。完整性通常包括域完整性,实体完整性、参照完整性 须满足的完整性约束条件。 12、简述自然连接和等值连接的区别。 连接运算符是“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉 13、简述视图和关系的区别。 计算机数据库中的视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。也是机械制图术语,在机械制图中,将物体按正投影法向投影面投射时所得到的投影称为“视图”。

相关文档
相关文档 最新文档