数据库技术是信息系统的一个核心技术。本书是一本全面介绍数据库技术基本原理、技术实现和应用等知识的教程。全书包括4部分共16章。第一部分讨论了数据库的建模方法,第二部分全面介绍了SQL语言及其理论基础,第三部分探讨了数据库技术深层次的实现方法,第四部分详细阐述了数据库技术的发展趋势和应用。
本书内容全面、概念清晰、语言流畅、图文并茂,也可作为高等院校计算机相关专业数据库课程的教材,也可供从事于计算机软件工作的科技人员(如信息管理系统、电子商务网站开发人员等)参阅。
本书特色
●真实案例
本书以一个贯穿全书始终的图书管理示例为主线,把各种数据库技术的知识要点串联成一个逻辑严密的整体。在这个示例不断深化、丰富和完善的过程中,读者也必将随之学习。理解和掌握数据库这门技术。
●教法经典
本书按照读者学习数据库技术的自然过程将全书内容分为设计篇、编程篇、实现篇和提高篇四个部分,由浅入深,有利于读者循序渐进地掌握数据库技术。在每一章的开始,都有本章的内容简介和重点提示,在结束时给出该章的小结和对应的习题,既有利于老师教学,又有利于学生掌握重点内容和提高解决实际问题的能力。
●思考和练习
本书在每一章的最后都安排了具有针对性的习题,包括问答题、思考题等。这些都是从教学与实践中提取出来的。对读者具有指导意义的习题。通过这些思考和练习,读者可以有效地巩固所学的技能和知识,并为以后的实际操作打下良好的基础。
第I部分 设计篇
第1章 步入数据库系统世界
1.1 概述
1.1.1 数据库系统应用示例
1.1.2 数据库系统的作用
1.1.3 常见的数据库系统
1.1.4 数据库应用程序的开发过程
1.2 数据库技术的演变
1.2.1 数据库技术的环境
1.2.2 传统的文件管理阶段
1.2.3 现代的数据库管理系统阶段
1.3 数据库系统架构
1.3.1 数据存储架构
1.3.2 数据视图管理架构
1.3.3 数据库应用架构
1.4 数据库管理系统组件
1.4.1 数据和元数据
1.4.2 输入
1.4.3 查询处理器
1.4.4 存储管理器
1.4.5 事务管理器
1.5 数据库技术的发展趋势
1.5.1 数据库技术面临的挑战
1.5.2 数据库技术的未来
1.6 小结
1.7 思考和练习
第2章 数据库建模--ER图
2.1 ER图的基本概念
2.1.1 实体集和实体集中的属性
2.1.2 联系集和联系集中的属性
2.1.3 绘制ER图
2.2 ER图设计原则
2.2.1 真实性原则
2.2.2 避免冗余原则
2.2.3 简单性原则
2.2.4 恰当性原则:用实体集还是用属性
2.2.5 恰当性原则:用实体集还是用联系集
2.3 对约束建模
2.3.1 映射约束
2.3.2 键码约束
2.3.3 参照完整性约束
2.3.4 其他类型的约束
2.4 弱实体集
2.4.1 弱实体集产生的原因
2.4.2 对弱实体集的要求
2.4.3 弱实体集的表示方法
2.5 ER图的高级技术
2.5.1 特殊化技术
2.5.2 概括技术
2.5.3 属性继承技术
2.5.4 概括约束设计
2.5.5 聚集技术
2.6 小结
2.7 思考和练习
第3章 数据库建模--IDEFlx图
3.1 概述
3.1.1 IDEF方法族简介
3.1.2 IDEFlx图的概念和特点
3.2 IDEFlx图的语法和语义
3.2.1 实体
3.2.2 连接联系
3.2.3 分类联系
3.2.4 非确定联系
3.2.5 属性
3.2.6 主键码和次键码
3.2.7 外键码
3.3 使用IDEFlx图建立数据库模型的过程
3.3.1 准备阶段
3.3.2 定义实体阶段
3.3.3 定义联系阶段
3.3.4 定义键码阶段
3.3.5 定义属性阶段
3.3.6 文件编制阶段
3.4 小结
3.5 思考和练习
第4章 数据库建模--ODL方法
4.1 面向对象概述
4.1.1 面向对象模型和关系模型比较
4.1.2 面向对象基本概念
4.2 ODL的基本结构
4.2.1 ODL概念
4.2.2 ODL接口说明
4.2.3 ODL中的属性
4.2.4 ODL中的联系
4.2.5 反向联系的概念
4.2.6 联系的多重性
4.2.7 ODL中的类型
4.2.8 ODL中方法署名的说明
4.3 子类和约束
4.3.1 ODL中的子类
4.3.2 ODL中的约束
4.4 小结
4.5 思考和练习
第5章 关系模型
5.1 基本概念
5.2 从ER图到关系模型设计的转换
5.2.1 ER图和关系模式的比较
5.2.2 实体集到关系模式的转换
5.2.3 联系集到关系模式的转换
5.2.4 弱实体集到关系模式的转换
5.2.5 ER图中其他元素的转换
5.2.6 键码的转换
5.3 从IDEFlx图到关系模型设计的转换
5.4 从ODL设计到关系模型设计的转换
5.4.1 ODL设计和关系模式设计的比较
5.4.2 从ODL属性到关系模式的属性
5.4.3 ODL设计中非原子属性的转换
5.4.4 0DL设计中联系的转换
5.4.5 0DL设计中联系和反向联系问题
5.4.6 0DL设计中子类结构的转换
5.5 小结
5.6 思考和练习
第6章 关系模式的规范化设计
6.1 概述
6.1.1 异常问题
6.1.2 泛关系模式和数据库模式
6.2 函数依赖
6.2.1 函数依赖的定义
6.2.2 函数依赖和键码
6.2.3 逻辑蕴含
6.2.4 函数依赖的推理规则
6.2.5 属性集的闭包
6.2.6 正则覆盖
6.3 关系模式的分解
6.4 关系模式的范式
6.4.1 第一范式
6.4.2 BCNF范式
6.4.3 分解成BCNF模式的算法
6.4.4 函数依赖的投影
6.4.5 第三范式
6.4.6 第二范式
6.5 多值依赖
6.5.1 多值依赖的概念
6.5.2 多值依赖的推理规则
6.5.3 第四范式
6.6 范式之间的关系
6.7 数据库模式的实例
6.7.1 图书管理数据库模式
6.7.2 计算机产品信息管理数据库模式
6.8 小结
6.9 思考和练习
第II部分 编程篇
第7章 关系代数基本理论
7.1 概述
7.2 关系代数的基本运算
7.2.1 集合运算
7.2.2 选择运算
7.2.3 投影运算
7.2.4 笛卡儿积运算
7.2.5 改名运算
7.3 关系代数的附加运算
7.3.1 自然连接运算
7.3.2 0连接运算
7.3.3 除法运算
7.3.4 赋值运算
7.4 扩充的关系代数运算
7.4.1 广义投影运算
7.4.2 外连接运算
7.4.3 聚集运算
7.5 关系演算
7.5.1 元组关系演算
7.5.2 域关系演算
7.6 关系代数的修改运算
7.6.1 插入运算
7.6.2 删除运算
7.6.3 修改运算
7.7 关系代数表达式的优化策略
7.8 小结
7.9思考和练习
第8章 Datalog语言
8.1 基本概念
8.1.1 基本结构
8.1.2 一般规则
8.1.3 安全规则
8.1.4 外延谓词和内涵谓词
8.2 关系代数向Datalog规则的转换
8.2.1 从集合运算到Datalog规则
8.2.2 从投影运算到Datalog规则
8.2.3 从笛卡儿乘积到Datalog规则
8.2.4 从选择运算到Datalog规则
8.2.5 从连接运算到Datalog规则
8.2.6 从多重运算到Datalog规则
8.3 递归原理
8.3.1 关系代数存在的问题
8.3.2 计算最小固定点
8.3.3 使用Datalog规则表示固定点公式
8.4 包的运算
8.4.1 包的意义
8.4.2 包的关系运算
8.4.3 包的逻辑运算
8.5 小结
8.6 思考和练习
第9章 SQL语言初步
9.1 概述
9.2 简单查询语句
9.2.1 最简单的查询语句
9.2.2 投影
9.2.3 选择
9.2.4 字符串比较
9.2.5 日期和时间的比较
9.2.6 排序结果
9.2.7 副本
9.3 高级查询语句
9.3.1 连接查询
9.3.2 集合查询
9.3.3 聚集查询
9.3.4 子查询
9.4 数据库更新语句
9.4.1 插入数据
9.4.2 删除数据
9.4.3 修改数据
9.5 数据定义语句
9.5.1 数据类型和域
9.5.2 管理表
9.5.3 默认值
9.5.4 索引定义
9.5.5 管理视图
9.6 递归查询
9.7 动手练习
9.8 小结
9.9 思考和练习
第10章 SQL语言高级功能
10.1 约束
10.1.1 键码约束
10.1.2 外键码约束
10.1.3 非空约束
10.1.4 CHECK约束
10.1.5 断言约束
10.2 触发器
10.2.1 触发器的结构
10.2.2 触发器示例
10.3 游标
10.3.1 定义游标
10.3.2 游标的选项
10.4 嵌入式SQL语言
10.4.1 接口和声明
10.4.2 动态的SQL语句
10.5 安全控制和权限管理
10.5.1 权限的类型
10.5.2 授权和收权
10.6 动手练习
10.7 小结
10.8 思考和练习
第III部分 实现篇
第11章 索引和散列技术
11.1 概述
11.1.1 文件组织方式
11.1.2 顺序文件组织
11.1.3 聚集文件组织
11.2 索引技术
11.2.1 基本概念
11.2.2 顺序索引
11.2.3 B+树索引文件
11.3 散列技术
11.3.1 基本概念
11.3.2 散列索引
11.4 Microsoft SQL Server系统中的索引
11.4.1 索引类型
11.4.2 创建索引的方法
11.5 小结
11.6 思考和练习
第12章 查询处理技术
12.1 概述
12.2 查询处理的代价模型
12.3 单个关系运算的代价估计
12.3.1 选择运算的代价估计
12.3.2 连接运算的代价估计
12.3.3 集合运算的代价估计
12.4 表达式运算的代价估计
12.4.1 实体化方法
12.4.2 流水线方法
12.5 Microsoft SQL Server系统的查询处理器
12.5.1 特性概述
12.5.2 交互式操作
12.5.3 执行计划
12.5.4 优化索引
12.5.5 优化隐藏
12.6 小结
12.7 思考和练习
第13章 事务和并发控制
13.1 事务
13.1.1 事务的基本概念
13.1.2 事务的状态变迁图
13.1.3 事务的并发执行
13.1.4 事务的一致性级别
13.2 并发控制
13.2.1 并发操作带来的问题
13.2.2 锁
13.2.3 死锁
13.3 Microsoft SQL Server系统的事务和锁
13.3.1 事务的类型
13.3.2 事务的工作原理
13.3.3 锁的粒度
13.3.4 锁的类型
13.3.5 死锁和死锁的解决方案
13.4 小结
13.5 思考和练习
第IV部分 提高篇
第14章 分布式数据库技术
14.1 概述
14.2 分布式数据库的概念和特点
14.2.1 分布式数据库的概念
14.2.2 分布式数据库的特点
14.3 分布式数据存储技术
14.3.1 数据复制
14.3.2 数据分片
14.3.3 数据混合存储
14.4 分布式数据查询技术
14.4.1 分布式数据查询示例
14.4.2 基于半连接的优化策略
14.4.3 基于连接的优化策略
14.5 Microsoft SQL Server的分布式计算特点
14.5.1 Microsoft Distributed Transaction Coordinator
14.5.2 链接服务器
14.5.3 数据复制
14.6 小结
14.7 思考和练习
第15章 数据仓库技术
15.1 概述
15.2 数据挖掘和数据中心库
15.2.1 数据挖掘技术
15.2.2 数据中心库
15.3 数据仓库的支持工具
15.3.1 OLAP服务
15.3.2 数据转换服务
15.3.3 PivotTable服务
15.4 数据仓库的实现步骤
15.4.1 确定用户需求
15.4.2 设计和建立数据库
15.4.3 提取和加载数据
15.5 数据的粒度.分割和元数据
15.6 小结
15.7 思考和练习
第16章 信息系统的开发过程
16.1 信息系统概述
16.2 开发信息系统的方法论
16.2.1 方法类型
16.2.2 开发策略
16.3 信息系统开发阶段
16.3.1 调查研究阶段
16.3.2 系统分析阶段
16.3.3 系统设计阶段
16.3.4 系统实施阶段
16.3.5 系统评价阶段
16.4 影响信息系统开发成功和失败的因素
16.5 小结
16.6 思考和练习
参考文献
本书于2001年出版后,由于内容新颖、结构合理、概念清晰、示例真实连贯、讲述生动活泼,受到了广大读者的欢迎,连续印刷了多次。
两年多来,数据库技术又有了许多新的发展,读者迫切希望全面掌握新技术、新知识。同时本人在教学实践中又积累了更多的经验。本书的再版及时反映了数据库技术的新进展并全面总结了本人的教学经验。
本次修订过程中,对整个教程的结构进行了较大的改动,以便更好地满足读者的需要。第二版重写了本书的第4部分,增加了分布式数据库技术和数据仓库技术的内容,删除了原来的第14章和第15章,将删除的部分内容融入到了其他章节中。在第9章和第10章中,增加了"动手练习"一节,目的是培养学生的实际动手能力。此外,对第一版中的不妥之处和错误之处进行了认真的修订。
希望广大读者从本书中学习到自己需要的知识,真正地掌握数据库系统的理论和应用。这正是本次修订的目的和本人的心愿。
第一版前言
当今是一个信息爆炸的时代,信息已经成为社会和经济发展的重要支柱之一。大量信息的产生、处理、存储、传播和使用推动了社会的进步和经济的发展。信息系统是一种以加工、处理信息为主的计算机系统。数据库技术作为一种存储和使用信息的信息系统核心技术正在发挥着越来越重要的作用。例如,现在的银行无法再依赖手工记账来处理复杂的储蓄、结算、信贷和信用卡等业务,现在的邮政、电信也无法离开信息系统开展各种邮政和电信业务,现在的航空运输也无法离开信息系统来管理庞大的分布式售票网点,现在的加工企业无法离开信息系统来管理庞大的零部件仓库、计划、生产、销售和财务等,现在的图书出版业无法依赖手工的方式管理大量图书的出版、库存和销售等业务。
本书对数据库技术进行了全面的阐述和研究。在结合大量实例和本人教学体会的基础上,对数据库技术的各个领域进行了深入浅出的剖析,对数据库技术的重点和难点进行了详细的描述,力求做到概念清晰、生动活泼。
本书包括了4部分共16章内容。第一部分是设计篇,重点介绍了ER图、ODL方法、IDEFlx图和关系模型等数据库建模技术。第二部分是编程篇,对数据库技术中的关系代数。Datalog语言等理论以及标准SQL语言进行了讲述。第三部分是实现篇,讨论了有关索引、查询、事务和并发控制等数据库技术内核的实现问题。第四部分是提高篇,对典型的桌面型数据库产品、分布式数据库产品以及信息系统的开发方法进行了介绍和分析。
在每章的开始,对该章将要涉及的内容和作用进行了简单的介绍,然后指出了学完本章后应该掌握的重要内容。每章正文内容结束之后,有一个对本章所讲述的内容进行总结和评价的小结。另外,每章后面都附有思考和练习。思考题侧重于加深读者对本章涉及概念的理解,练习题侧重于培养学生应用本章学到的知识宋解决实际问题的能力。
本教程还有一个显著的特点,就是以一个贯穿全书的图书管理示例为主线,把各种数据库技术的知识要点,串联成一个逻辑严密的整体。这个示例不断深化、丰富和完善的过程,实际上就是读者不断学习。理解和掌握数据库技术的过程。
限于本人水平有限,书中难免有不妥之处,欢迎广大读者批评指正。