第Ⅰ部分 数据库和数据库设计介绍
第1章 有效数据库设计的目标
1.1 理解数据库设计的重要性
1.2 信息容器
1.3 信息容器的优缺点
1.4 理想的数据库特性
1.4.1 CRUD
1.4.2 检索
1.4.3 一致性
1.4.4 有效性(验证)
1.4.5 轻松的纠错
1.4.6 速度
1.4.7 原子事务处理
1.4.8 ACID
1.4.9 持久性和备份
1.4.10 低成本和可扩充性
1.4.11 易用性
1.4.12 便携性
1.4.13 安全性
1.4.14 共享
1.4.15 执行复杂计算的能力
1.4.16 良好设计和拙劣设计对应的结果
1.5 本章小结
1.6 练习
第2章 数据库类型
2.1 为何多此一举
2.2 平面文件
2.2.1 INI文件
2.2.2 Windows系统注册表
2.3 关系数据库
2.4 电子数据表
2.5 分级数据库
2.6 XML
2.6.1 XML基础知识
2.6.2 XML结构
2.6.3 XML小结
2.7 网络
2.8 对象
2.9 对象关系
2.10 特殊类型的数据库
2.10.1 面向文档的数据库
2.10.2 演绎数据库
2.10.3 维度(或空间)数据库
2.10.4 时态数据库
2.11 本章小结
2.12 练习
第3章 关系数据库基础知识
3.1 关系视角
3.2 表、行和列
3.3 关系、属性和元组
3.4 键
3.5 索引
3.6 约束
3.6.1 基本约束
3.6.2 检查约束
3.6.3 主键约束
3.6.4.唯一(性)约束
3.6.5 外键约束
3.7 数据库操作
3.8 本章小结
3.9 练习
第Ⅱ部分 数据库设计过程和技术
第4章 了解用户需求
4.1 制定计划
4.2 拿出一个问题清单
4.2.1 功能
4.2.2 数据需求
4.2.3 数据完整性
4.2.4 安全性
4.2.5 环境
4.3 与客户会面
4.4 了解重要人物
4.5 向客户请教
4.6 设身处地为用户着想
4.7 调研现行业务
4.8 集体讨论
4.9 考虑未来
4.10 搞清客户的思维过程
4.11 了解客户真正的需求
4.12 区分优先次序
4.13 证实了解的情况
4.14 撰写需求文档
4.15 编制用例
4.16 确定可行性
4.17 本章小结
4.18 练习
第5章 将用户需求转换成数据模型
5.1 数据模型的概念
5.2 用户界面模型
5.3 语义对象模型
5.3.1 类和对象
5.3.2 基数
5.3.3 标识符
5.3.4 合在一起
5.3.5 语义视图
5.3.6 类的类型
5.3.7 评论与注释
5.4 实体关系模型
5.4.1 实体、属性和标识符
5.4.2 关系
5.4.3 基数
5.4.4 继承
5.4.5 补充约定
5.4.6 评论和注释
5.5 关系模型
5.5.1 转换语义对象模型
5.5.2 转换ER图
5.6 本章小结
5.7 练习
第6章 提取业务规则
6.1 业务规则的概念
6.2 识别重要的业务规则
6.3 提取重要的业务规则
6.4 多层应用程序
6.5 本章小结
6.6 练习
第7章 规范化数据
7.1 规范化的概念
7.2 第一范式(INF)
7.3 第二范式(2NF)
7.4 第三范式(3NF)
7.5 止步于第三范式
7.6 Boyce.Codd范式(BCNF)
7.7 第四范式(4NF)
7.8 第五范式(5NF)
7.9 域/键范式(DKNF)
7.10 必要的冗余
7.11 最佳的规范化级别
7.12 本章小结
7.13 练习
第8章 设计数据库以支持软件应用程序
8.1 提前规划
8.2 将所有事项记录在案
8.3 考虑多层体系结构
8.4 将域转换成表
8.5 重视表
8.6 使用三种表
8.7 使用命名约定
8.8 允许冗余数据
8.9 不要包罗万象
8.10 本章小结
8.11 练习
第9章 常见的设计模式
9.1 关联
9.1.1 多对多关联
9.1.2 多个多对多关联
9.1.3 多对象关联
9.1.4 重复的属性关联
9.1.5 自反关联
9.2 时间数据
9.2.1 有效日期
9.2.2 被删除的对象
9.2.3 时效化部分数据
9.3 事件记录和锁定
9.3.1 审计跟踪
9.3.2 全程记录
9.4 本章小结
9.5 练习
第10章 常见的设计陷阱
10.1 缺乏准备
10.2 拙劣的文档编制
10.3 拙劣的命名标准
10.4 欠缺思考
10.5 没有考虑变化
10.6 规范化泛滥
10.7 规范化不足
10.8 测试不够
10.9 过分担忧性能
10.10 把表混杂在一起
10.11 不强制执行约束
10.12 对ID感到困扰
10.13 没有定义自然键
10.14 本章小结
10.15 练习
第Ⅲ部分 详尽的案例分析
第11章 用户需要和要求
11.1 满足客户需求
11.2 了解客户的想法
11.2.1 确定系统应该实现的功能
11.2.2 确定项目应该呈现的样式
11.2.3 确定用户界面需要的数据
11.2.4 确定数据的来源
11.2.5 确定数据段关联的方式
11.2.6 决定性能需求
11.2.7 确定安全需求
11.2.8 确定数据完整性要求
1l.3 编写用例
11.4 编写需求文档
11.5 要求反馈
11.6 本章小结
11.7 练习
第12章 构建数据模型
12.1 语义对象模型
12.1.1 构建初始的语义对象模型
12.1.2 改进语义对象模型
12.2 实体关系建模
12.2.1 构建ER图
12.2.2 构建组合ER图
12.2.3 改进实体关系图
12.3 关系建模
12.4 将所有关系整合在一起
12.5 本章小结
12.6 练习
第13章 提取业务规则
13.1 识别业务规则
13.1.1 Courses
13.1.2 CustomerCourses
13.1.3 Customers
13.1.4 Pets
13.1.5 Employees
13.1.6 Orders
13.1.7 Orderltems
13.1.8 Inventoryltems
13.1.9 TimeEntries
13.1.10 Shifts
13.1.11 Persons
13.1.12 Phones
13.1.13 Vendors
13.2 绘制新的关系模型
13.3 本章小结
13.4 练习
第14章 规范化和优化
14.1 提高灵活性
14.2 验证第一范式
14.3 验证第二范式
14.3.1 Pets
14.3.2 TimeEntries
14.4 验证第三范式
14.5 本章小结
14.6 练习
第Ⅳ部分 实现数据库(以Access和MySQL中的示例为例讲解)
第15章 MIcrosolftAccess
15.1 了解Access
15.2 启动Access
15.3 定义关系
15.4 创建字段约束
15.5 创建表约束
15.6 创建查询
15.6.1 查询设计视图
15.6.2 SQL视图
15.7 本章小结
15.8 练习
第16章 MySQL
16.1 安装MySQL
16.2 使用MySQL命令行客户端
16.3 执行SQL脚本
16.4 使用MySQL QueryBrowser
16.4.1 执行查询
16.4.2 编辑数据
16.4.3 创建并修改数据库
16.4.4 使用脚本
16.4.5 获取语法帮助
16.5 使用MySQL workbench
16.5.1 加载脚本
16.5.2 创建EER图
16.5.3 编辑数据库
16.5.4 定义触发器
16.5.5 导出脚本
16.6 本章小结
16.7 练习
第V部分 高级主题
第17章 SQL简介
17.1 背景介绍
17.2 获取更多的信息
17.3 标准
17.4 基本的语法
17.5 命令概述
17.6 CREATETABLE
17.7 CREATEINDEX
17.8 DROP
17.9 INSERT
17.10 SELECT
17.10.1 SELECT子句
17.10.2 FROM子句
17.10.3 WHERE子句
17.10.4 GROUPBY子句
17.10.5 ORDERBY子句
17.11 UPDATE子句
17.12 DELETE语句
17.13 本章小结
17.14 练习
第18章 使用SQL脚本来构建数据库
18.1 使用脚本的原因
18.2 脚本分类
18.2.1 数据库创建脚本
18.2.2 基本的初始化脚本
18.2.3 数据初始化脚本
18.2.4 清理脚本
18.2.5 保存脚本
18.3 整理SQL命令的次序
18.4 本章小结
18.5 练习
第19章 数据库维护
19.1 备份
19.2 数据仓库
19.3 修复数据库
19.4 压缩数据库
19.5 性能调整
19.6 本章小结
19.7 练习
第20章 数据库安全
20.1 适当的安全性级别
20.2 口令
20.2.1 单口令数据库
20.2.2 个人口令
20.2.3 操作系统口令
20.2.4 好的口令
20.3 权限
20.4 初始的配置和权限
20.5 过多的安全性
20.6 物理安全
20.7 本章小结
20.8 练习
附录A 练习题答案
附录B 数据库设计样例
术语表