本书是一本介绍数据库设计技术的著作,数据库设计是开发一个好的数据库应用系统的基础,本书运用大量实例对数据库设计过程中所涉及到的技术和知识进行了详细的介绍。本书的内容包括:数据库的基本原理、常用的数据库模型、数据库设计方法和数据库生命周期;并介绍了如何获取业务需求以及根据业务需求建立业务模型并生成ERD,如何减少冗余数据,如何保证数据的完整性,如何设计视图以及数据库安全性方面的考虑等。\r\n本书的最大特点就是所讲授的概念与实例紧密结合,书中运用了大量的图来说明问题,便于读者理解。\r\n本书适合于作为从事或希望从事数据库设计的人士进行数据库设计的指南,也可作为大学本科学生学习数据库理论知识后的补充学习内容,同时也是讲授数据库课程的教师的一本非常有价值的参考书。\r\n\r\n
\r\n
译者序\r\n作者介绍\r\n绪论\r\n第一篇 数据库设计概述\r\n第1章 数据库基本原理 1\r\n1.1 数据库是什么 2\r\n1.1.1 数据库的用途 3\r\n1.1.2 数据库的使用者 4\r\n1.2 数据库环境 5\r\n1.2.1 主机环境 5\r\n1.2.2 客户/服务器环境 6\r\n1.2.3 互联网计算环境 6\r\n1.3 数据库的起源 7\r\n1.3.1 业务规则 8\r\n1.3.2 业务处理 8\r\n1.3.3 信息与数据 8\r\n1.3.4 需求分析 9\r\n1.3.5 实体 9\r\n1.3.6 属性 9\r\n1.3.7 业务处理的再工程化 10\r\n1.4 数据库组成 10\r\n1.4.1 数据库模式 10\r\n1.4.2 表 11\r\n1.4.3 列 11\r\n1.4.4 行 12\r\n1.4.5 数据类型 12\r\n1.5 数据库的完整性 13\r\n1.5.1 主键码 13\r\n1.5.2 外键码 13\r\n1.5.3 关系 14\r\n1.6 数据库设计的重要概念 14\r\n1.6.1 设计方法 14\r\n1.6.2 将业务模型转换成数据库设计 15\r\n1.6.3 应用软件的设计 15\r\n1.7 优秀的数据库的特点 16\r\n1.7.1 满足数据存储需求 16\r\n1.7.2 数据的可用性 17\r\n1.7.3 数据保护 17\r\n1.7.4 数据的准确性 18\r\n1.7.5 合适的数据库性能 18\r\n1.7.6 尽可能减少冗余数据 19\r\n1.8 小结 19\r\n第2章 数据库模型概述 21\r\n2.1 数据库类型 21\r\n2.1.1 平面文件数据库模型 22\r\n2.1.2 层次数据库模型 23\r\n2.1.3 网状数据库模型 24\r\n2.1.4 关系数据库模型 25\r\n2.1.5 面向对象数据库模型 26\r\n2.1.6 对象关系数据库模型 28\r\n2.2 可供选择的流行数据库 29\r\n2.2.1 关系数据库的特点 29\r\n2.2.2 关系数据库的对象 30\r\n2.2.3 SQL:关系数据库语言 30\r\n2.2.4 关于数据库模型的网上信息资源 31\r\n2.3 选择合适的数据库 32\r\n2.4 小结 32\r\n第3章 数据库设计方案 34\r\n3.1 什么是数据库设计 34\r\n3.2 数据库设计的重要性 35\r\n3.3 数据库设计方案的制定 36\r\n3.3.1 任务描述 36\r\n3.3.2 制定工作计划 38\r\n3.3.3 设置“里程碑”和时间期限 38\r\n3.3.4 组建设计小组和分配任务 39\r\n3.4 设计成功的数据库系统所具备的特点 40\r\n3.5 设计方法概述 41\r\n3.6 逻辑建模与物理建模 42\r\n3.6.1 逻辑建模 42\r\n3.6.2 物理建模 43\r\n3.7 自动化设计工具 44\r\n3.7.1 为什么要使用自动化设计工具 45\r\n3.7.2 自动化设计工具的功能 46\r\n3.8 小结 47\r\n第4章 数据库设计生命周期 49\r\n4.1 系统开发过程 49\r\n4.1.1 传统的设计方法 50\r\n4.1.2 Barker方法 54\r\n4.1.3 改进的设计方法 58\r\n4.2 设计过程概述 60\r\n4.2.1 定义数据 60\r\n4.2.2 创建数据结构 61\r\n4.2.3 定义数据关系 61\r\n4.2.4 定义视图 62\r\n4.3 现有数据库的二次设计 63\r\n4.4 数据库生命周期概述 65\r\n4.4.1 开发环境 65\r\n4.4.2 测试环境 67\r\n4.4.3 产品环境 67\r\n4.5 小结 69\r\n第二篇 业务需求分析和建模\r\n第5章 业务需求和系统需求的获得 71\r\n5.1 需求类型 72\r\n5.1.1 业务需求 72\r\n5.1.2 系统需求 73\r\n5.2 需求分析概述 74\r\n5.3 业务需求的确定 74\r\n5.3.1 谁有“发言权” 75\r\n5.3.2 调研客户 78\r\n5.3.3 调研最终用户 80\r\n5.3.4 研究现有的业务处理 82\r\n5.4 业务需求分析 82\r\n5.5 确定系统需求 84\r\n5.5.1 标识数据 84\r\n5.5.2 数据的分类 85\r\n5.5.3 建立字段列表 85\r\n5.5.4 建立数据关系 87\r\n5.6 确定数据库设计方向 88\r\n5.6.1 确定数据库模型的类型 88\r\n5.6.2 选择实现方法 88\r\n5.6.3 定义命名规则和标准 89\r\n5.6.4 制定工作进度和时间期限 90\r\n5.6.5 设计小组成员工作的分配 90\r\n5.7 先期文档 91\r\n5.7.1 高层工作计划 92\r\n5.7.2 策略文档 92\r\n5.7.3 详细的需求文档 92\r\n5.8 评估分析 93\r\n5.9 小结 94\r\n第6章 建立业务模型 96\r\n6.1 理解业务建模概念 96\r\n6.2 使用所收集的信息 96\r\n6.3 业务模型图 97\r\n6.4 通用业务模型 99\r\n6.5 业务模型的组成示例 100\r\n6.6 小结 101\r\n第7章 理解实体和关系 103\r\n7.1 实体和实体关系概述 103\r\n7.1.1 一对一关系 104\r\n7.1.2 一对多关系 105\r\n7.1.3 多对多关系 106\r\n7.1.4 递归关系 107\r\n7.1.5 强制关系 108\r\n7.1.6 可选关系 109\r\n7.2 设计过程中对实体的转换 109\r\n7.3 用户如何访问数据 110\r\n7.3.1 避免拙劣的关系结构 112\r\n7.3.2 理解关系和表的连接 112\r\n7.4 小结 118\r\n第8章 规范化:消除冗余数据 120\r\n8.1 规范化概览 120\r\n8.1.1 规范化的优点 122\r\n8.1.2 规范化的缺点 123\r\n8.2 范式概览 123\r\n8.2.1 第一范式:码 124\r\n8.2.2 第二范式:全部码 125\r\n8.2.3 第三范式:仅仅是码 126\r\n8.2.4 Boyce-Codd范式 127\r\n8.2.5 第四范式 127\r\n8.2.6 第五范式 128\r\n8.3 反规范化 128\r\n8.4 规范化示例1 130\r\n8.5 规范化示例2 132\r\n8.6 自检测规范化 135\r\n8.7 小结 136\r\n第9章 实体联系模型 138\r\n9.1 商务实体的逻辑模型 139\r\n9.2 在ERD中构造实体 139\r\n9.3 定义实体联系 140\r\n9.3.1 查看是否存在联系 141\r\n9.3.2 确定联系的动词 142\r\n9.3.3 确定联系的可选性 142\r\n9.3.4 确定联系的种类 143\r\n9.3.5 验证联系 145\r\n9.4 定义实体的属性 147\r\n9.5 如何使用ERD 150\r\n9.6 典型的ERD符号 151\r\n9.7 TrainTech示例公司的ERD 152\r\n9.8 小结 153\r\n第10章 业务处理建模 154\r\n10.1 业务处理是如何影响数据库设计的 154\r\n10.2 定义业务处理 155\r\n10.3 处理模型概览 156\r\n10.3.1 处理模型 157\r\n10.3.2 功能层次模型 158\r\n10.3.3 数据流图 159\r\n10.4 我们能从处理模型中得到什么 161\r\n10.5 典型的处理模型符号 161\r\n10.6 在数据库设计中使用处理模型 162\r\n10.7 TrainTech公司的处理模型 163\r\n10.8 小结 167\r\n第三篇 数据库设计\r\n第11章 设计关系表 169\r\n11.1 表的类型 170\r\n11.1.1 数据表 170\r\n11.1.2 连接表 171\r\n11.1.3 子表 173\r\n11.1.4 校验表 173\r\n11.2 表的基本结构 174\r\n11.3 定义表 175\r\n11.3.1 命名规则的回顾 177\r\n11.3.2 创建表列表 178\r\n11.4 确定列规范 178\r\n11.4.1 常规层 179\r\n11.4.2 物理层 179\r\n11.4.3 逻辑层 180\r\n11.4.4 建立列的列表 180\r\n11.5 设计表需要考虑的因素 183\r\n11.5.1 表设计中的引用完整性 184\r\n11.5.2 表设计中逻辑模型的重要性 185\r\n11.5.3 物理设计过程的反规范化处理 185\r\n11.6 存储考虑 186\r\n11.6.1 表空间的增加和调整 187\r\n11.6.2 表大小的增加和监控 187\r\n11.6.3 视图和复制 188\r\n11.6.4 RAID 188\r\n11.7 表的所有者 189\r\n11.8 表设计的例子—TrainTech 190\r\n11.9 小结 194\r\n第12章 业务规则和数据完整性的结合 196\r\n12.1 业务规则如何影响数据库 196\r\n12.1.1 主码约束在SQL中的使用 198\r\n12.1.2 外码约束在SQL中的使用 199\r\n12.1.3 唯一性约束在SQL中的使用 200\r\n12.1.4 检查约束在SQL中的使用 201\r\n12.2 从逻辑模型中抽取业务规则 201\r\n12.3 数据的本性 202\r\n12.3.1 数据的数据类型 202\r\n12.3.2 数据的唯一性 203\r\n12.3.3 数据的大小写 203\r\n12.3.4 数据的引用 204\r\n12.4 维护历史数据 204\r\n12.5 增强业务规则 205\r\n12.5.1 使用触发器增强业务规则 206\r\n12.5.2 使用确认表来增强业务规则 206\r\n12.6 在N-层级上集成业务规则 207\r\n12.7 使用AD工具产生约束 208\r\n12.8 TrainTech示例公司的集成约束 209\r\n12.9 小结 212\r\n第13章 设计视图 214\r\n13.1 视图概览 214\r\n13.2 为什么要使用视图 216\r\n13.2.1 数据总结 216\r\n13.2.2 过滤数据 218\r\n13.2.3 数据库安全性 219\r\n13.2.4 数据转换 220\r\n13.2.5 数据分割 221\r\n13.3 视图性能以及其他的考虑 224\r\n13.3.1 视图定义中的连接操作 225\r\n13.3.2 视图限制 227\r\n13.4 视图联系 227\r\n13.5 管理视图 228\r\n13.6 避免设计拙劣的视图 229\r\n13.7 定义TrainTech公司的视图 230\r\n13.8 小结 231\r\n第14章 数据库设计概念的应用 232\r\n14.1 数据库设计实例研究 233\r\n14.2 分析反馈信息 235\r\n14.2.1 杂货店员工的分类 235\r\n14.2.2 数据需求的分析 236\r\n14.3 任务描述和设计目标的确定 236\r\n14.3.1 定义部门单位 237\r\n14.3.2 定义数据 237\r\n14.3.3 定义处理过程 238\r\n14.4 开始数据库设计 241\r\n14.4.1 构造ERD图 242\r\n14.4.2 构造处理模型 249\r\n14.4.3 定义表 251\r\n14.4.4 定义约束 258\r\n14.4.5 定义视图 259\r\n14.5 小结 260\r\n第四篇 设计之后的工作\r\n第15章 实现数据库安全 261\r\n15.1 安全性对数据库设计的重要性 261\r\n15.2 谁需要访问数据库 262\r\n15.2.1 访问级别 263\r\n15.2.2 权限 264\r\n15.2.3 角色 266\r\n15.3 谁管理安全性 267\r\n15.3.1 系统级管理 268\r\n15.3.2 数据库级管理 268\r\n15.3.3 应用程序级管理 270\r\n15.4 使用视图和存储过程来增强安全性 271\r\n15.5 设计安全管理系统 272\r\n15.6 采取其他的预防措施 272\r\n15.6.1 网络安全性 272\r\n15.6.2 网络防火墙 273\r\n15.6.3 加密套接字协议层 273\r\n15.7 安全性中的漏洞 273\r\n15.8 小结 274\r\n第16章 更改控制 276\r\n16.1 在数据库设计中更改控制的必要性 276\r\n16.1.1 因业务需要而更改 277\r\n16.1.2 因系统需要而更改 277\r\n16.1.3 提高数据完整性 278\r\n16.1.4 实现敏感数据的安全性 278\r\n16.1.5 基于需求的测试 278\r\n16.1.6 改进文档的一致性 278\r\n16.1.7 改进系统性能 278\r\n16.2 更改控制的形式化方法 279\r\n16.2.1 版本控制 280\r\n16.2.2 改变优先级 281\r\n16.2.3 跟踪更改需求 281\r\n16.3 更改控制的参与者 281\r\n16.4 更改过程的实现 281\r\n16.5 传播更改的基本指南 284\r\n16.6 考虑使用自动化的配置管理工具 286\r\n16.7 小结 287\r\n第17章 过时数据库的分析和重设计 288\r\n17.1 过时数据库概览 288\r\n17.2 值得重新设计吗 289\r\n17.2.1 用技术跟上当前的发展 290\r\n17.2.2 硬件和软件需求 290\r\n17.2.3 成本 291\r\n17.2.4 业务中断 292\r\n17.2.5 培训的考虑 292\r\n17.2.6 性能问题 292\r\n17.3 对现存数据库的评价 293\r\n17.4 业务处理二次工程的结果 294\r\n17.5 设计新系统 295\r\n17.5.1 要使用的数据库设计方法 295\r\n17.5.2 要使用的数据库软件 295\r\n17.5.3 重新设计数据结构 296\r\n17.5.4 移植遗留数据 296\r\n17.6 遗留数据转换的例子 297\r\n17.7 文档 298\r\n17.8 新数据库的未来 298\r\n17.9 小结 299\r\n附 录\r\n附录A 物理数据库实现示例 301\r\n附录B 流行的数据库设计工具 314\r\n附录C 有关数据库设计问题 315\r\n附录D 数据库设计示例 323\r\n附录E 表大小的考虑 332 \r\n
\r\n
计算机技术的发展是一个不断创新的过程, 没有任何一种技术的发展速度能够赶上计算机技术的发展. 而近几年, 数据库技术是计算机科学技术发展最快的领域之一, 同时也是应用最广泛的技术之一, 在信息管理自动化程度日益提高的今天, 数据库技术的应用领域也渗透到了我们工作和生活中的每一个方面.
本书是一本讲授数据库设计方法和技术的图书, 本书的作者都从事过多年的数据库方面的技术工作, 具有丰富的数据库设计和使用经验, 曾出版过多部数据库方面的著作. 虽然现在已经有许多关于数据库设计方面的书籍, 但相当一部分书籍所介绍的技术都已经落后或理论偏多而与实际使用情况脱节, 而且相当的书籍都没有介绍在实际数据库设计中很关键的概念, 有些书只是泛泛地介绍了数据库的一般概念. 正是由于这些原因, 我们翻译了这本书, 由于作者具有很丰富的数据库设计. 开发和使用经验, 因此他们所写书籍的内容都是开发人员在设计数据库时必须要面临和使用的非常实用的技术. 这本书涵盖了以往书籍所忽略的特性, 并包含了关系数据库不断发展的新特性.
本书共由四篇和五个附录组成. 第一篇“数据库设计概述”主要介绍了数据库的基本原理. 常用的数据库模型. 数据库设计方法和数据库生命周期, 第二篇“业务需求分析和建模”介绍了如何获取业务需求. 如何根据这些需求建立业务模型. 如何生成用户和开发人员易于交流的ERD以及减少冗余数据的方法, 第三篇“数据库设计”介绍了如何将已建好的业务模型转换成关系数据库模型的表. 如何保证数据的完整性以及如何设计视图, 第四篇“设计之后的工作”介绍了一般数据库书籍经常忽略的问题:数据库的安全. 实现数据库后的更改需求以及对过时数据库的处理. 附录部分包含了一些数据库设计的实例以及一些流行的数据库设计工具等.
本书的最大特点就是所讲授的概念与实例紧密结合, 图文并茂, 帮助读者更好地领会数据库设计的精髓, 相信读者学完本书之后一定会对数据库设计有一个比较清楚的认识, 如果在实践当中能有意识地运用这些方法, 一定会获益匪浅. 本书非常适合于具有一定的数据库基础, 但在数据库设计中又感觉不知如何下手的人士使用, 它可以作为学习完数据库基础理论知识的学生的后续学习内容, 也可作为数据库设计和开发人员的指南.
本书主要由何玉洁. 武欣. 邓一凡翻译, 具体翻译情况为:第1. 2. 3. 4. 5. 6. 7章由武欣负责翻译, 第8. 9. 10. 11章由邓一凡负责翻译, 第12. 13. 14. 15. 16. 17及附录部分由何玉洁负责翻译. 全书由何玉洁负责审校. 参加本书翻译的还有:陈正林. 迟育强. 耿胜华. 李迎等. 由于译者水平有限, 翻译不当之处, 恳请读者批评指正.
译 者
2001年3月
1. 关于作者
Ryan K.Stephens 是美国印地安纳州首府—Indianapolis印第安纳波利斯的Perpetual技术公司的董事长和CEO.
该公司主要从事Oracle数据库技术咨询和培训.
同时, Stephens先生还在印地安纳州的Indiana University-Purdue University, 以及在国防部和印地安纳中部商业区的一些公司中从事Oracle教学工作.
Stephens先生是一位经验丰富的Oracle数据库管理员, 他拥有10多年的Oracle数据库管理和开发经验.
Stephens先生还参与了Sams出版社出版的诸多书籍的编写工作, 其中包括:《Sams Teach Yourself SQL in 21 Days》(第2.
第3版).
无封面