数据库系统基础教程(原书第2版)
作者 : Jeffrey D.Ullman, Jennifer Widom
译者 : 岳丽华 龚育昌
丛书名 : 计算机科学丛书
出版日期 : 2003-08-01
ISBN : 7-111-10095-6
定价 : 32.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 321
开本 : 16开
原书名 : A First Course in Database Systems, Second Edition
原出版社: Prentice Hall
属性分类: 教材
包含CD :
绝版 :
图书简介

本书由斯坦福大学知名计算机科学家Jeffrey D.Ullman和Jennifer Widom合作编写, 作者采用一种易于理解的、面向用户的方式介绍了数据库系统,主要侧重于介绍数据库的设计与使用以及实际数据库应用的实现。它涵盖了最新数据库标准SQL—1999、SQL PSM、SQL CLI和ODL等内容,既可用于大学教科书,也可作为数据库领域专业人员的参考书。
  本书显著特色
  ◆ 通过使用人们普遍关注的、现实世界的例子提高可读性。
  ◆ 对SQL编程的许多方面展开了广泛而全面的讨论。
  ◆ 给出基于常见的E R模型的设计原则。
  ◆ 介绍了使用ODL标准的面向对象设计和SQL-99标准的对象-关系设计。
  ◆ 解释了SQL是如何通过JDBC(Java)和SQL CLI(ODBC)与现代宿主语言交互作用的、涵盖对于数据库设计者和使用者十分重要的若干高级论题,包括完整性约束、触发器、事务、授权、SQL—99递归,等等。
  ◆ 通过主页http:www.db.stanford.edu/ullman/fcdb.html对本书提供更多的支持。
  本书由斯坦福大学知名计算机科学家Jeffrey D.Ullman和Jennifer Widom合作编写,涵盖了最新数据库标准SQL-99、SQL/PSM、SQL/CLI和ODL,而且比其他大多数书籍都更多地介绍了SQL内容,从数据库设计者、用户和应用程序员的角度深入浅出地介绍了数据库。

图书特色

Jeffrey D.Ullman 是斯坦福大学计算机科学教授。他独立或合作出版了15本著作,发表了170篇技术沦文,其中包括《A First Course in Database Systems》(Prentice Hall出版社,1997)和《Elements of ML Programming》(Prentice Hall 出版社,1998)。他的研究兴趣包括数据库理论、数据库集成、数据挖掘和利用信息基础设施进行教育。他获得了Guggenheim Fellowship 等多种奖励, 并被推选进入美国国家工程院。 他还被授予1996年5igmod贡献奖和1998年Karl V.Karstrom杰出教育家奖。
Jennifer Widom 是斯坦福大学计算机科学与电气工程系的副教授。 她是多个编辑委员会和程序委员会的成员, 在计算机科学会议和杂志上发表了许多文章。她还是《A First Course in Database Systems》的作者之一。 她的研究兴趣包括半结构化数据的数据库系统和XML、 数据仓库以及主动数据库系统。

图书前言

在斯坦福,因为执行的是一年四学期制,所以数据库引论课被分为两门课程。第一门课程是CS145,该课程中只要求学生学会使用数据库系统,而不必做关于DBMS实现方面的实验。CS145课是 CS245的预修课。CS245是介绍DBMS实现。学生若想进一步学习数据库课程,可以学CS345(此课是理论课)、CS346(该课是 DBMS实现实验课),以及CS347课程(该课介绍事务处理及分布式数据库)。
从1997年开始,我们已经出版了两本配套教材。《数据库系统基础课程》是为CS145课程编写的。《数据库系统实现》是为CS245课程以及部分CS346课程编写的。由于很多学校实行学期制,或者是将这两门数据库引论课组合成一门引论课程,因此,我们感到有必要将上述两本书合成一本《数据库系统全书》。
然而,与数据库的实现相比较,更多的学生需要知道如何使用数据库,我们仍然根据最初的《数据库系统基础课程》中的内容编成此书,另外加入了《数据库系统全书》一书前十章中关于建模与编程的新内容,这些新内容包括SQL/PSM(存储程序),SQL/CLI(C/SQL接口标准)和JDBC(与JAVA/SQL相同)。同时,我们将内容重新加以组织,从实体-联系模型的内容中删去了面向对象模型的处理;从关系代数的内容中删去对逻辑查询的讨论后,加入了新的关于操作符的内容。这些操作符不仅用于传统关系代数,而且用于表示SQL语义。
警告  此书是全书的前半部分,如果除本书内容外,您还希望学习关于数据库实现的部分,您应该购买《数据库系统全书》一书。
如何使用该书
本书中的内容讲半个学期绰绰有余,但如果只有四分之一个学期的时间,就要省略一些内容了。我们认为2~7章是本书的核心。余下三章的内容可任意处置,虽然我们认为每个学生都应从第8章的一节中学会如何在宿主语言中嵌入SQL语句。
若如同我们在CS145课程中所做的那样,你想给学生一个真实的数据库应用设计和实现项目作业,则应该对书的讲解顺序做某些调整,较早开始对SQL的介绍。虽然学生在做数据库设计时需要规范化知识,但你可以推迟有关函数依赖的介绍。
预备知识
我们曾经将此书作为本科生和一年级研究生所修课程的教材。该课程正常的条件下是二年级课程,在此之前已学习过:(1)数据结构、算法、离散数学。(2)软件系统、软件工程和程序设计语言等。最重要的是学生至少要对如下内容有基本的理解:代数表达式和代数定律;逻辑、基本的数据结构如查询树和图;面向对象程序设计概念和程序设计环境。可是我们认为对于一般的计算机科学专业课程体系而言,最合适的学习时机是在修完三年级后。
习题
本书几乎在每一节都有补充练习,我们用感叹号对难题做了标记,对最难的习题用双感叹号做了标记。
有些习题或习题的小题部分标有星号,对这些习题我们将努力使读者可以通过该书的网页了解该题的相关解法,以方便读者。这些解是公开有效的,并且可用于自测。注意,在有些情况下习题B是对另一习题A的修改或调整,所以,如果 A 的某一部分有解,你也应该能解出B的对应部分。
WWW网上支持
本书的主页地址是:
http://www-db.stanford.edu/~ullman/fcdb.html
这里有对加星号习题的解的勘误表及书的备份。同时还有与课程CS145 相关的作业、项目及考卷等内容。
致谢
有很多人曾帮助过我们,他们或是提供了本书及它的后续版内容的最初材料,或者是提供了本书或其他网上材料的勘误表。我们对所有这些帮助过我们的人表示感谢。他们是: 
Marc Abromowit,Joseph H. Adamski, Brad Adelberg, Gleb Ashimov, Donald Aingworth, Jonathan Becker, Margaret Bentiez, Larry Bonham, Phillip Bonnet, David Brokaw, Ed Burns, Karen Buter, Christopher Chan, Sudarshan Chawathe, Per Christensen, Ed Chang, Surajit Chaudhuri, Ken Chen, Rada Chirkova, Nitin Chopra, Bobbie Cochrane, Arturo Crespo, Linda DeMichiel, Tom Dienstbier, Pearl D’Souza, Oliver Duschka.
还有Xavier Faz, Greg Fichtenholtz, Bar Fisher, Jarl Friis, John Fry, Chiping Fu, Tracy Fujieda, Manish Godara, Meredith Goldsmith, Luis Gravano, Gerard Guillemette, Rafael Hernandez, Antti Hjelt, Ben Holtzman, Steve Huntsberry, Leonard Jacobson, Thulasiraman Jeyaraman, Dwight Joe, Seth Katz, Yeong-Ping Koh, Gyorgy Kovacs, Phillip Koza, Brian Kulman, Sang Ho Lee, Olivier Lobry, Lu Chao-Jun, Arun Marathe, Le-Wei Mo, Fabian Modoux, Peter Mork, Mark Mortensen.
还有Ramprakash Narayanaswami, Hankyung Na, Marie Nilsson, Torbjorn Norbye, Chang-Min Oh, Mehul Patel, Bert Porter, Limbek Reka, Prahash Ramanan, Ken Ross, Tim Roughgarten, Mema Roussopoulos, Richard Scherl, Catherine Tornabene, Anders Uhl, Jonathan Ullman, Mayank Upadhyay, Vassilis Vassalos, Qiang Wang, Kristian Widjaja, Janet Wu, Sundar Yamunachari, Takeshi Yokukawa, Min-Sig Yun, Torben Zahle, Sandy Zhang。当然书中的错误是我们的。

J. D. U.
                         J. W.
                         斯坦福,加州

作者简介

Jeffrey D.Ullman, Jennifer Widom:Jeffrey D.Ullman: 斯坦福大学计算机科学系Stanford W. Ascherman教授,数据库技术专家。他独立或合作出版了15本著作,发表了170多篇技术论文。他的研究兴趣包括数据库理论,数据库集成,数据挖掘和利用信息基础设施进行教育。他获得了Guggenheim Fellowship等多种奖励,并被推选进入美国国家工程院。他还被授予1996年度Sigmod贡献奖和1998年度Karl V.Karstrom杰出教育家奖。 他先后在Prentice Hall出版了A First Course in Database Systems, Database Systems Implementation, Elements of ML Porgramming等著作。
Jennifer Widom: Jennifer Widom 于1987年在康奈尔大学获得计算机科学博士学位,现为斯坦福大学计算机科学与电气工程系教授。她是ACM Fellow、Guggenheim Fellow和美国国家工程院成员,并且是多个编辑委员会、程序委员会和顾问委员会的成员。她的研究兴趣包括半结构化数据的数据库系统和XML、数据仓库以及主动数据库系统。

译者简介

岳丽华 龚育昌:岳丽华: 女,1952年出生,中国科学技术大学计算机学院教授。1975年毕业于中国科学技术大学数学系计算数学专业,1991年获计算机软件工学硕士学位。曾负责过多项数据库管理信息系统的数据库应用开发项目;负责和参加过教育部面向二十一世纪课程教育研究及远程教学网上课程软件研制项目。目前承担国家863项目一项,中科院创新项目两项,国防预研项目一项。作为访问学者,曾到美国佛罗里达大学、东京大学进修访问,是中国计算机学会数据库专委会委员。 教授的课程有:1987年至今教授本系本科生"数据库系统概论"课程;本系研究生课程 "分布式数据库系统",今年改为"分布式数据库与事务处理";本校双学位课程 "Client/Server数据库系统";全校研究生选修课 "高级数据库系统";本系工程硕士课程 "高级数据库系统"。

译者序

数据库已是当今信息社会须臾不可脱离的重要工具,数据库的教学也就成为计算机科学与技术专业的一门必修课程。为了使学生在大学学习中能够尽早地学习和使用计算机,许多院校将数据库课程教学分为两阶段教学,在低年级时,讲授数据库语言,以便使同学可以尽早地利用数据库语言来学习其他相关课程。另外,在我国大学计算机基础素质教育中,数据库也是其中重要的内容,也需要使学生建立较扎实的数据库语言基础,但是不需要更深入地了解数据库系统的内部结构,如数据库语言的查询处理,事务中的锁控制等等。对于这类课程的教学,Ullman教授的这本数据库基础教程则不失为一本恰当的好教材。
Jeffrey D. Ullman教授是斯坦福大学计算机系的资深教授,已从教近40年。自1980年编写了其第一本数据库教材《数据库系统原理》以来,已出版过多本数据库系统方面的教材。该书是他在斯坦福大学计算机系对大学生教授的第一门数据库课程(CS145)中使用的教材,其内容不仅介绍了当前流行的关系数据库标准语言SQL和传统的关系代数语言,而且还介绍了较新的面向对象语言OQL和逻辑语言DATALOG。该教材的主要特点是举例丰富详实,便于教师教学和自学者学习。书中在每一小节(而不是每一章)后都给出了大量的作业练习,并且标注了习题的难易程度,既便于教学安排,又便于学生循序渐进地掌握教学内容。另外,在Jeffrey D.Ullman教授的Web主页上还有关于该课程实验的内容,这对于本课程的实验教学有很大帮助。
本书由岳丽华负责翻译审校了1-8等章节,龚育昌负责翻译审校了9-10等章节。另外参加翻译工作的还有周英华、刘晓红、陆岚、杨洋、柳建平、齐冀等。
限于水平,译文中难免有错误与不足之处,欢迎读者批评指正。

译  者
2003年5月

图书目录

出版者的话
专家指导委员会名单
译者序
前言
第1章  数据库系统世界 1
1.1  数据库系统的发展 1
1.1.1  早期的数据库管理系统 1
1.1.2  关系数据库系统 2
1.1.3  越来越小的系统 3
1.1.4  越来越大的系统 4
1.1.5  客户-服务器和多层体系结构 4
1.1.6  多媒体数据 5
1.1.7  信息集成 5
1.2  数据库管理系统概述 6
1.2.1  数据定义语言命令 6
1.2.2  查询处理概述 6
1.2.3  存储器和缓冲区管理器 8
1.2.4  事务处理 8
1.2.5  查询处理器 9
1.3  数据库系统研究概述 9
1.3.1  数据库设计 10
1.3.2  数据库程序设计 10
1.4  小结 11
1.5  参考文献 11
第2章  实体-联系数据模型 13
2.1  E/R模型的要素 13
2.1.1  实体集 13
2.1.2  属性 14
2.1.3  联系 14
2.1.4  实体-联系图 14
2.1.5  E/R图实例 15
2.1.6  二元E/R联系的多样性 15
2.1.7  多路联系 16
2.1.8  联系中的角色 16
2.1.9  联系的属性 17
2.1.10  多路联系到二元联系的转换 18
2.1.11  E/R模型中的子类 19
2.1.12  习题 20
2.2  设计原则 22
2.2.1  忠实性  22
2.2.2  避免冗余 22
2.2.3  简单性考虑 23
2.2.4  选择正确的联系 23
2.2.5  选择正确的元素种类 24
2.2.6  习题 25
2.3  约束的建模 26
2.3.1  约束的分类 27
2.3.2  E/R模型中的键 27
2.3.3  E/R模型中键的表示 28
2.3.4  单值约束 29
2.3.5  引用完整性 29
2.3.6  E/R图中的引用完整性 29
2.3.7 其他类型的约束 30
2.3.8  习题 30
2.4  弱实体集 31
2.4.1  弱实体集的来源 31
2.4.2  弱实体集的要求 32
2.4.3  弱实体集的符号 33
2.4.4  习题 33
2.5  小结 33
2.6  参考文献 34
第3章  关系数据模型 35
3.1  关系模型的基础 35
3.1.1  属性 35
3.1.2  模式 35
3.1.3  元组 36
3.1.4  域 36
3.1.5  关系的等价描述 36
3.1.6  关系实例 36
3.1.7  习题 37
3.2  从E/R图到关系设计 37
3.2.1  实体集到关系的转化 38
3.2.2  E/R联系到关系的转化 39
3.2.3  组合关系 40
3.2.4  处理弱实体集 41
3.2.5  习题 43
3.3  子类结构到关系的转化 44
3.3.1  E/R方式转化 44
3.3.2  面向对象的方法 45
3.3.3  使用空值组合关系 46
3.3.4  各种方法的比较 46
3.3.5  习题 46
3.4  函数依赖 47
3.4.1  函数依赖的定义 48
3.4.2  关系的键 48
3.4.3  超键 50
3.4.4  找出关系中的键 50
3.4.5  习题 51
3.5  函数依赖的规则 52
3.5.1  分解/结合规则 52
3.5.2  平凡函数依赖 53
3.5.3  计算属性的闭包 53
3.5.4  为什么能用闭包算法 55
3.5.5  传递规则 56
3.5.6  函数依赖的闭包集合 57
3.5.7  投影函数依赖 57
3.5.8  习题 58
3.6  关系数据库模式设计 59
3.6.1  异常 60
3.6.2  分解关系 60
3.6.3  Boyce-Codd范式 61
3.6.4  分解为 BCNF 63
3.6.5  从分解中恢复信息 66
3.6.6  第三范式 67
3.6.7  习题 69
3.7  多值依赖 69
3.7.1  属性独立及伴随其产生的冗余 69
3.7.2  多值依赖的定义 70
3.7.3  多值依赖的推论 71
3.7.4  第四范式 72
3.7.5  分解到第四范式 73
3.7.6  范式间的联系 74
3.7.7  习题 74
3.8  小结 75
3.9  参考文献 76
第4章  其他数据模型 79
4.1  面向对象概念的复习 79
4.1.1  类型系统 80
4.1.2  类和对象 80
4.1.3  对象标识 80
4.1.4  方法 80
4.1.5  类的层次 81
4.2  ODL简介 81
4.2.1  面向对象设计 81
4.2.2  类声明 82
4.2.3  ODL中的属性 82
4.2.4  ODL中的联系 83
4.2.5  反向联系 84
4.2.6  联系的多重性 85
4.2.7  ODL中的方法 86
4.2.8  ODL中的类型 87
4.2.9  习题 88
4.3  ODL中的其他概念 89
4.3.1  ODL的多路联系 90
4.3.2  ODL中的子类 90
4.3.3  ODL中的多继承 91
4.3.4  范围 92
4.3.5  ODL中键声明 92
4.3.6  习题 94
4.4  从ODL设计到关系设计 94
4.4.1  从ODL属性到关系属性 95
4.4.2  类中的非原子类型属性 95
4.4.3  集合类型属性的表示 96
4.4.4  其他类型构建器的表示 97
4.4.5  ODL中联系的表示 98
4.4.6  如果没有键会怎样 100
4.4.7  习题 100
4.5  对象关系模型 101
4.5.1  从关系到对象关系 102
4.5.2  嵌套关系 102
4.5.3  引用 103
4.5.4  面向对象与对象关系的比较 104
4.5.5  ODL设计到对象关系设计的转化 105
4.5.6  习题 105
4.6  半结构化数据 105
4.6.1  为何需要半结构化数据模型 106
4.6.2  半结构化数据表示 106
4.6.3  信息集成与半结构化数据 107
4.6.4  习题 108
4.7  XML及其数据模型 108
4.7.1  语义标签 109
4.7.2 格式规范的XML 109
4.7.3 文档类型定义(DTD) 110
4.7.4 使用DTD 111
4.7.5 属性列表 112
4.7.6 习题 113
4.8  小结 114
4.9  参考文献 114
第5章  关系代数 117
5.1  一个数据库模式的例子 117
5.2  关系代数操作 118
5.2.1  关系代数基础 119
5.2.2  关系中的集合操作 119
5.2.3  投影 120
5.2.4  选择 121
5.2.5  笛卡儿积 122
5.2.6  自然连接 122
5.2.7  q连接 123
5.2.8  使用组合操作生成查询 124
5.2.9  重命名 125
5.2.10  依赖的和非依赖的操作 126
5.2.11  关系代数表达式中的线性符号 127
5.2.12  习题 127
5.3  包上的关系操作 132
5.3.1  为什么采用包 132
5.3.2  包的并、交、差 133
5.3.3  包的投影操作 134
5.3.4  包的选择 135
5.3.5  包的笛卡儿积 135
5.3.6  包的连接 135
5.3.7  习题 136
5.4  关系代数的扩展操作 137
5.4.1  消除重复 137
5.4.2  聚集操作符 138
5.4.3  分组 138
5.4.4  分组操作符 139
5.4.5  扩展的投影操作符 140
5.4.6  排序操作符 141
5.4.7  外连接 141
5.4.8  习题 142
5.5  关系的约束 143
5.5.1  作为约束语言的关系代数 143
5.5.2  引用完整性约束 144
5.5.3  其他的约束举例 145
5.5.4  习题 146
5.6  小结 147
5.7  参考文献 147
第6章  数据库语言SQL 149
6.1  SQL中的简单查询 149
6.1.1  SQL中的投影 150
6.1.2  SQL中的选择 152
6.1.3  字符串比较 153
6.1.4  日期和时间 154
6.1.5  空值和涉及空值的比较 155
6.1.6  布尔值UNKNOWN 156
6.1.7  输出排序 157
6.1.8  习题 157
6.2  多个关系上的查询 158
6.2.1  SQL中的积和连接 159
6.2.2  避免属性歧义 159
6.2.3  元组变量 160
6.2.4  多关系查询的解释 161
6.2.5  查询的并、交、差 163
6.2.6  习题 164
6.3  子查询 165
6.3.1  产生标量值的子查询 165
6.3.2  含有关系的条件表达式 166
6.3.3  含有元组的条件表达式 167
6.3.4  关联子查询 168
6.3.5  FROM子句中的子查询 169
6.3.6  SQL 的连接表达式 169
6.3.7  自然连接 170
6.3.8  外连接 171
6.3.9  习题 172
6.4  全关系操作 174
6.4.1  消除重复 174
6.4.2  交、并、差中的重复 174
6.4.3  SQL 中的分组和聚集 175
6.4.4  聚集操作符 175
6.4.5  分组 176
6.4.6  HAVING子句 177
6.4.7  习题 178
6.5  数据库更新 179
6.5.1  插入 179
6.5.2  删除 181
6.5.3  更新 181
6.5.4  习题 182
6.6  SQL中的关系模式定义 183
6.6.1  数据类型 183
6.6.2  简单表定义 184
6.6.3  修改关系模式 184
6.6.4  默认值 185
6.6.5  索引 185
6.6.6  索引选择简介 186
6.6.7  习题 188
6.7  视图定义 189
6.7.1  视图声明 189
6.7.2  视图查询 190
6.7.3  重命名属性 191
6.7.4  视图更新 191
6.7.5  涉及视图的查询解释 193
6.7.6  习题 195
6.8  小结 195
6.9  参考文献 196
第7章  约束和触发器 199
7.1  键和外键 199
7.1.1  主键声明 199
7.1.2  用UNIQUE声明键 200
7.1.3  强制键约束 201
7.1.4  外键约束声明 201
7.1.5  维护引用完整性 202
7.1.6  延迟约束检查 203
7.1.7  习题 205
7.2  属性和元组上的约束 206
7.2.1  非空值约束 206
7.2.2  基于属性的CHECK约束 207
7.2.3  基于元组的CHECK约束 208
7.2.4  习题 209
7.3  修改约束 210
7.3.1  给约束命名 210
7.3.2  修改表上约束 210
7.3.3  习题 211
7.4  模式层的约束和触发器 211
7.4.1  断言 212
7.4.2  事件-条件-动作规则 214
7.4.3  SQL中的触发器 214
7.4.4  替换触发器(Instead of Triggers) 217
7.4.5  习题 217
7.5  小结 219
7.6  参考文献 219
第8章  SQL 的系统特征 221
8.1  编程环境下的SQL 221
8.1.1  阻抗不匹配问题 222
8.1.2  SQL/宿主语言接口 222
8.1.3  DECLARE节 223
8.1.4  使用共享变量 223
8.1.5  单元组选择语句 224
8.1.6  游标 224
8.1.7  游标修改 227
8.1.8  防止并发更新 227
8.1.9  卷型游标 228
8.1.10  动态SQL 229
8.1.11  习题 230
8.2  模式中的存储过程 231
8.2.1  创建PSM函数和过程 231
8.2.2  PSM中的简单语句格式 232
8.2.3  分支语句 233
8.2.4  PSM中的查询 234
8.2.5  PSM中的循环 234
8.2.6  For 循环 236
8.2.7  PSM的异常处理 236
8.2.8  使用PSM函数和过程 238
8.2.9  习题 238
8.3  SQL 环境 240
8.3.1  环境 240
8.3.2  模式 240
8.3.3  目录 241
8.3.4  SQL 环境中的客户和服务器 242
8.3.5  连接 242
8.3.6  会话 243
8.3.7  模块 243
8.4  使用调用层接口 243
8.4.1  SQL/CLI简介 244
8.4.2  处理语句 245
8.4.3  从查询结果中取数据 246
8.4.4  向查询传递参数 248
8.4.5  习题 248
8.5  Java数据库连接 248
8.5.1  JDBC 简介 248
8.5.2  JDBC 中的创建语句 249
8.5.3  JDBC 中的游标操作 250
8.5.4  参数传递 250
8.5.5  习题 251
8.6  SQL 中的事务 251
8.6.1  可串行性 251
8.6.2  原子性 253
8.6.3  事务 254
8.6.4  只读事务 255
8.6.5  读脏数据 256
8.6.6  其他隔离级别 257
8.6.7  习题 258
8.7  SQL 中的安全机制和用户认证 259
8.7.1  权限 259
8.7.2  创建权限 260
8.7.3  检查权限的处理 261
8.7.4  授权 262
8.7.5  授权图 263
8.7.6  销权 264
8.7.7  习题 266
8.8  小结 267
8.9  参考文献 268
第9章  面向对象查询语言 269
9.1  OQL简介 269
9.1.1  一个面向对象的电影例子 269
9.1.2  路径表达式 269
9.1.3  OQL 中 Select-From-Where 表
达式 271
9.1.4  修改结果的类型 271
9.1.5  复杂输出类型 272
9.1.6  子查询 273
9.1.7  习题 274
9.2  OQL 表达式的其他格式 276
9.2.1  量词表达式 276
9.2.2  聚集表达式 277
9.2.3  分组表达式 277
9.2.4  HAVING 子句 279
9.2.5  并、交和差操作 279
9.2.6  习题 280
9.3  OQL 中对象的赋值与创建 281
9.3.1  宿主语言变量的赋值 281
9.3.2  集合元素的提取 281
9.3.3  获取集的每一个成员 281
9.3.4  OQL 中的常量 282
9.3.5  创建新对象 283
9.3.6  习题 284
9.4  SQL 中的用户定义类型 284
9.4.1  在SQL 中定义类型 284
9.4.2  用户定义类型中的方法 285
9.4.3  用UDT声明关系 286
9.4.4  引用 286
9.4.5  习题 288
9.5  对象关系数据上的操作 288
9.5.1  引用的跟随 288
9.5.2  访问UDT类型元组的属性 289
9.5.3  生成器和转换器函数 290
9.5.4  UDT类型联系的排序 291
9.5.5  习题 292
9.6  小结 293
9.7  参考文献 293
第10章  逻辑查询语言 295
10.1  一种关系逻辑 295
10.1.1  谓词和原子 295
10.1.2  算术原子 295
10.1.3  Datalog 规则和查询 296
10.1.4  Datalog 规则的意义 297
10.1.5  扩展谓词和内涵谓词 298
10.1.6  Datalog规则应用于包 299
10.1.7  习题 300
10.2  从关系代数到Datalog 300
10.2.1  交 300
10.2.2  并 300
10.2.3  差 301
10.2.4  投影 301
10.2.5  选择 301
10.2.6  积 303
10.2.7  连接 303
10.2.8  用 Datalog 模拟多重操作 304
10.2.9  习题 305
10.3  Datalog 的递归编程 306
10.3.1  递归规则 307
10.3.2  计算递归Datalog 规则 307
10.3.3  递归规则中的非 311
10.3.4  习题 313
10.4  SQL 中的递归 314
10.4.1  在SQL 中定义IDB关系 314
10.4.2  分层非 316
10.4.3  有问题的递归SQL表达式 317
10.4.4  习题 319
10.5  小结 320
10.6  参考文献 320

教学资源推荐
作者: 杨佩理 陶瑜
作者: 张玉洁 孟祥武 编著
作者: 彭智勇 彭煜玮 编著
参考读物推荐
作者: William G.Page.Jr
作者: (美)Craig S.Mullins