目 录出版者的话译者序前言**部分 背景第1章 数据库简介21.1 引言31.2 传统的基于文件的系统41.2.1 基于文件的方法51.2.2 基于文件方法的局限性81.3 数据库方法101.3.1 数据库101.3.2 数据库管理系统(dbms)111.3.3 (数据库)应用程序121.3.4 dbms环境的组成部分131.3.5 数据库设计:范型改变151.4 数据库环境中的各种角色161.4.1 数据管理员和数据库管理员161.4.2 数据库设计人员161.4.3 应用开发人员171.4.4 终端用户171.5 数据库管理系统的历史171.6 dbms的优点和缺点20本章小结23思考题23习题24扩展阅读25第2章 数据库环境262.1 ansi-sparc三层体系结构272.1.1 外部层282.1.2 概念层282.1.3 内部层282.1.4 模式、映射和实例292.1.5 数据独立性302.2 数据库语言302.2.1 数据定义语言(ddl)312.2.2 数据操作语言(dml)312.2.3 第四代语言322.3 数据模型和概念建模332.3.1 基于对象的数据模型342.3.2 基于记录的数据模型342.3.3 物理数据模型362.3.4 概念建模362.4 dbms的功能36本章小结39思考题40习题40扩展阅读41第3章 数据库的结构与web423.1 多用户dbms结构423.1.1 远程处理433.1.2 文件服务器结构433.1.3 传统的两层客户-服务器结构443.1.4 三层客户-服务器结构453.1.5 n层客户-服务器结构473.1.6 中间件473.1.7 事务处理监视器493.2 web 服务与面向服务的结构503.2.1 web 服务503.2.2 面向服务的结构(soa)513.3 分布式dbms533.4 数据仓库543.5 云计算563.5.1 云计算的好处与风险583.5.2 基于云的数据库方案603.6 dbms的组件633.7 oracle的体系结构653.7.1 oracle的逻辑数据库结构653.7.2 oracle的物理数据库结构67本章小结71思考题71习题72扩展阅读72第二部分 关系模型与语言第4章 关系模型744.1 关系模型简史744.2 基本术语764.2.1 关系数据结构764.2.2 数学中的关系784.2.3 数据库中的关系794.2.4 关系的性质794.2.5 关系关键字804.2.6 关系数据库模式的表示814.3 完整性约束834.3.1 空834.3.2实体完整性834.3.3引用完整性844.3.4一般性约束844.4视图844.4.1术语854.4.2视图的用途854.4.3视图的更新86本章小结86思考题86习题87扩展阅读87第5章 关系代数与关系演算885.1关系代数885.1.1一元运算905.1.2集合运算915.1.3连接运算935.1.4除法运算965.1.5聚集运算和分组运算965.1.6 关系代数运算小结975.2 关系演算985.2.1 元组关系演算995.2.2 域关系演算1015.3 其他语言103本章小结103思考题104习题104扩展阅读106第6章 sql:数据操作1076.1 sql简介1086.1.1 sql的目标1086.1.2 sql的历史1096.1.3 sql的重要性1106.1.4 术语1106.2 书写sql命令1106.3 数据操作1116.3.1 简单查询1126.3.2 查询结果排序(order by子句)1186.3.3 使用sql聚集函数1196.3.4 查询结果分组(group by子句) 1216.3.5 子查询1236.3.6 any和all1256.3.7 多表查询1266.3.8 exists和not exists1316.3.9 合并结果表(union、intersect和except)1326.3.10 数据库更新 133本章小结136思考题137习题137第7章 sql:数据定义1407.1 iso sql数据类型1417.1.1 sql标识符1417.1.2 sql标量数据类型 1417.2 完整性增强特性1457.2.1 必须有值的数据1457.2.2 域约束1457.2.3 实体完整性1467.2.4 引用完整性1477.2.5 一般性约束1487.3 数据定义1487.3.1 创建数据库1497.3.2 创建表(create table)1497.3.3 修改表定义(alter table) 1527.3.4 删除表(drop table)1537.3.5 创建索引(create index) 1537.3.6 删除索引(drop index)1547.4 视图1547.4.1 创建视图(create view)1547.4.2 删除视图(drop view)1567.4.3 视图分解1577.4.4 视图的局限性1577.4.5 视图的可更新性1587.4.6 with check option1597.4.7 视图的优缺点1607.4.8 视图物化1617.5 事务1627.6 自主访问控制1637.6.1 授予其他用户权限(grant)1647.6.2 撤销用户权限(revoke)166本章小结167思考题168习题168第8章 高级sql1718.1 sql编程语言1718.1.1 声明1728.1.2 赋值1738.1.3 控制语句1738.1.4 pl/sql的异常1758.1.5 pl/sql的游标1768.2 子程序、存储过程、函数和包1788.3 触发器1798.4 递归184本章小结185思考题185习题186扩展阅读186第9章 对象关系dbms1879.1 高级数据库应用1889.2 rdbms的缺点1919.3 在关系数据库中存储对象1959.3.1 将类映射为关系1969.3.2 访问关系数据库中的对象1979.4 对象关系数据库系统简介1989.5 sql:20112009.5.1 行类型2019.5.2 用户自定义类型2019.5.3 子类型和超类型2049.5.4 用户自定义例程2069.5.5 多态性2079.5.6 引用类型和对象标识2089.5.7 创建表2089.5.8 数据查询2109.5.9 集类型2119.5.10 类型视图2149.5.11 持久化存储模块2159.5.12 触发器2159.5.13 大对象2179.5.14 递归2199.6 oracle中面向对象的扩展2199.6.1 用户自定义数据类型2199.6.2 操作对象表2239.6.3 对象视图2249.6.4 权限225本章小结226思考题226习题226扩展阅读227第三部分 数据库分析与设计第10章 数据库系统开发生命周期23010.1 信息系统生命周期23110.2 数据库系统开发生命周期23110.3 数据库规划23310.4 系统定义23310.5 需求收集与分析23410.5.1 集中式方法23510.5.2 视图集成方法23510.6 数据库设计23710.6.1 数据库设计方法23710.6.2 数据建模23810.6.3 数据库设计的阶段划分23810.7 dbms选型24010.8 应用程序设计24310.8.1 事务设计24310.8.2 用户界面设计指南24410.9 建立原型系统24610.10 实现24610.11 数据转换与加载24610.12 测试24710.13 运行维护24710.14 case工具248本章小结249思考题250习题250扩展阅读251第11章 数据库分析与dreamhome案例研究25211.1 使用实况发现技术的时机25311.2 收集实况的类型25311.3 实况发现技术 25411.3.1 分析文档资料25411.3.2 面谈25411.3.3 观察企业的运作25511.3.4 研究25611.3.5 问卷调查25611.4 使用实况发现技术的实例25611.4.1 dreamhome案例研究—概述25711.4.2 dreamhome案例研究—数据库规划26011.4.3 dreamhome案例研究—系统定义26411.4.4 dreamhome案例研究—需求收集与分析26611.4.5 dreamhome案例研究—数据库设计271本章小结271思考题271习题271扩展阅读272第12章 实体-联系建模27312.1 实体类型 27412.2 联系类型27512.2.1 联系类型的度27612.2.2 递归联系27812.3 属性 27912.3.1 简单属性和组合属性27912.3.2 单值属性和多值属性27912.3.3 导出属性 28012.3.4 关键字 28012.4 强实体类型与弱实体类型28212.5 联系的属性28212.6 结构化约束28312.6.1 一对一(1:1)联系28312.6.2 一对多(1:*)联系28412.6.3 多对多(*:*)联系28512.6.4 复杂联系的多重性28712.6.5 基数约束和参与性约束28812.7 er模型的问题28912.7.1 扇形陷阱28912.7.2 断层陷阱291本章小结292思考题293习题293第13章 增强的实体-联系建模29513.1 特殊化/泛化29513.1.1 超类和子类29613.1.2 超类/子类联系29613.1.3 属性的继承29713.1.4 特殊化过程29713.1.5 泛化过程29813.1.6 特殊化/泛化的约束30013.1.7 基于dreamhome案例研究的branch视图特殊化/泛化建模示例30113.2 聚合30413.3 组合305本章小结306思考题306习题307扩展阅读308第14章 规范化30914.1 规范化的目的31014.2 规范化对数据库设计的支持31014.3 数据冗余与更新异常31114.3.1 插入异常31214.3.2 删除异常31214.3.3 修改异常31214.4 函数依赖31314.4.1 函数依赖的特征31314.4.2 识别函数依赖31614.4.3 利用函数依赖确定主关键字31814.5 规范化过程31814.6 **范式(1nf)32014.7 第二范式(2nf)32314.8 第三范式(3nf)32514.9 2nf和3nf的一般化定义326本章小结327思考题328习题328第15章 进一步规范化33215.1 函数依赖的进一步讨论33315.1.1 函数依赖的推导规则33315.1.2 *小函数依赖集33415.2 boyce-codd范式(bcnf)33515.3 规范化到bcnf的过程小结33715.4 第四范式(4nf)34215.4.1 多值依赖34215.4.2 第四范式的定义34315.5 第五范式(5nf)34315.5.1 无损连接依赖34315.5.2 第五范式的定义344本章小结345思考题345习题346扩展阅读346第四部分 方法学第16章 方法学—概念数据库设计34816.1 数据库设计方法学简介34916.1.1 什么是设计方法学34916.1.2 概念、逻辑和物理数据库设计34916.1.3 成功设计数据库的关键因素34916.2 数据库设计方法学概述35016.3 概念数据库设计方法学352步骤1 建立概念数据模型352本章小结363思考题364习题364第17章 方法学—关系模型的逻辑数据库设计36617.1 关系模型的逻辑数据库设计方法学366步骤2 建立逻辑数据模型366本章小结389思考题390习题390扩展阅读392第18章 方法学——关系数据库的物理数据库设计39418.1 逻辑数据库设计与物理数据库设计的比较39518.2 物理数据库设计方法学概述39518.3 关系数据库的物理数据库设计方法学396步骤3 转换逻辑数据模型以适应目标dbms396步骤4 设计文件组织方法和索引399步骤5 设计用户视图410步骤6 设计安全机制410本章小结411思考题411习题412第19章 方法学——运行时系统的监控与调优41319.1 逆规范化与可控冗余的引入413步骤7 考虑引入可控冗余41319.2 监控系统以提高性能423步骤8 监控系统和系统调优423本章小结426思考题427习题427扩展阅读427第五部分 可选的数据库专题第20章 安全与管理43020.1 数据库安全43020.2 对策—基于计算机的控制43320.2.1 授权43420.2.2 访问控制43520.2.3 视图43720.2.4 备份和恢复43720.2.5 完整性43820.2.6 加密43820.2.7 raid(独立磁盘冗余阵列)43920.3 microsoft office access dbms的安全机制44120.4 oracle dbms的安全机制44320.5 dbms与web安全44520.5.1 代理服务器44620.5.2 防火墙44620.5.3 报文摘要算法和数字签名44720.5.4 数字证书44720.5.5 kerberos44820.5.6 安全套接字层和安全http44820.5.7 安全电子交易和安全交易技术44920.5.8 java安全44920.5.9 activex安全45120.6 数据管理与数据库管理45120.6.1 数据管理45220.6.2 数据库管理45220.6.3 数据管理与数据库管理的比较453本章小结453思考题454习题455扩展阅读455第21章 数据管理中的职业、法律与道德问题45721.1 定义it中的法律与道德问题45721.1.1 定义it中的道德规范45821.1.2 道德行为与合法行为的差别45821.1.3 it中的道德行为45921.2 若干法规及其对it功能的影响46021.2.1 美国证券交易委员会(sec)推出的规制国家市场体系(nms)46021.2.2 萨班斯-奥克斯利法案、cobit和coso 46021.2.3 健康保险流通和责任法案(hipaa)46221.2.4 欧盟数据保护法令1995 46321.2.5 英国数据保护法令(dpa)1998 46421.2.6 信息访问法规46421.2.7 国际银行业—巴塞尔ⅱ协议46521.3 建立守法、道德的数据管理文化46621.3.1 制定本组织内关于法律和道德行为的政策46721.3.2 行业组织和伦理守则46721.3.3 制定dreamhome组织内部关于法律和道德行为的政策46921.4 知识产权47021.4.1 专利47021.4.2 版权47121.4.3 (注册)商标47121.4.4 软件的知识产权问题47121.4.5 数据的知识产权问题472本章小结473思考题473习题474扩展阅读474第22章 事务管理47522.1 支持事务处理47622.1.1 事务的性质47822.1.2 数据库体系结构47822.2 并发控制47922.2.1 并发控制的必要性47922.2.2 可串行性与可恢复性48122.2.3 加锁方法48722.2.4 死锁49222.2.5 时间戳方法49422.2.6 多版本时间戳排序49722.2.7 乐观技术49822.2.8 数据项的粒度49922.3 数据库恢复50122.3.1 恢复的必要性50122.3.2 事务和恢复50222.3.3 恢复机制50422.3.4 恢复技术50622.3.5 分布式dbms的恢复50822.4 高级事务模型50822.4.1 嵌套事务模型50922.4.2 saga51022.4.3 多级事务模型51122.4.4 动态重构51222.4.5 工作流模型51322.5 oracle中的并发控制与恢复51322.5.1 oracle的隔离级别51422.5.2 多版本读一致性51422.5.3 死锁检测51622.5.4 备份和恢复516本章小结518思考题519习题519扩展阅读521第23章 查询处理52223.1 查询处理概述52323.2 查询解析52523.3 查询优化的启发式方法52823.3.1 关系代数运算的转换规则52923.3.2 启发式处理策略53223.4 关系代数运算的代价估算53323.4.1 数据库的统计信息53423.4.2 选择运算53423.4.3 连接运算54023.4.4 投影运算54623.4.5 关系代数的集合运算54723.5 其他可选的执行策略54823.5.1 流水线54923.5.2 线性树54923.5.3 物理算子和执行策略55023.5.4 缩小搜索空间55123.5.5 枚举左深树55123.5.6 语义查询优化55323.5.7 其他查询优化方法55323.5.8 分布式查询优化55423.6 查询处理与优化55423.7 oracle的查询优化55823.7.1 基于规则和基于代价的优化55823.7.2 柱状图56023.7.3 查看执行计划562本章小结563思考题564习题564扩展阅读566附 录附录a dreamhome案例研究的用户需求说明568附录b 其他案例研究572附录c 可选的er建模表示法581附录d 关系数据库设计方法学总结584附录e 轻量级rdbms:pyrrho简介588在 线 资 源附录f 文件组织和索引附录g 何时可将dbms视为关系型附录h 商品化dbms:access和oracle附录i 程序式 sql附录j 估算磁盘空间的需求附录k 面向对象概念介绍附录l web脚本示例附录m 举例查询语言(qbe)附录n 第三代数据库宣言附录o postgres—早期的ordbms 参考文献