数据库系统基础教程
1999-9-1
清华大学出版社
Jeffrey D.Ullman,Jennifer Widom
332
史嘉权
无
数据库技术近年来发展非常迅速,特别是提出信息高速公路以来,所谓“3C”即计算机、通信和信息内容(Computer、Communication和Contents)已成为信息技术的核心。而信息高速公路的价值正体现在信息内容上,若没有大量的数据库存放这些“内容”并提供迅速、简便、高效的查询手段,则信息高速公路就只能“跑空车”了。面向对象的数据库技术是近年来数据库技术发展的重要方向和热点,目前国内在该领域的科研方面已在积极开展,但在教材中尚无反映,因此急需有关的教材,而本书正是雪中送炭。本书是从斯坦福大学1997年的教材《数据库系统基础教程》(《A First Course inDatabase Systerns》)翻译过来的。本书以当前的主流数据库——关系数据库——为基础,以数据库系统的最基本内容——数据库的设计与编程——为重点,以引进数据库领域的最新成果——比如面向对象的数据库技术——为特点,系统地阐述了数据库建模、关系数据库的理论和设计、结构化查询语言SQL及其最新的标准SQL2和SQL3,阐述了递归查询等最新内容,特别是以相当多的篇幅阐述了面向对象数据库的对象定义语言ODL和对象查询语言OQL。本书的主要特点是新颖、丰富、系统、实用,把数据库技术的最新成果迅速反映到教材中。斯坦福大学是世界一流大学,世界著名的硅谷与斯坦福有不解之缘。我们及时引进国外的最新教材,对提高国内的计算机教学和科研水平会起到积极的推动作用。为培养同学直接从英文资料获取信息的能力,清华大学出版社已于98年出版了本书英文原著的影印本,现在又出版该书的中译本,这样可使不同程度的读者都能从中有所收益。读者不仅可以从中学到最新的专业知识,也能从中提高英文的专业阅读能力。本书的翻译得到了我系周立柱教授的大力支持,在此表示衷心的感谢在本书的翻译过程中,王霞、张勇、张劲飞和武志光同学为初稿的翻译和文稿的录入协助做了很多工作。本书的译文难免有不妥之处,敬请读者予以指正。
本书是由美国斯坦福大学两位著名的计算机学者J.D.Ullman和J.Widom为初学数据库的人编写的基本教材。内容以对数据库的使用为主,讲述了数据建模、关系数据模型、SQL语言以及面向数据库的查询语言OQL的基本概念。
额尔曼 (Jeffrey D.Ullman),美国人。 威多姆 (Jennifer Widom),美国人。
第1章数据库系统的世界1.1 数据库系统的发展1.1.1 早期的数据库管理系统1.1.2 关系数据库系统1.1.3 越来越小的系统1.1.4 越来越大的系统1.2 数据库管理系统的结构1.2.1 DBMS的组成概述1.2.2 存储管理程序1.2.3 查询处理程序1.2.4 事务管理程序1.2.5 客户程序服务程序体系结构1.3 未来的数据库系统1.3.1 类型、类和对象1.3.2 约束和触发程序1.3.3 多媒体数据1.3.4 数据集成1.4 本书概要1.4.1 设计1.4.2 编程1.5 本章总结1.6 本章参考文献第2章 数据库建模2.1 ODL介绍2.1.1 面向对象的设计2.1.2 接口说明2.1.3 ODL中的属性2.1.4 ODL中的联系2.1.5 反向联系2.1.6 联系的多重性2.1.7 ODL中的类型2.1.8 本节练习2.2 实体联系图2.2.1 E/R联系的多重性2.2.2 联系的多向性2.2.3 联系中的角色2.2.4 联系中的属性2.2.5 把多向联系转换成二元联系2.2.6 本节练习2.3 设计原则2.3.1 真实性2.3.2 避免冗余2.3.3 对简单性的考虑2.3.4 选择合适的元素类型2.3.5 本节练习2.4 子类2.4.1 ODL中的子类2.4.2 在ODL中的多重继承2.4.3 实体联系图中的子类2.4.4 E/R模型中的继承2.4.5 本节练习2.5 对约束的建模2.5.1 键码2.5.2 在ODL中说明键码2.5.3 在E/R模型中表示键码2.5.4 单值约束2.5.5 参照完整性2.5.6 E/R图中的参照完整性2.5.7 其他类型的约束2.5.8 本节练习2.6 弱实体集2.6.1 产生弱实体集的原因2.6.2 对弱实体集的要求2.6.3 弱实体集的表示法2.6.4 本节练习2.7 历史上有影响的模型2.7.1 网状模型2.7.2 网状模式的表示2.7.3 层次模型2.7.4 本节练习2.8 本章总结2.9 本章参考文献第3章 关系数据模型3.1 关系模型的基本概念3.1.1 属性3.1.2 模式3.1.3 元组3.1.4 域3.1.5 关系的等价表示法3.1.6 关系实例3.1.7 本节练习3.2 从ODL设计到关系设计3.2.1 从ODL属性到关系属性3.2.2 类中的非原子属性3.2.3 其他类型构造符的表示3.2.4 单值联系的表示3.2.5 多值联系的表示3.2.6 假如没有键码3.2.7 联系与反向联系的表示3.2.8 本节练习3.3 从E/R图到关系的设计3.3.1 实体集到关系的转换3.3.2 E/R联系到关系的转换3.3.3 处理弱实体集3.3.4 本节练习3.4 子类结构到关系的转换3.4.1 用关系表示ODL子类3.4.2 在关系模型中表示“属于”联系3.4.3 方法的比较3.4.4 使用NULL值合并关系3.4.5 本节练习3.5 函数依赖3.5.1 函数依赖的定义3.5.2 关系的键码3.5.3 超键码3.5.4 寻找关系的键码3.5.5 由ODL设计导出的关系的键码3.5.6 本节练习3.6 函数依赖规则3.6.1 分解/合并规则3.6.2 平凡依赖3.6.3 计算属性的闭包3.6.4 传递规则3.6.5 函数依赖的闭包3.6.6 本节练习3.7 关系数据库模式设计3.7.1 异常3.7.2 关系分解3.7.3 BC范式3.7.4 分解成BCNF3.7.5 函数依赖的投影3.7.6 从分解中恢复信息3.7.7 第三范式3.7.8 本节练习3.8 多值依赖3.8.1 属性的独立性及其带来的冗余3.8.2 多值依赖的定义3.8.3 多值依赖的推论3.8.4 第四范式3.8.5 分解成第四范式3.8.6 范式间的联系3.8.7 本节练习3.9 数据库模式实例3.10 本章总结3.11 本章参考文献第4章 关系模型中的运算4.1 关系代数4.1.1 关系的集合运算4.1.2 投影4.1.3 选择4.1.4 笛卡尔积4.1.5 自然连接4.1.6 枇4.1.7 查询中的复合运算4.1.8 改名4.1.9 基本和导出运算4.1.10 本节练习4.2 关系的逻辑4.2.1 谓词和原子4.2.2 算术原子4.2.3 Datalog规则和查询4.2.4 Datalog规则的含义4.2.5 外延和内涵谓词4.2.6 本节练习4.3 从关系代数到Datalog4.3.1 交集4.3.2 并集4.3.3 差集4.3.4 投影4.3.5 选择4.3.6 乘积4.3.7 连接4.3.8 用Datalog模拟多重运算4.3.9 本节练习4.4 Datalog中的递归编程4.4.1 固定点运算符4.4.2 计算最小固定点4.4.3 Datalog中的固定点方程4.4.4 递归规则中的求反4.4.5 本节练习4.5 对关系的约束4.5.1 用关系代数作为约束语言4.5.2 参照完整性约束4.5.3 附加约束的例子4.5.4 本节练习4.6 包的关系运算4.6.1 为什么用包?4.6.2 包的并集、交集和差集4.6.3 包的投影4.6.4 包的选择4.6.5 包的乘积4.6.6 包的连接4.6.7 包的运算用于Datalog规则4.6.8 本节练习4.7 关系模型的其他外延4.7.1 更新4.7.2 聚合4.7.3 视图4.7.4 空值4.8 本章总结4.9 本章参考文献第5章 数据库语言SQL5.1 SQL的简单查询5.1.1 SQL的投影5.1.2 SQL的选择5.1.3 字符串的比较5.1.4 日期和时间的比较5.1.5 输出的排序5.1.6 本节练习5.2 涉及多个关系的查询5.2.1 SQL中的乘积和连接5.2.2 消除属性的二义性5.2.3 元组变量5.2.4 多关系查询的解释5.2.5 查询的并、交、差5.2.6 本节练习5.3 子查询5.3.1 产生标量值的子查询5.3.2 涉及到关系的条件5.3.3 涉及到元组的条件5.3.4 相关子查询5.3.5 本节练习5.4 副本5.4.1 副本的删除5.4.2 并、交、差中的副本5.4.3 本节练习5.5 聚合5.5.1 聚合运算符5.5.2 分组5.5.3 HAVING子句5.5.4 本节练习5.6 数据库更新5.6.1 插入5.6.2 删除5.6.3 修改5.6.4 本节练习5.7 用SQL定义关系模式5.7.1 数据类型5.7.2 表的简单说明5.7.3 删除表5.7.4 更改关系模式5.7.5 默认值5.7.6 域5.7.7 索引5.7.8 本节练习5.8 视图的定义5.8.1 视图的说明5.8.2 视图的查询5.8.3 属性改名5.8.4 视图的更新5.8.5 对涉及到视图的查询的解释5.8.6 本节练习5.9 空值和外部连接5.9.1 对空值的运算5.9.2 真值UNKNOWN5.9.3 SQL2中的连接表达式5.9.4 自然连接5.9.5 外部连接5.9.6 本节练习5.10 SQL3中的递归5.10.1 在SQL3中定义IDB关系5.10.2 线性递归5.10.3 在WITH语句中使用视图5.10.4 分层求反5.10.5 SQL3递归中的未定表达式5.10.6 本节练习5.11 本章总结5.12 本章参考文献第6章 SQL中的约束和触发程序6.1 SQL中的键码6.1.1 说明键码6.1.2 实施键码约束6.1.3 本节练习6.2 参照完整性和外键码6.2.1 说明外键码约束6.2.2 保持参照完整性6.2.3 本节练习6.3 对属性值的约束6.3.1 非空约束6.3.2 基于属性的CHECK约束6.3.3 域约束6.3.4 本节练习6.4 全局约束6.4.1 基于元组的CHECK约束6.4.2 断言6.4.3 本节练习6.5 约束的更新6.5.1 对约束命名6.5.2 更改表的约束6.5.3 更改域的约束6.5.4 更改断言6.5.5 本节练习6.6 SQL3中的触发程序6.6.1 触发和约束6.6.2 SQL3触发程序6.6.3 SQL3的断言6.6.4 本节练习6.7 本章总结6.8 本章参考文献第7章 SQL系统概况7.1 编程环境中的SQL7.1.1 匹配失衡问题7.1.2 SQL/宿主语言接口7.1.3 说明(DECLARE)段7.1.4 使用共享变量7.1.5 单行查询语句7.1.6 游标7.1.7 通过游标的更新7.1.8 游标选项7.1.9 为取出的元组排序7.1.10 防止并发更新的保护措施7.1.11 滚动游标7.1.12 动态SQL7.1.13 本节练习7.2 SQL中的事务7.2.1 可串行性7.2.2 原子性7.2.3 事务7.2.4 只读事务7.2.5 读脏数据7.2.6 其他隔离性级别7.2.7 本节练习7.3 SQL环境7.3.1 环境7.3.2 模式7.3.3 目录7.3.4 SQL环境中的客户程序和服务程序7.3.5 连接7.3.6 会话7.3.7 模块7.4 SQL2的安全和用户授权7.4.1 权限7.4.2 建立权限7.4.3 权限检验处理7.4.4 授予权限7.4.5 授权图7.4.6 取消权限7.4.7 本节练习7.5 本章总结7.6 本章参考文献第8章 面向对象查询语言8.1 ODL中相关查询的特性8.1.1 ODL对象的操作8.1.2 ODL中方法署名的说明8.1.3 类的范围8.1.4 本节练习8.2 OQL介绍8.2.1 面向对象的电影实例8.2.2 OQL类型系统8.2.3 路径表达式8.2.4 OQL中的selectfromwhere表达式8.2.5 消除重复8.2.6 复杂的输出类型8.2.7 子查询8.2.8 对结果排序8.2.9 本节练习8.3 OQL表达式的附加格式8.3.1 量词表达式8.3.2 聚合表达式8.3.3 分组表达式8.3.4 HAVING子句8.3.5 集合运算符8.3.6 本节练习8.4 OQL中对象的赋值和建立8.4.1 对宿主语言变量赋值8.4.2 从聚集中提取元素8.4.3 获取聚集的每个成员8.4.4 建立新对象8.4.5 本节练习8.5 SQL3中的元组对象8.5.1 行类型8.5.2 说明具有行类型的关系8.5.3 访问行类型的分量8.5.4 引用8.5.5 利用引用8.5.6 引用的作用域8.5.7 作为值的对象标识8.5.8 本节练习8.6 SQL3的抽象数据类型8.6.1 ADT的定义8.6.2 ADT方法的定义8.6.3 外部函数8.6.4 本节练习8.7 ODL/OQL和SQL3方法的比较8.8 本章总结8.9 本章参考文献
插图:
《数据库系统基础教程》由清华大学出版社出版。
无
蛮不错的一本书~学数据库系统的,先看这本书吧,
很不错的一本书,写得简单易懂,强烈推荐给大家,特别是对数据库零基础的阅读者。
这是一本很不错的关于数据库知识的教材,是考研必备教材。
纸质很好...内容也不错..
书的只是结构很好,书中列子也不错,值得一读。
纸质很好,比书店便!很好!
在我考研的路上帮了我很大忙!超感谢
可以退货吗?现在是一点用都没了
还是可以学到东西的 不错的书
书本没买到,话说是缺货,应该蛮受欢迎的
速度挺快,但是感觉不是新书。
例子举得不错 翻译有点问题
包装有问题,一拿到手上就坏了,没有办法带回家。只好在附近的超市另买了个袋子。
大家最好不要买此书,网页中标明的是2007年版的,其实是1999年版,2004年印刷的,明显坑人,退书太麻烦,不然我肯定退了。卓越太不厚道了,这书明显很久,没办法,年代久远啊。
此书虽然版本比较旧,但是确实值得一看。
好书,理论有深度,但最好入门别看这本,会晕的。学了一遍在看这本书,关键是做作习题。