在编写任何代码前,进行完美的数据库设计能大大节省你的开发时间。本书是一本介绍关系数据库设计的通俗易懂、独立于系统平台的指南,汇集了作者在数据库教学方面的多年经验。
数据库设计专家Michael J.Hernandez深入浅出地介绍了设计原理和方法的核心概念,他没有使用任何技术性的术语。本书通过循序渐进的方法和丰富的实例,为所有开发人员提供了一种通用的开发实际数据库的方法。
关于作者
序言
前言与致谢
本书介绍
第一部分 关系数据库设计
第1章 何谓关系数据库
1.1 数据库的类型
1.2 早期的数据库模型
1.3 关系数据库模型:历史简介
1.4 关系数据库管理系统
1.5 小结
第2章 设计目标
2.1 为什么应该参与数据库的设计
2.2 理论的重要性
2.3 学习好的设计方法有哪些益处
2.4 良好设计的目标
2.5 良好设计的优点
2.6 数据库设计方法
2.7 小结
第3章 术语
3.1 术语为什么重要
3.2 与数值相关的术语
3.3 与结构相关的术语
3.4 与关系相关的术语
3.5 与完整性相关的术语
3.6 小结
第二部分 设计过程
第4章 数据库设计概述
4.1 完成整个设计过程的重要性
4.2 定义一个任务综述和任务目标
4.3 分析当前的数据库
4.4 创建数据结构
4.5 确定和建立表关系
4.6 确定和定义业务规则
4.7 确定和创建视图
4.8 审查数据完整性
4.9 小结
第5章 启动数据库的设计过程
5.1 主持面谈
5.2 案例研究:迈克自行车店数据库
5.3 定义任务综述
5.4 定义任务目标
5.5 编写任务目标
5.6 小结
第6章 分析当前的数据库
6.1 开始认识当前的数据库
6.2 开展对当前数据库的分析
6.3 研究数据是怎样被收集的
6.4 研究信息是怎样被表示的
6.5 主持面谈
6.6 主持与用户的面谈
6.7 主持与管理人员的面谈
6.8 编辑一个完整的字段列表
6.9 案例研究
6.10 小结
第7章 创建表结构
7.1 定义初表清单
7.2 定义终表清单
7.3 使字段与每个表关联
7.4 改进字段
7.5 改进表结构
7.6 案例研究
7.7 小结
第8章 键
8.1 为什么键很重要
8.2 为每个表建立键
8.3 评审最初的表结构
8.4 案例研究
8.5 小结
第9章 字段规范
9.1 字段规范为什么很重要
9.2 字段级完整性
9.3 剖析一个字段规范
9.4 为数据库中的每个字段定义字段规范
9.5 案例研究
9.6 小结
第10章 表关系
10.1 关系的类型
10.2 识别现有的关系
10.3 建立所有的关系
10.4 建立关系特征
10.5 关系级完整性
10.6 案例研究
10.7 小结
第11章 业务规则
11.1 何谓业务规则
11.2 定义和创建业务规则
11.3 验证表
11.4 评审业务规则规范的清单
11.5 案例研究
11.6 小结
第12章 视图
12.1 何谓视图
12.2 剖析一个视图
12.3 定义和创建视图
12.4 案例研究
12.5 小结
第13章 评审数据完整性
13.1 为什么要评审数据完整性
13.2 评审和改进数据完整性
13.3 汇集数据库文档
13.4 案例研究——综合
13.5 小结
第三部分 其他的数据库设计问题
第14章 拙劣的设计——不要做什么
14.1 二维文件设计
14.2 电子表格设计
14.3 从电子表格的角度处理数据
14.4 基于数据库软件的数据库设计
14.5 最后一点儿想法
14.6 小结
第15章 变通或打破规则
15.1 何时可以变通或打破规则
15.2 记录采取的行动
15.3 小结
结束语
附录A 推荐读物
附录B 示例设计
附录C 图表符号
附录D 文档格式
参考文献
如果全能的上帝在造物之前咨询我的话, 我会建议更简单的方法.
——Alfonso X, 卡斯蒂利亚一莱昂国王
创建数据库如同创造世界, 只不过更麻烦一些.
至少上帝造物之后, 没有一个人准备抱怨.
——Michel J.Hernadez
一切都起始于一个简单的问题:“怎样适当地设计一个数据库?”
这个问题驱使我踏上了一段有趣的旅程——寻找可以提供该问题答案的某个人或某本书. 在这个旅程中, 我到过很多书店, 接触过许多有趣的人们. 阅读了关于该主题的各种书籍, 从完全不能理解的到内容单薄缺乏份量的, 还与大众广泛交谈, 包括那些与我一样的人们和那些真正了解自己能力的人. 我有幸能以后一种类型的少数几个人为师, 从他们身上学到大量的知识.
写书又是另外一回事了. 当我意识到当前关于数据库设计方面的书都不是写给类似我这样的人那一瞬间, 便涌现了著书的念头. 这些书的作者统统把读者定位于那些具有数学专业背景. 计算机科学学位并在计算机界工作过一段时间的人, 为其他人则考虑得较少. 少数试图将内容“简单化”的书又不能发挥有效的讲授作用, 这通常是因为作者认定读者头脑简单.
我深信应该给没有高级专业教育背景的大众贡献这样一本书:简单而易于阅读, 内容全面但不乏味, 使用相对容易理解的示例. 于是我写了专门一个关于数据库设计基础的报告交给本地一名出版商, 结果取得了成功. 受此鼓舞, 我决定有一天要写一本关于关系数据库设计完整过程的书.
在前述那个旅程的早期, 我就成为一名成功的数据库开发人员和教师. 曾经为各种不同的组织和企业开发数据库, 并乐于指导大众如何使用各式各样的数据库软件程序. 在这些过程中, 我始终胸怀志向.
那是在1995年华盛顿西雅图的数据库高级会议上, 我遇到了Kathleen Tibbetts, 她是Addison Welsey Longman出版社的一名Developers Press编辑. 就在那时, 我的旅程发生了一次积极的转变. 她在寻找有故事的人谈话, 而我正是这样的人. Kathleen非常耐心地听了我的经历, 她认为把我了解的关于数据库设计方面的所有知识撰写成书, 将是继续实现我的目标的好机会.
你手上所持的这本书就是那个特殊经历的结晶. 我将自己积累的知识发展成一种我认为既清晰又简洁的数据库设计方法. 尽量使每个人都可以接受, 不管他们先前的经历如何. 我寻求一种与众不同的表达方式, 它将比传统的设计方法容易学习和理解, 却能获得相同的效果.
关于数据库设计的学习是一个无止境的过程. 我总是不断学习更多关于设计的复杂之处和细微差别, 你也要这样. 与其说数据库设计是一门精湛的科学, 不如说它是一种艺术, 直觉和纯粹的理论与技术一样重要. 它还涉及通信技术和从长远与短期看问题的能力. 一旦你真正入门, 数据库设计将是一门有趣的学科.
我发现写书需要大家的协同努力. 我总是离不开编辑. 我的同事. 朋友和家人的帮助. 正是他们鼓励我, 使我倾心于本书的创作. 没有他们的支持, 这本书可能不会这么早问世.
首先要感谢Addison Welsey Longman出版社的Kathleen Tibbetts对我坚定的支持, 并提供我写这本书的机会. 她和我一样对此书充满热情. 我期待与她进一步合作.
接着向我的好友. 同事和技术编辑JimBooth致以深深的谢意. 我很钦佩lim在数据库设计方面的知识, 他的评论非常有价值. 一旦本书投放市场, 我们两个将要庆祝一番.
还要感谢我的同事兼好友Christopher R. Weber. 尽管Chris有着紧张的咨询和演讲安排, 他还是阅读了本书大量的章节, 并提出了宝贵的意见. 现在, 如果我们能找点儿时间坐下来讨论音乐了……(我们都是音乐家. )
我要感谢那些把他们的经验和知识与我共享, 并对我在数据库管理方面的职业生涯起着积极影响的人们:Karen Watterson. Mike Johnson. Karl Fischer. Paul Litwin. John Viescas. Ken Getz和Gregory Piercy. 感谢他们所有的人.
向我亲爱的朋友. 导师Alastair Black表示最真挚. 最深切的感激. 他不但亲切阅读了本书的全部内容, 他与妻子Julia还欢迎我到他们家去, 并把我看成自家人. 他对本书付出了难以衡量和无价的帮助. 在过去的这几个月里, 我所学到的关于写作的技巧, 要比我职业生涯或生活中的任何时候都多.
最后同样感谢我的妻子Kendra. 每位已婚的作者都明白, 在整个写作过程中, 自己的另一半付出了多少的耐心. 兴趣与容忍. 但是Kendra嘱咐我不要张扬, 因为她极力反对在公众面前表露情感, 无论是在人群里还是在出版物中. 所以我惟一要说的是:感谢Ked. 现在我们可以恢复正常生活了.