书籍详情

数据库—模型、语言与设计

数据库—模型、语言与设计

作者:(美)James L.Johnson著;李天柱[等]译

出版社:电子工业出版社

出版时间:2004-06-01

ISBN:9787505393356

定价:¥59.00

购买这本书可以去
内容简介
  本书详细讲解了数据库的基本理论与技术,包括数据模型、查询语言、存储结构、逻辑设计以及与实现和性能有关的问题,如并发、恢复、安全和优化等。全书分为四部分,共2章,每章后面均附有小结和练习。此书的最大特点是对数据模型做了较全面的论述,讲解了5种数据模型:关系模型、面向对象模型、逻辑模型、网状模型和层次模型。每种数据模型都围绕着数据模型的三要素(即实体-联系的表达、查询和约束)来讲解,并对不同数据模型的表达能力及特点进行了比较分析,此外,还讲述了不同数据模型的存储结构。关系模型是现在很流行的数据模型;面向对象模型和逻辑模型(演绎数据模型)在2世纪8年代至9年代形成,虽然没有流行起来,但其不少研究成果已被关系模型所吸收;网状模型和层次模型已成为历史,但在数据库新技术(如面向对象模型和XML查询)的研究中仍继续发挥着借鉴作用。本书可作为计算机相关专业研究生和本科生的教材,也适合于数据库领域的研究者和工作人员参考阅读,以了解各种数据模型的基本思想和特点。译者序数据库技术是最重要的计算机技术之一,在计算机应用中起着举足轻重的作用。数据库理论和技术的核心是数据库模型。自数据库技术产生以来,大约出现过6种主要的数据库模型:网状模型和层次模型、关系模型、面向对象模型和演绎模型,以及正在研究的半结构化和XML模型。数据库系统采用什么数据模型,一般就称为什么类型的数据库系统。其中网状和层次数据库是2世纪7年代之前得到广泛应用的数据库技术,早已被关系数据库代替,但在其他模型数据库的研究中(如面向对象数据库和半结构化与XML数据库),仍然发挥着积极的作用。关系模型自2世纪7年代产生以来一直是数据库技术的主流;面向对象数据库和演绎数据库在2世纪8年代至2世纪9年代的研究取得了丰硕的成果,但由于种种原因没有在应用中流行起来,而其研究成果却大量地被关系数据库所吸收,并且在数据库领域中具有重要的理论意义;半结构化和XML数据库是2世纪9年代末开始研究的数据库技术,目前还不成熟并且没有统一的名字。关系模型由于其简洁性、良好的数学基础和突出的表达与适应能力,一直在利用数据库技术的最新研究成果不断扩充,并在数据产品中得以应用;查询语言SQL3(或SQL99)标准就是在面向对象数据库技术的推动下产生的,它吸收了演绎数据库的研究成果,闭包和递归计算就是其中一例。特别是,还把关系和对象技术的结合命名为对象-关系数据库技术;进而,在目前的关系数据库产品中一直在不断地吸收半结构化和XML数据库的研究成果。这几种数据库模型虽然各有特点,甚至看起来截然不同,但它们之间却存在着深刻的联系。在表现数据结构、数据操作和完整性约束上(被称为数据库模型的三大要素),以及在表达能力上都有相通之处并各有千秋。目前,论述网状和层次数据库的书很少,而论述面向对象和演绎数据库的书则往往是大部头的专著,但在一本书中系统地论述各种数据库模型及其相互关系的书却不多见,本书正好弥补了这一缺憾。全书较详细地论述了前5种数据库模型,并论述了适用于各种模型的存储结构,以及规范化和数据库逻辑设计问题,最后简述了数据库管理系统的实现及性能上的有关问题,如并发处理、恢复、安全和性能优化等。本书的最大特色是,对5种数据库模型统一以数据结构、数据操作、数据完整性约束和表达能力为主线进行论述和比较,其中对一些问题的提法和思路颇有独到之处,极具启发性。总而言之,本书是数据库研究者不可多得的一本参考书。遗憾的是,由于本书出版较早,没有把半结构化和XML数据库研究的有关内容包含进来,并且书中在讲解面向对象部分时以典型的面向对象数据库GEMESTONE为例子,与ODMG标准和SQL3标准的有关内容及表达方法有一些区别。不过,关于后者,读者可以由作者网页的授课大纲得到一些相关信息。另外,对演绎数据库,本书未出现DATALOG这个通常用于说明逻辑数据库模型和查询语言的名字,但本书所讲的内容就是DATALOG的核心内容。本书适合作为研究生和本科生的教材,也适用于数据库研究者及数据库研发人员参考阅读。原书中使用了一些不常用的术语,如shell,anchor,signal等,因为书中有明确的常规术语与之相对应,含意不难理解,故译文中按常规字面译法翻译,而没有改为常规术语。原书中的一些文字上的错误,译文中已加以改正。参加本书翻译工作的有:李天柱(第9章和第1章)、肖艳芹(第6章至第8章和第11章至第13章)、杨文柱(第14章至第16章和第2章)、任建利(第1章、第2章及第5章的一部分)、马颖丽(第17章和第19章)、黄炜(第18章)、郝亚南(第3章、第4章及第5章的一部分)等;在李天柱的指导下,杨文柱、肖艳芹、郝亚南对全书进行了审校及定稿。对本书的翻译工作做出贡献的还有张波、张志强、孙兆豪、宋鑫、陈少飞、徐林昊、张邵华、肖计田、边小凡、李俊、罗朝晖、高丽敏、袁方、朱亮、刘大中等。由于译者水平所限,书中难免有不妥之处,敬请读者批评指正。前言本书介绍了大学计算机科学课程中数据库理论方面的传统主题。此书并不具有独创性,因为所阐述思想的大部分都是为大家所熟知的。本书的特点在于通过对内容的组织和概念解释,从而更加清晰地阐明了数据库的理论。但书中没有包含数据库实现技术及分布式数据库技术,除最后一章之外也没有在其他地方讨论性能问题。在学生熟悉了本书所讨论的这些模型、语言和设计等问题之后,可以为进一步的学习打下坚实的基础。第一部分介绍了五种数据库模型。这些模型代表了现在(关系模型)、将来(面向对象和演绎模型)和过去(网状和层次模型)的研究成果。为了与当前关系模型的重要性保持一致,本书中占篇幅最大的是关系模型,包括了关系表示(数据、联系和约束)、关系代数和演算,以及对结构化查询语言(SQL)的全面介绍。作者没有试图去遵循任何商业数据库产品的特有细节,而是强调了对所有这些产品都通用的概念。在掌握了这些内容之后,读者就可以在任何与SQL兼容的关系数据库中去实现应用了。在讲解面向对象数据库和演绎数据库时各占用了两章的篇幅:第一章描述模型本身,即讲解数据项以及它们之间联系和约束的技术;然后在第二章中说明如何针对这种数据库来组织查询;接下来,限于近年来网状和层次模型的使用范围,对它们分别使用一章的篇幅来做介绍,因为这两种模型已被关系模型所取代了。不过,这五种模型既相互区别,也彼此联系,揭示了数据库模型研究的发展历程。最后,对这五种数据库模型进行了清晰的比较。第二部分介绍了物理数据存储的问题,以使本书体系完整。许多学校在讲授数据库课程时都包含了文件部分,尤其是关于记录存储的概念,所以本书也相应地适应了这些需要。第三部分涉及到了应用设计问题。首先作为语义数据库模型的例子,介绍了实体-联系图(ER图)和对象建模技术(OMT),这有助于应用设计者对应用实体及其联系进行识别和结构化。在第一部分中,使用了简单的ER图来说明贯穿于各种不同数据库模型的应用示例。在学习了这些数据库模型后,学生会进一步想了解ER图的高级特性,例如类层次和相关问题。所以,在第三部分中讨论了这些问题。然后,使用两章的篇幅对函数依赖和连接依赖进行了分析。这些技术说明了应如何选择相关的表以加强特定约束。本书的第四部分只有一章,在这一章中,对通常在性能问题中所选的高级主题进行了分组,就并发性、恢复、安全性和查询优化等问题进行了简要介绍。对于本书中的大部分例证,都使用了一个单一、简单的例子。所以读者在学习一种新的数据库模型时,会遇到相同或相似的应用。所有这些模型都简单地说明了组织数据元素之间的联系和约束的不同方法。这个通用的应用示例强调了这五种模型之间的相似性。通过重复使用某种说明大部分数据库查询的模式,进一步强调了这一思想。本书的目标、使用方法和预备知识本书可以作为大学数据库课程的教材,为高年级课程提供充足的资料。在阅读本书之前,需要具备以下知识:●程序设计:程序语言中的数据结构和算法表达。本书用C语言来说明算法,但是没有支持堆栈、列表、队列等常用操作的程序。如果读者理解块结构化的程序语言,即使不是C语言,即使不会写,也应该能够读懂这些算法。●谓词演算:尽管本书对谓词演算有一个简要的回顾,但读者还是应该有这方面的预备知识。●集合理论和某些离散数学问题:布尔代数、关系和归纳证明。●断言和循环不变式:书中采用这些方法来证明算法的正确性。●初步的组合数学和概率理论:在第二部分的Hash表讨论中使用了一些这两方面的知识。在讲授数据库课程时可以灵活安排教学内容。因为我的学生已经学习过第二部分中文件的内容,所以我用一个学期的6%的时间来讲授第一部分的模型和语言,跳过了第二部分,然后在剩余的4%的时间里尽可能多地讲述第三部分的内容。在授课时,首先讲述关系模型导言和有关内容,包括较复杂的SQL的内容。然后讲解面向对象和演绎模型。因为我强调数据库的通用特征,所以学生应学习怎样得出关系模型和这些新模型之间的相似性,这样就可以用更简短的讲义来讲述它们之间的关系。将过去使用的模型作为课外读物留给学生自学,这样就需要一个较短的总结来将网状或层次模型与课上讲过的模型做对比。在深入研究函数依赖和连接依赖的数学理论之前,我在第二部分的授课中包括了实体-联系概念的所有特征。因为对数学知识的要求更加苛刻,所以这一部分的速度慢了下来。在讲解时介绍了主要结论,并且进行了详细的推导。以这种方式使用这本教材,我通常都是在连接依赖这一章的某一部分结束这门课程。即使讲授全部内容,教师也不必覆盖教材中的每一个细节。尽管我没有讲授教材中的全部细节,但我估计讲授完整的这本书可能需要一学年。对于教学方法,我的建议是首先选择重点章,然后进一步选择这一章的重点内容和相应示例并指导学生完全掌握所选章节。如果在教授数据库课程时需要讲解第二部分的文件概念,我推荐用与上面相同的方式来讲授这些模型,但第三部分的数据库设计方面的内容可以相应缩减。如果课程要求开设实验来使用一种商业数据库产品,那么可以上完三分之一课时后开始实验,也就是在讲完第5章之后。我在开设实验课程时要求学生创建一个包含五个表的小型关系数据库(与书中的通用应用示例相似),并针对这个数据库来实现查询。最后要说明的是,这本书也适合那些既熟悉关系数据库技术又打算学习面向对象和演绎模型的数据库工作者。第1章到第6章是对关系数据库的全面回顾,并以向其他模型引申的方式来解释这些特征。第7章到第1章继续讲述后关系模型,并讨论了演绎和面向对象数据库。表达风格本书的表达风格与大部分数据库教材不同。首先,提供了更多的解释和示例。其次,强调通用概念,而不是已有商业产品的特殊细节。与其他教材的相同之处是,选择了C语言来描述算法,并且使用C代码片段来解释一些非算法的内容,例如嵌入式SQL和网状查询。这样,大部分学生会通过数据库课程在一定程度上进一步熟悉C语言。所采用的示例都是简短的摘录,而不是完整的程序,但也足以说明概念了。最后,完成此书时所参考的全部文献统一列在了本书的结尾处,而不是分散在每一章的末尾。
作者简介
  JamesL.Johnson美国WesternWashington大学的计算机科学教授。自20世纪70年代中期以来,他一直是一个活跃的软件顾问,从事过各种学科的工作——数据库应用、仿真学、模式识别算法、交叉汇编程序以及用户接口等。
目录
第一部分  数据库模型与访问方法
第1章  数据库导论
1.1  数据库系统的动机
1.2  数据库系统的定义
1.3  数据库模型概述
1.3.1  关系数据库模型
1.3.2  面向对象数据库模型
1.3.3  演绎数据库模型
1.3.4  层次数据库模型
1.3.5  网状数据库模型
1.3.6  其他方面的比较
1.4  数据库系统的组成
1.4.1  物理层
1.4.2  概念层
1.4.3  外层
1.4.4  数据库管理员
1.5  一个连续的例子
小结
第2章  关系数据库
2.1  关系数据库的一个非正式的描述
2.2  关系术语
2.3  二元联系
2.3.1  一对多联系
2.3.2  多对多联系
2.3.3  分解多对多联系
2.3.4  一对一联系
2.4  高阶联系
2.5  递归联系
2.5.1  一对多递归联系
2.5.2  多对多递归联系
2.6  约束
2.6.1  关键字约束
2.6.2  函数依赖约束
2.6.3  实体和参照完整性
2.7  基本的实体-联系图
2.7.1  ER图中的实体及其属性
2.7.2  ER图中的二元联系
2.7.3  ER图中的联系属性
2.7.4  ER图中的高阶联系
2.7.5  ER图中的递归联系
2.8  模式规范
2.9  元数据和系统目录
小结
练习
第3章  关系代数
3.1  重命名和集合运算
3.2  选择、投影和连接运算
3.2.1  一元运算:选择和投影
3.2.2  笛卡儿乘积
3.2.3  自然连接
3.2.4  有关连接的其他变种
3.3  存在型查询
3.3.1  连接到锚元组的较长路径
3.3.2  存在型查询的一种解决方案
3.4  全称查询
3.4.1  除法运算
3.4.2  全称查询的一种解决方案
3.4.3  商关系的大小
3.4.4  广义除法
3.5  聚集和划分
3.5.1  聚集运算的语法变种
3.5.2  聚集查询进一步的例子
3.5.3  聚集中的算术运算
3.6  关系代数表达能力的限制
3.7  初步的查询优化
小结
练习
第4章  关系演算
4.1  谓词演算的回顾
4.2  通过谓词进行选择
4.3  存在型查询
4.4  全称查询
4.5  聚集与划分
4.5.1  等价类和商集
4.5.2  多划分
4.6  域关系演算
4.6.1  存在型查询
4.6.2  全称查询
小结
练习
第5章  基本SQL
5.1  简单检索查询的概念模型
5.1.1  从单一的表中进行查询
5.1.2  名称限定和别名
5.1.3  从多个表中进行查询
5.1.4  使用表的多个副本进行查询
5.2  子查询
5.3  存在型查询
5.4  全称查询
5.4.1  集合包含解决方案
5.4.2  双重否定结构
5.4.3  较长的全称路径束
5.4.4  混合式全称和存在查询
5.5  聚集和划分
5.5.1  orderby子句
5.5.2  groupby子句
5.5.3  orderby和groupby之间的区别
5.5.4  划分组中出现重复表示元组的情况
5.6  抑制划分
5.7  完整的select语法
5.7.1  将SQL操作可视化的一种思维模型
5.7.2  从SQL到关系代数
5.7.3  几个语法上的细节
5.8  数据编辑操作
5.8.1  SQL插入
5.8.2  SQL删除
5.8.3  SQL修改
5.9  嵌入式SQL
5.9.1  立即执行
5.9.2  结束和错误反馈
5.9.3  准备SQL语句
5.9.4  SQL游标
5.9.5  输入和输出描述符
小结
练习
第6章  高级SQL
6.1  视图
6.1.1  from子句中表的表达
6.1.2  视图作为虚表
6.1.3  通过视图更新元组
6.1.4  视图的check选项
6.2  空值
6.2.1  空值操作
6.2.2  聚集函数中的空值操作和SQL谓词
6.2.3  match谓词和引用完整性
6.2.4  具有any和all的谓词
6.3  外操作
6.3.1  外连接
6.3.2  外并
6.4  约束
6.4.1  SQL约束的目的和格式
6.4.2  域约束
6.4.3  表约束:主关键字、外关键字和check约束
6.4.4  列约束:主关键字、引用和check约束
6.4.5  全局约束
6.5  触发器
6.6  关系数据库的扩展定义
6.7  关系模型的缺陷
小结
练习
第7章  面向对象数据库
7.1  面向对象数据库的非正式介绍
7.1.1  属性值可以是其他对象
7.1.2  从对象中抽取查询解决方案
7.1.3  通过逻辑包含表示联系
7.2  面向对象术语
7.2.1  使用信号的对象通信
7.2.2  属性信号
7.2.3  类和方法
7.2.4  类层次和继承
7.2.5  常用类的内置类层次
7.2.6  方法的放置和多态
7.2.7  信号优先级:一元、二元、关键字
7.3  面向对象数据库定义
7.3.1  将应用类放置在内置层次中
7.3.2  属性方法和错误捕获
7.3.3  创建应用对象
7.4  联系
7.4.1  二元联系
7.4.2  高阶联系
7.4.3  递归联系
7.5  约束
7.5.1  一般性约束:域、键、实体完整性和引用完整性
7.5.2  函数依赖约束
7.5.3  触发器:用于更一般性的约束
7.5.4  进一步讨论约束
7.5.5  使用读属性信号可能破坏对象封装
7.6  面向对象与关系数据库的比较
小结
练习
第8章  面向对象查询
8.1  简单数据检索的概念模型
8.1.1  涉及单个类的查询
8.1.2  涉及多个类的查询
8.1.3  等价于SQL子查询的信号表达式
8.1.4  其他一些说明中间对象的计算的例子
8.2  存在型查询
8.2.1  直接检测属性对象
8.2.2  使用数据库路径的简化语法
8.3  全称查询
8.3.1  模仿SQL中的集合包含解决方案
8.3.2  使用双重否定模仿SQL解决方案
8.3.3  进一步的例子
8.4  聚集和划分
8.4.1  模仿SQL的orderby子句
8.4.2  模仿SQL的groupby子句
8.5  递归查询
8.5.1  一对多的递归联系
8.5.2  多对多的递归联系
8.6  数据编辑操作
8.6.1  插入新对象
8.6.2  删除对象
8.6.3  更新对象
8.7  从SQL到信号表达式
8.7.1  对特定SQL形式的限制转换
8.7.2  将关系表转换成类
8.7.3  转换select-project-join查询的一般形式
8.7.4  转换算法的概括形式
8.7.5  最初转换形式的另一种转换
8.7.6  将算法扩展到子查询
8.7.7  将算法扩展到划分和聚集
8.8  对象查询语言(Object Query Language,OQL)
8.8.1  OQL符号
8.8.2  OQL举例
小结
练习
第9章  演绎数据库
9.1  数据库环境下的逻辑程序设计
9.1.1  数据库与算术谓词
9.1.2  演绎规则与导出谓词
9.1.3  可能世界与演绎规则模型
9.1.4  最小模型
9.1.5  逻辑程序
9.2  演绎数据库的非正式介绍
9.2.1  查询语法
9.2.2  持久演绎规则和源于查询的逻辑程序
9.3  演绎数据库的定义
9.3.1  公理的表示
9.3.2  对联系、约束和隐含事实的演绎规则
9.3.3  无环演绎数据库和惟一最小模型
9.4  作为满足的目标的查询解
9.4.1  无否定自由变量的查询解算法
9.4.2  消除否定自由变量
9.4.3  从首选最小模型提交解的算法
9.5  联系
9.5.1  二元联系
9.5.2  高阶联系
9.5.3  递归联系
9.6  约束
9.6.1  用演绎规则设置结构性约束
9.6.2  函数依赖约束
9.6.3  聚集谓词和相关约束
小结
练习
第10章  演绎查询
10.1  存在型查询
10.1.1  包括一个应用对象的查询
10.1.2  包括多个应用对象的查询
10.2  全称查询
10.3  聚集和划分
10.4  逻辑程序与关系代数
10.4.1  关系和数据库谓词的对应
10.4.2  从关系代数到演绎规则
10.4.3  综合转换的例子
10.4.4  反向过程:从导出谓词到关系代数
10.5  超出无环演绎数据库
10.5.1  Horn(霍恩)子句系统
10.5.2  在依赖图中存在受限环的系统
10.6  递归查询
小结
练习
第11章  网状数据库
11.1  对网状数据库的非正式介绍
11.2  网状数据库定义
11.2.1  网状记录类型
11.2.2  系
11.2.3  Insertion和retention子句
11.2.4  完整性考虑:set-selection和check子句
11.3  网状数据操纵语言(DML)
11.3.1  当前指针
11.3.2  在记录中导航
11.3.3  记录的插入、修改和删除
11.3.4  记录到系的连接
11.4  联系
11.4.1  高阶联系
11.4.2  一对多的递归联系
11.4.3  多对多递归联系
11.5  约束
11.6  网状查询
11.6.1  存在型查询
11.6.2  全称查询
11.6.3  聚集查询
11.7  网状数据库和以前模型的比较
小结
练习
第12章  层次数据库
12.1  层次数据库的非正式介绍
12.1.1  实体和其实例的树结构
12.1.2  通过逻辑邻接来表示联系
12.1.3  在相关记录中导航
12.1.4  针对层次数据库的查询形式概览
12.2  联系
12.2.1  线性化层次之外的虚孩子
12.2.2  高阶联系
12.3  层次定义和数据操纵
12.3.1  层次模式
12.3.2  使用get命令定位记录
12.3.3  插入记录
12.3.4  删除和修改记录
12.4  约束
12.5  层次查询
12.5.1  存在型查询
12.5.2  全称查询
12.5.3  聚集查询
小结
练习
第13章  数据库模型之间的比较
13.1  模型的相似之处
13.2  各个模型的优点和缺点
13.2.1  层次和网状模型
13.2.2  关系模型
13.2.3  面向对象模型
13.2.4  演绎模型
第二部分  磁盘存储管理
第14章  文件结构
14.1  磁盘存储单元的物理组织
14.2  块定位模式
14.3  索引顺序文件
14.4  散列文件
14.4.1  选择散列函数
14.4.2  计算记录在桶中的分布
14.4.3  单次随机检索需要的平均磁盘探测次数
14.4.4  对α>1.0展开分析
14.4.5  散列非数字值
14.5  动态文件结构
14.5.1  动态索引顺序文件
14.5.2  通过模数加倍进行动态散列
14.5.3  通过目录加倍进行动态散列
14.5.4  其他散列模式
小结
练习
第15章  索引
15.1  稀疏层次索引
15.1.1  无重复关键字的稀疏索引
15.1.2  有重复关键字的稀疏索引
15.1.3  在删除期间维护稀疏层次索引
15.1.4  在插入期间维护稀疏层次索引
15.2  稠密索引
15.3  B树
15.3.1  查找范围
15.3.2  定义B+树的特性
15.3.3  在插入期间维护B+树的平衡
15.3.4  在删除期间维持B+树的平衡
15.3.5  B+树的性能统计
15.3.6  B树家族的其他成员
小结
练习
第16章  数据库模型的文件结构
16.1  关系模型
16.2  网状模型
16.3  层次模型
16.4  面向对象模型
16.5  演绎模型
小结
练习
第三部分  数据库设计
第17章  应用设计描述
17.1  实体联系模型
17.2  类层次和继承
17.2.1 类的特化和概化
17.2.2 重叠子类和多继承
17.3  从ER图到数据库模式的映射
17.3.1 映射为关系模式
17.3.2  映射为网状模式
17.3.3  映射为层次模式
17.3.4  映射为面向对象模式
17.3.5  映射为演绎模式
17.4  对象建模技术(OMT)
小结
练习
第18章  函数依赖分析
18.1  函数依赖约束的起源
18.1.1  泛关系和它的投影
18.1.2  函数依赖集的闭包
18.1.3  Armstrong公理
18.2  最小覆盖集
18.2.1  一个判断闭包成员的算法
18.2.2  确定关键字和超关键字
18.2.3  确定最小覆盖集
18.2.4  计算最小覆盖集的算法
18.2.5  一个综合的例子
18.2.6  水族馆数据库约束的最小覆盖集
18.3  无损连接分解
18.4  Boyce-Codd范式(BCNF)
18.4.1  使用函数依赖减少冗余
18.4.2  通过分解删除违反BCNF的约束
18.4.3  分解水族馆数据库为BCNF
18.4.4  一个BCNF分解的算法
18.5  保持函数依赖
18.5.1  一个检查保持函数依赖的算法
18.6  前三种范式
18.6.1  第一范式
18.6.2  第二范式
18.6.3  第三范式
18.6.4  一个3NF、无损连接、保持函数依赖的分解算法
18.7  FD分析的有限性和扩展
小结
练习
第19章  连接依赖分析
19.1  多值依赖
19.1.1  由MVD引起的冗余
19.2  多值依赖和函数依赖的相互作用
19.2.1  函数依赖和多值依赖集合的闭包
19.2.2  函数依赖可以强制某些多值依赖进入闭包
19.2.3  函数依赖和多值依赖能够强制新的函数依赖进入闭包
19.2.4  补充律与增补律
19.2.5  FD-MVD推理规则
19.2.6  属性决定因素的必要条件
19.3  依赖基
19.3.1  集合群的最小基
19.3.2  决定因素的依赖基
19.3.3  FD-MVD推理规则的完备性
19.3.4  存在MVD时无损连接的一个新准则
19.4  第四范式
19.4.1  由MVD引入的冗余
19.4.2  利用分解消除违反4NF的情况
19.4.3  4NF关系集合严格地被包含在BCNF关系集合中
19.4.4  在水族馆数据库语境中的MVD
19.4.5  左部为空的MVD约束
19.5  普通的连接依赖
19.5.1  由多分量连接产生的元组
19.5.2  由普通连接依赖引入的冗余
19.5.3  从已有的JD推出新的JD
19.5.4  允许JD没有冗余的条件
19.5.5  由FD和MVD强制的JD
19.5.6  一个JD允许没有冗余当且仅当它由某些FD所蕴含
19.5.7  嵌入的连接依赖
19.5.8  一个引入冗余的JD的例子
19.6  第5范式
19.6.1  5NF包含4NF
19.6.2  一个满足4NF却不满足5NF的实例
19.6.3  确定JD 在闭包中的追赶算法
19.6.4  单关键字提供的简化
19.7  连接依赖以外的话题
19.7.1  模板约束
19.7.2  域关键字范式
小结
练习
第四部分  后    记
第20章  性能
20.1  并发
20.1.1  事务
20.1.2  可串行化调度
20.1.3  通过锁实现可串行化
20.1.4  死锁和事务依赖图
20.1.5  脏读、不可重复读和幻像
20.1.6  隔离级别
20.1.7  通过时间戳实现可串行化
20.2  恢复
20.2.1  日志文件在事务回滚和故障恢复中的作用
20.2.2  利用检查点来限制大范围的日志文件搜索
20.2.3  从数据库备份中恢复
20.2.4  对重启长事务的特殊防范
20.3  安全性
20.3.1  权限描述符
20.3.2  权限收回和失控权限问题
20.4  查询优化
20.4.1  在关系代数表达式树中记录操作
20.4.2  转换计算树的启发信息
20.4.3  一个综合的例子
20.4.4  估计连接操作的代价:写输出
20.4.5  估计连接操作的代价:组织输入流
小结
参考文献
术语表
猜您喜欢

读书导航