本书通过联系大量实际应用,一方面将关系数据库的基本理论贯穿其中,另一方面又融入作者十几年工作实践提炼出的实用经验和技巧,把什么是数据建模以及怎样建立高质量的数据模型全面生动地展现在读者面前。全书包括3个部分和1个术语表。第一部分讲述了数据建模的理论基础及其方法论,其中包括基本的关系理论以及模型分析的类型和层次。第二部分通过构造一个数据模型实例详尽地描述了在实际工作中如何应用这些理论和方法,其中包括事务系统中的概念、逻辑、物理3阶段建模以及数据仓库系统中的多维建模。第三部分讲述了建模人员怎样为开发组增加价值。附录中给出了书中所涉及的专业术语及其解释。
本书不要求读者具有关系建模的预备知识或实际编程经验。适合于希望在关系数据建模上获得实用技术指导的数据库设计人员、开发人员和DBA等。
第1章数据建模介绍
1.1什么是数据
1.2什么是数据建模
1.3数据的生命周期
1.4数据建模对我们有哪些好处
1.5谁是数据建模者
1.6定义角色
1.7数据建模者的开发章程
1.8职称
1.9As-Is支持
1.9.1配置管理支持
1.9.2提供影响分析
1.9.3提议IT标准
1.9.4提供数据完整性评估
1.9.5调查现有技术和工具
1.10To-Be支持
1.10.1设计新的数据结构
1.10.2提供专家建议
1.10.3提供可供选择的办法
1.10.4提供预期评估
1.10.5调查新的技术和工具
1.11小结
第2章关系建模
2.1数据库模型
2.1.1分层DBMS
2.1.2网络DBMS
2.1.3关系DBMS
2.2概念建模与逻辑建模的概念
2.2.1实体
2.2.2类别实体
2.2.3联接实体或交叉实体
2.2.4属性
2.2.5键
2.2.6关系
2.2.7关系模型业务规则
2.3物理建模概念
2.3.1表
2.3.2视图
2.3.3列
2.3.4约束
2.4建模语法
2.4.1集成定义符号(1DEFlX)
2.4.2框
2.4.3线
2.4.4终止符
2.4.5实体-关系(ER)图或Chen示意图
2.4.6信息工程(1/E)
2.4.7Barker表示
2.5小结
第3章关系理论简介
3。1关系数据建模
3.1.1关系理论的起源
3.1.2关系DBMS目标
3.2Codd的RDBMS规则
3.3规范化
3.3.1关系通用性质
3.3.2第——范式(1NF)
3.3.3第二范式(2NF)
3.3.4第三范式(3NF)
3.3.5Boyce/Codd范式
3.4反规范化
3.4.1派生列
3.4.2故意重复
3.4.3故意删除或禁用约束
3.4.4对范式的故意撤销
3.5小结
第4章分析级别
4.1模型开发
4.1.1不是流程图
4.1.2数据关系规则
4.2概念分析
4.2.1概念模型中的实体
4.2.2概念模型中的关系
4.2.3概念模型示例
4.3逻辑分析
4.3.1逻辑模型中的实体
4.3.2属性
4.3.3逻辑分析示例
4.4物理分析
4.4.1表
4.4.2物理分析示例
4.5逆向工程分析
4.6详细分析
4.6.1实体级
4.6.2基于键(KB)
4.6.3全属性(PA)
4.7小结
第5章项目中的数据模型
5.1项目
5.1.1项目管理
5.1.2项目的生命周期
5.2项目类型
5.2.1企业项目
5.2.2事务项目——OLTP
5.2.3数据仓库——企业报表
5.2.4项目类型比较
5.3模型目标
5.3.]抽象模型
5.3.2数据元素分析模型
5.3.3物理设计模型
5.4选择正确的模型
5.4.1项目类型
5.4.2模型目标
5.4.3客户需求
5.4.4建模技巧
5.5小结
第6章创建概念模型
6.1业务建模
6.2目标
6.3目标范围
6.4方法
6.4.1自顶向下
6.4.2自底向上
6.5记录流程规则:自顶向下
6.5.1Solitaire纸牌游戏中的活动
6.5.2Solitaire纸牌游戏的流程步骤
6.5.3建立活动描述
6.5.4标出重要的元素
6.5.5定义元素
6.5.6验证我们的工作
6.5.7综合为概念
6.6记录流程规则:自底向上
6.6.1记录活动规则
6.6.2建立规则描述
6.6.3标出重要元素
6.6.4定义元素
6.6.5两种方法的比较
6.7建立概念模型
6.7.1优化概念定义
6.7.2加入关系
6.8检查业务规则
6.8.1检查关系
6.8.2发布模型
6.9小结
第7章创建逻辑模型
7.1概念模型——指南
7.1.1确认模型
7.1.2使用反馈
7.1.3主题领域的范围
7.2逻辑数据建模
7.3对Card主题领域进行建模
7.3.1Card实体分析
7.3.2Card类别分析
7.3.3Card联系
7.3.4Card实体的详细内容
7.3.5Deck和BackDesign分析
7.3.6影子实体
7.4对“CardMovement”主题领域进行建模
7.4.1CardMovement实体分析
7.4.2Movement实体的细节
7.5对“Event'主题领域建模
7.5.1Event实体分析
7.5.2Event联系
7.6全图
7.7质量保证检查
7.7.1范式一从第一范式到BC范式
7.7.2过多/过少的属性
7.7.3多余的关系
7.7.4正确的角色名称
7.7.5实例表
7.7.6相关专业领域专家
7.7.7对等模型
7.7.8最后的工作
7.8小结
第8章逻辑到物理的转换
8.1项目状态
8.2逻辑到物理
8.3逻辑名到物理名
8.4从类别中创建表
8.4.1只留父类表
8.4.2只留子类表
8.4.3可扩展类别
8.4.4Solitaire纸牌游戏实例
8.5检查影子实体
8.6确定主键
8.6.1复查主键
8.6.2加入数据类型和数据大小
8.7质量检查和额外的字段/表
8.7.1实例化表
8.7.2命名和定义
8.7.3复核需求
8.7.4讲故事
8.7.5确定数据管理员
8.7.6建立测试DDL
8.8其他潜在的问题
8.8.1增加操作表
8.8.2数据量资料
8.8.3活跃度资料
8.8.4模型功能
8.9小结
第9章直接设计物理模型
9.1现实的限制
9.2从哪里开始
9.3Solitaire调查系统
.9.3.1对见到的数据建模
9.3.2应用命名标准
9.3.3建立查找表
9.3.4继续寻找重要的数据集
9.3.5检查文本字段
9.3.6继续物理化
9.3.7质量和折衷
9.4更具挑战性的任务
9.4.1数据元素的分类
9.4.2文本字段
9.5其他的物理表
9.5.1操作型表
9.5.2数据转移表
9.5.3档案表
9.6小结
第10章多维数据建模
10.1多维模型基础
10.1.1多维设计的优点
10.1.2星型模式
10.1.3雪片模型
10.1.4Solitaire纸牌游戏总体模型
10.1.5目标事实
10.1.6Game数据集市
10.1.7GameMove数据集市
10.1.8完成
10.2小结
第11章逆向工程设计数据模型
11.1从哪里开始
11,2数据结构分析
11.2.1模型工具支持
11.2.2手动过程
11.2.3结构评估
11.3数据分析
11.3.1SELECTCOUNT
11.3.2SELECTCOUNT/GROUPBY
11.3.3SELECTCOUNTDISTINCT
11.3.4SELECTMm
11.3.5SELECTMAX
11.3.6SELECT
11.3.7数据评估
11.3.8代码中的数据规则
11.4前端分析
11.4.1界面标签
11.4.2数据关系界面规则
11.4.3派生值
11.5历史性的/描述性的
11,6加注释
11.7创建一个逻辑模型
11.7,1命名
11.7.2键
11.7.3类别
11.7.4其他规则
11.7.5关系命名
11.8完成
11.9小结
第12章模型沟通
12.1为什么要增加更多的元素
12.2元素排列
12.3附加文本
12.3.1名称和题目
12.3.2版本符号
12.3.3注释
12.3.4图例
12.4视觉增强
12.4.1图形/图像/图标
12.4.2其他可选
12.5发布
12.5.1半存取和公开存取——Web
12.5.2开发文件存取
12.5.3归档文件存取——文档库
12.6小结
第13章进一步数据分析
13.1数据质量方面
13.1.1逼真度分析
13.1.2关键度分析
13.1.3敏感性和保密性分析
13.1.4管理工作(Stewardship)
13.1.5横向核对
13.1.6流程确认
13.1.7风险及降低风险分析
13.2数据模型作为一个知识架构
13.3小结
第14章元数据建模
14.1定义元数据
14.1.1技术元数据
14.1.2业务元数据
14.1.3实时元数据
14.2元数据的重要性
14.3一个元数据模型
14.3.1概念元数据模型
14.3.2逻辑元数据模型
14.3.3物理元数据模型
14.4建模人员与元数据
14.4.1建模人员——元数据贡献者
14.4.2建模人员——元数据消费者
14.5元数据建模的未来
14.6小结
第15章数据建模工作习惯
15.1最坏的习惯
15.2团队模块化策略
15.2.1傲慢
15.2.2不愿妥协
15.2.3沟通困难
15.2.4固步自封
15.2.5回避问题
15.2.6伪君子行为
15.2.7说话做事欠考虑
15.2.8经常批评别人
15.2.9语言不够通俗易懂
15.2.10缺乏主动性
15。3延迟进度
15.3.1陷入分析麻痹
15.3.2从不开展交流
15.3.3一次一个任务
15.3.4从不承认您错了
15.4模型管理不善
15.5最好的习惯
15.5.1听取同事的意见
15.5.2适当妥协
15.5.3共享资料
15.5.4善于接受
15.5.5准时
15.5.6透明
15.5.7尊重别人
15.5.8有效地沟通和交流
15.5.9自我激励
15.6固守时间表
15.6.1Pareto规则
15.6.2收益递减法则(ThelawofDiminshing)
15.6.3处理预期的事物
15.6.4利用您的主动性
15.6.5寻求帮助
15.6.6模型管理
15.7理解数据和设计
15.7.1逻辑到物理的转换
15.7.2关于物理数据的谬论
15.8项目教训
15.8.1用户定制解决方案项目
15.8.2值得密切注意的短语
15.8.3购买的解决方案项目
15.8.4遗留系统与辨别分析
15.8.5模型复查
15.8.6经验值
15.8.7责任感vs权限
15.9小结
如果把信息管理系统比作一座公寓,那么它底层的数据模型就像是公寓的设计蓝图。也许若干年后,住在公寓里的人会希望改变大厅和卧室的布局、打通厨房和餐厅,或者增加窗户的宽度。经验丰富的设计师将允许我们做这些改变,使得我们能够很幸运地跟上流行的装修潮流;而一个糟糕的设计师却会告诉我们,打通厨房和餐厅会影响结构的安全,增加窗户的宽度之前必须先对窗梁进行加固——这时我们会觉得唯一的解决办法可能只有重建公寓了。和建筑的设计蓝图一样,软件的数据模型也决定了软件的灵活性、可扩充性、健壮性等内在的特性,这些性质是无法通过增加界面的美观程度来达到的。
可见,一个高级建模人才为开发小组带来的潜在价值可能是很难衡量的。然而,数据建模给人的感觉总是非常神秘,这一方面可能是由于数据模型很容易让人联想起深奥的理论,另一方面也可能是因为建立好的数据模型要求极其丰富的设计和实践经验——设计和建模并不是根据理论照本宣科的过程,而是根据现实需要和约束进行各种权衡和选择。这些知识在纯理论性的书本中通常难觅踪迹,而同时又是许多开发和设计人员所迫切需要的。本书的一大特色就是强调理论与实际的联系,把关系理论、项目管理、软件工程理论与工程实例紧密地糅合在一起,使读者能够更加快捷、形象地理解到理论的实际含义,并在潜移默化当中掌握一些权衡方法和设计技巧。
在翻译本书的过程中,我们深深地觉得,对于从事信息系统的管理、开发和设计的任何人而言,本书都具有极高的价值。本书的原作者用他丰富的经验为我们勾画出了数据建模人员的工作思路和设计技巧,使我们在思维方法和工作能力上能够迅速获得一个大的飞跃。其次,本书的翻译人员是由国防科技大学计算机学院数据库方向的博士和研究人员组成的,他们大都参与或负责过国家和大型企业的重大项目,具备丰富的理论和实践经验。在翻译的过程中,我们特别注重了文化背景和中国人的阅读习惯,对原作者的一些文字进行了适当的处理,使之更加符合中国人的习惯,对原书存在的很少的编排错误也进行了修改。
全书由李化组织翻译,参与翻译的有李化、潇东、陈大峰、杨征、齐宁、彭智、周志华、左亚利、张君、李满朝和胡班。全书最后由肖国尊统稿。如果读者发现本书存在任何不足之处,敬请批评指正。