数据建模经典教程 第2版(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-20 05:56:50

点击下载

作者:(美)Steve Hoberman 霍伯曼

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

数据建模经典教程 第2版

数据建模经典教程 第2版试读:

前言

相信很多读者和我一样,通常都会略过前言直接进入正文。但还是强烈推荐读者能先从前言部分开启本书之旅。前言将帮助读者对每一单元、每一章节有一个大体认识,并事先了解各部分的学习目标。本书的10个目标

1.将会理解在什么情况下需要数据模型,以及各种情形下最适当的数据模型类型是什么。

2.能像阅读一本小说那样,轻松自如地读懂任何规模和复杂度的模型。

3.具备创建完整的规范化关系数据模型和维度模型的能力。

4.具备将一个逻辑模型转换为高效物理模型的能力。

5.具备使用模板工具,高效获取应用需求的能力。

6.具备解释数据模型记分卡中10个计分项的能力。

7.掌握如何与其他人员建立良好工作关系的实践经验。

8.了解非结构化数据及其模型化。

9.了解UML的基本概念。

10.具备XML环境中创建数据模型的能力,并了解元数据和敏捷开关的基本概念。

本书包含有5个部分,第1部分引入数据建模,并介绍了数据建模的目的和变化。第2部分说明数据模型中的所有组件。第3部分介绍关系型和维度型概念模型、逻辑模型和物理模型。第4部分则关注如何使用模板提高数据模型质量,介绍数据模型记分卡以及如何与业务人员、项目团队高效沟通。第5部分讨论关于数据建模的常见疑问。

将本书内容与10个学习目标关联起来看,第1部分的前半节完成了目标1,第2部分完成了目标2,第3部分完成了目标3和4,第4部分完成了目标5、6和7,第5部分则完成目标8、9和10。

第1部分由3章组成。第1章引入数据模型,并通过两个实例(冰淇淋和名片)说明数据模型的作用,这两个实例贯穿始终,便于读者对需求分析到模型设计的整个建模过程有所认识。第2章介绍了数据模型的两个非常有价值的特征:交流性和精确性。同时本章还就数据模型最行之有效的领域给予讨论。第3章将数据模型与照相机做以类比,说明关于照相机的4种设置同样适用于数据模型。理解4种设置对数据模型的影响将极大增加建模成功的可能性。(注:应用系统是为特定用户设计的以实现一定功能的一个程序或程序集,如文字处理系统、订单处理系统、利润报表系统等。)

第2部分包含随后的4章,用以介绍数据模型组件。第4章介绍实体,第5章介绍属性,第6章介绍关系,第7章介绍键。

第3部分由随后的3章构成,其中讨论了概念模型、逻辑模型和物理模型这3种不同类型的模型。第8章着重学习概念模型并讨论了在创建概念模型过程中的3种变化。第9章学习关系及维度逻辑模型。第10章介绍物理模型,重点学习使用反规范化和分区等不同技术实现物理模型的高效设计,同时还将学习渐变维度模型。

第4部分包含3章内容。讲解如何使用模板、数据模型记分卡及如何有效地与业务人员、项目组成员进行交流沟通,从而提高数据模型质量。第11章推荐了多种用于获取、验证用户需求的模板,模板的使用将有助于降低时间开销并提高建模精度。第12章讲解数据模型记分卡以验证数据模型质量。第13章介绍了如何与其他团队成员协作以及高效共事的一些实践经验。

第5部分也包含3章内容,其中介绍了凌驾于数据建模之上的有关主题。第14章介绍非结构化数据,因为非结构化数据的处理是当前流行的趋势。本章介绍了分类、本体两个处理技术。第15章学习统一建模语言UML中涉及数据模型的内容。第16章给出了经常被提及的5个疑问,并一一解答,其中包括XML、元数据、敏捷开发。

第2版在第1版的基础上做了很大的改进。所有章节相比第1版都变化很多,其中更多地引入了新技术和示例。而且第2版更注重数据模型创建过程。作为强化概念,关键点都被添加至每章的结尾。每章开篇之处也添加了3行新体诗,给出了各章梗概。

本书还引入一则新术语:路径搜寻(Wayfinding),并重点介绍了如“元数据”等多个建模领域中容易被混淆的概念。本书还添加一些很有针对性的习题,并给出了参考答案。本书最后还罗列出本书涉及的全部名词解释。

本书的另一大特色在于其并非由一名作者独立完成。在写作之初,我曾尝试撰写有关UML和非结构化数据有关的内容,但我很快意识到其他专家学者的作品更好。于是请Graeme Simsion、Bill Inmon和Michael Blaha这3位专家分别撰写了本书的第13章、第14章和第15章。

数据建模不只是一种工作或职业,它还是一种思想,一种无价的过程和生活方式。但请尽量保持其简单实用,现在一起开始建模之旅吧。第1部分数据建模简介

第1部分将引入数据建模,并介绍了数据模型的目的及其类型。完成该部分学习之后,读者将可以对在什么情况下需要引入数据模型进行判断,并可以根据实际情况选择适当的数据模型类型。读者还应该可以通过数据模型特征进行模型评估,并能针对特定的模型确定其特征的优劣及确定该模型与其创建目的是否吻合。

第1章将引入数据模型,并通过两个实例对这一强有力工具进行阐述。这两个实例也将贯穿整本教程。因为我个人偏好甜品,所以一个实例与冰淇淋有关(是的,冰淇淋)。另外一个实例是对名片进行数据建模。无论是冰淇淋,还是名片,都用来说明建模技术,这样读者可以从需求分析到模型设计了解整个建模过程。

第 2 章介绍了数据模型的两个非常有价值的特征:交流性和精确性。读者将了解到模型交流性如何体现以及 3 种可能弱化模型精确性的情形。本章还从业务及应用程序两个领域对数据模型的应用进行了说明。

第3章将数据模型与照相机进行比对,说明用于照相机的4种设置可以完美适用于数据模型。对数据模型设置的理解将极大增加应用程序开发成功的可能性。本章还比对了图像格式与数据模型,由此引入数据模型的3个层次:概念、逻辑、物理。第1章 数据模型我怎样才能到达目的地?地图、设计蓝图、数据模型请为我指引迷津。

当我又一次意识到自己完全迷路的时候,我懊恼地重重拍了一下方向盘。要知道,我正独自行驶在法国的公路上,赶着去参加一个非常重要的商务会议,而且此时距离天亮还有一个小时,还好我发现前方有一家正准备开张的加油站,我停下来,走了进去,并把目的地的地址拿出来给服务员看。

我不会说法语,那个服务员也不会讲英语,我需要帮助,但无法通过言语交流,幸亏他认出了我要访问的公司的名字,最后他拿出了纸笔,给我画了一张示意图。如图1.1所示,他用线条表示街道,用圆圈表示环岛路口并配有相应的数字表示出口,还用矩形框表示加油站(Petrol)和我的目的地(MFoods)。

这个由服务员绘制的地图里,只包含与我的行程相关的信息,在它的帮助下,我顺利抵达目的地。事实上,这张地图就是一个我旅行所需要的实际道路的模型。

地图是对复杂地理景观(geographic landscape)的简化,同理,数据模型也是对复杂信息景观(information landscape)的简化,本章将以冰淇淋和名片为例,介绍被誉为路径搜寻工具(wayfinding tool)的数据模型及其重要作用。图1.1 简单的地理景观示意图1.1 路径搜寻说明

如果“数据模型”不能引起你或你的业务伙伴们的兴趣,你可以使用“路径搜寻(wayfinding)”予以替代,路径搜寻囊括所有被人类或动物使用的技术及工具,以实现从一个地点抵达到另外一个。如果一位旅行者用天空中的星斗导航,那么星斗便是他的路径搜寻工具,同理,地图、指南针也都是此类工具。

所有的模型也是路径搜寻工具。模型是一组文字及各类符号的集合,用来将一个复杂的概念简单化。我们生活在一个令人眼花缭乱的世界,人们很难将注意力集中在一些关键信息上,从而无法做出一个明智的决策。而地图可以帮助旅行者游览一座城市,组织结构图可以帮助员工理解组织间的相互关系,设计蓝图则可以帮助建筑师交流建造计划。所以,地图、组织结构图、设计蓝图都是对复杂事物的过滤和简化,以帮助人们理解现实世界,提高路径搜寻能力。

在法国的这次旅行,要不是加油站服务员绘制了地图,让我立刻明白如何抵达目的地,我可能得多花几个小时,并且不断碰壁。模型则使用一些标准符号让人们快速地理解相应的内容。例如,在服务员绘制的地图里,他用线条表示街道,用圆圈表示环岛路口,正是这些符号帮助我在脑海中映射出一条条街道和一个个路口。1.2 数据模型说明

当我还在读大学的时候,课堂上教授们经常会在挂图板上写下大量内容,而学生们则疲于整理笔记。在这种情况下,“信息过载”(information overload)可以用来形容这种状况,即当前的信息量超出了大脑所能接受的最大信息量。此时最好在校园里闲逛一会,亦或打打网球,亦或玩半小时的太空入侵者游戏(Space Invaders),让身心得以放松,以便接受更多信息。然而现代社会,人们创造并接受越来越多的信息,但休息、放松的时间却越来越少。而且我经常听到这样的说法—在世界范围内,信息量以每年60%的速度递增,这让我不禁感叹,在如此众多的信息面前,我们真正掌握、理解的信息是多么有限。

幸运的是,数据模型这一工具可以帮助我们有效地简化所有信息。类似于路径搜寻工具,无论是商务专员,还是IT专家,都可以有效地使用数据模型,即利用一组符号、文本来准确表达真实信息的精简子集,以便改善某一组织内部的交流、沟通,并提供一个更灵活、更健壮的应用环境。例如,在法国地图上用线条表示公路。又如,在数据模型里可以把“客户”这两个字用矩形框起来,表示一些实际、具体的客户,如Bob、IBM、Walmart。

换言之,地图是对复杂地理景观的简化,而数据模型则是对复杂信息景观的简化。很多情形下,现实数据的极其复杂性使得数据模型看起来异常简单,例如服务员给我绘制的那些环岛路口。

数据模型是一组由符号、文本组成的集合,用以准确表达信息景观,达到有效交流、沟通的目的。描述信息景观的方式多种多样,本书主要使用矩形框、线段等元素描述数据模型,当然还可以使用统一建模语言(UML)类图(Class Diagrams)、电子表格(spreadsheets)、状态转换图(State Transition Diagrams)。所有这些模型都可以视为在复杂信息世界里的路径搜寻工具,都可以显示对复杂信息世界的简化。1.3 有趣的冰淇淋

电子表格可能是我们在日常工作生活中最熟悉的一种数据模型。电子表格是纸质工作表格的一种表示形式,表单中包含由行和列构成的网格,网格中的每个单元格都可以存放文本或数字,表单中的列通常表示不同类型的信息。假设我刚刚结束一段旅程返回罗马,我喜欢那里的冰淇淋(gelato),当我们一起走进一个冰淇淋店时,你应该会注意到几个表单,表1.1为一个冰淇淋口味列表,表1.2则包含了冰淇淋大小及价格信息。表1.1 冰淇淋口味香蕉卡布奇诺巧克力巧克力片咖啡猕猴桃软糖开心果草莓香草表1.2 冰淇淋大小及价格1匙1.752匙2.253匙2.60

上述表单也是一个数据模型,因为它用一组符号集合(本例中用的是文本)来描述现实世界的一些事物(本例中描述了美味的冰淇淋口味及其价格)。你们猜猜我买了几匙巧克力口味的冰淇淋?

数据模式形式(data model format)是本书的主题之一,而且与上例中的表单非常类似。虽然数据模型是一个较宽泛的概念,但这里需要注意的是当使用数据模型这一术语时,其形式需引起我们足够的重视。但不同于数据表单,数据模型应满足如下要求。● 只包含类型:数据模型中通常无需显示,如巧克力或3匙,这样

具体的数据,需要显示的是数据对应的概念或类型。比如,上述

数据模型中显示的类型为冰淇淋口味,而非巧克力或香草这样具

体的值,还显示了冰淇淋大小,而不是具体的值,1匙或2匙。● 包含相互作用:数据模型还需要抓住不同概念、类型间的相互作

用。比如,冰淇淋口味与大小之间的相互作用是什么?如果有人

要买3匙冰淇淋,那么这3匙是同一种口味,还是3种不同的口味。

正如冰淇淋口味与大小间的相互作用,在一个数据模型中要求表

述不同类型间的相互作用。● 提供一个简洁的交流媒介:比起仅使用数据表单进行交流,用包

含数据模型的文档交流,其效率要高得多。数据模型显示各个类

型,并用简单且有效的符号表达它们之间的相互作用。对于冰淇

淋这个实例,为了有效描述各个类型以及它们之间的相互作用,

显然数据模型是种更为精练的工具,而仅使用数据表单往往达不

到这样的效果。1.4 有趣的名片

名片(Business Card)包含了丰富的关于某人及其单位的信息。本书中,我会用名片作为基本模型,来阐述许多与数据模型相关的概念,通过构建一个名片数据模型,我们可以亲身感受到从具体的名片上能获得多少信息,或者从更广泛意义上的联系人管理领域能获得多少信息。

我打开床头柜抽屉(惊人的是自从20世纪90年代中期抽屉就未被整理过),抓起一把名片,铺在桌上,挑出最有趣的4张建模。第1张是我本人现在的名片。第2张是多年以前妻子和我创办的互联网公司的名片。还有一张是一位魔术师的名片,他曾经在我们的聚会上表演过。最后一张是我最钟爱的一家饭店的名片。为了保护个人隐私,我修改了姓名和联系方式,如图1.2所示。图1.2 床头柜里的4张名片

在这些名片上你能看到什么信息?

假设我们这次练习的目的是理解名片上的信息,并以实现一个成功的联系人管理应用程序为最终的目标。让我们先列出以下一些信息。

       Steve Hoberman & Associates, LLC

       BILL SMITH

       Jon Smith

       212-555-1212

       MAGIC FOR ALL OCCASIONS

       Steve and Jenn

       58 Church Avenue

       FINE FRESH SEAFOOD

       President

我们很快就能意识到,尽管这里只处理4张名片,但是即便列出所有的信息,对于帮助理解数据模型也是非常有限的。进一步地,设想一下如果我们要处理的名片不仅仅局限于4张,而是扩大到床头柜里的所有名片,或者更糟,扩大到曾经收到的每一张名片!很快,数据量就超负荷了。

数据模型将数据汇总,从而让它们更容易理解。例如,我们查看下列数据,发现这组数据适合放在一个被命名为“公司名称”(Company Name)的数据组中(电子表格中的列标题)。

       Steve Hoberman & Associates, LLC

       The Amazing Rolando

       findsonline.com

       Raritan River Club

另外一个电子表格中的列标题应该为“电话号码”(Phone Number)。表1.3为一个列出部分名片信息的表单。表1.3 名片信息公 司 名电 话 号 码名Steve Hoberman & 212-555-1212片1Associates, LLC名findsonline.com(973) 555-1212片2名The Amazing Rolando732-555-1212片3名Raritan River Club(908) 333-1212 (908) 555-1212 片4554-1212

再进一步做这个练习,我们可以将名片中的不同数据组织到以下各个组中。

     姓名Person name

     职务Person title

   公司名称Company name

   电子邮箱Email address

     网页Web address

   通信地址Mailing address

   电话号码Phone number

     标志Logo (the image on the card)

     专业Specialties (such as “MAGIC FOR ALL OCCASIONS”)

至此,结束了吗?这组列表就是一个数据模型?答案是否定的。我们丢失了一个关键要素:数据组之间的相互作用或关系。例如,公司名称和电话号码之间有什么关系?一个公司可以有多个电话号码吗?一个电话号码可以属于多个公司吗?没有电话号码,一个公司可以存在吗?在建立数据模型的过程中,这一类问题都需要被提出并解答。

为了建立任何一种路径搜寻工具,人们通常在迷路足够多次之后,才有可能发现正确的路径,例如第一个为某地区绘制地图的人,一定会花费很多时间,走过很多弯路,才能完成其工作。可见绘制地图是一个具有挑战性并需要一定时间花销的过程。

创建并完成一个数据模型往往会遇到相同的情形,与概念“数据模型”相应地还有一个概念“数据建模”。数据建模是建立数据模型的过程,更具体地说,数据建模为了明确某一组织结构及其操作,而使用一组技术和实施一些活动,即提出一个信息解决方案,从而实现该组织的某些目标。当然在数据建模过程中,还需要很多技能,如专心聆听,尽可能提出大量问题,甚至耐心。

数据建模者要求能与来自不同部门,具有不同技术背景,不同业务经验,不同技能水平的人员交流、沟通。在交流中,数据建模者不仅需要理解每个人员的观点,而且还需要通过反馈证明理解无误,最终作为组件,构建在模型中。在一个项目的初期,通常数据建模者没必要去处理所有数据模型所需的数据,但阅读大量相关文档、咨询数百个与业务有关的问题则是必要的。1.5 练习1:教教你的邻居

为了强化数据模型认识,读者可以试图向非IT人士,如邻居、家人或朋友,解释这一概念。

他们听懂了吗?

在本书的后面有关于如何解释数据模型这一概念的参考答案。**关键点**√ 路径搜寻囊括所有被人类或动物使用的技术及工具,以实现从一个地点抵达到另外一个地点。√ 数据模型是一组由符号、文本组成的集合,用以准确表达信息景观,达到有效交流、沟通的目的。√ 数据模型具有多种表现形式,而最常见并得到广泛理解的形式为电子表格。√ 数据模型形式是本书的主题之一,它与电子表格非常相似,但数据模型基于类型,包含相互作用和可扩展性。√ 数据建模是建立数据模型的过程,需要很多与技术无关的技能,如专心聆听,尽可能提出大量问题,甚至耐心。第2章 为什么需要数据模型笼统地讲数据模型是精确的0,1……还是很多。

数据建模是构建应用程序的必要组成部分。数据模型之所以如此重要,是因为它所带来的两大核心价值—交流性及精确性。数据模型可以有效应用于业务及应用程序开发领域,本章则通过讲述数据模型在这两个领域的使用,阐明数据模型的两大核心价值,你将学习到数据模型对交流的促进作用和能削弱数据模型精确性的3种情形。2.1 交流性

来自不同部门、职能区域,以具有不同技术背景和业务经验的各类人员时常需要就业务问题进行讨论并最终做出决策。讨论中,需要明确对方对诸如“客户”“销售”等这类概念的观点。数据模型作为一种理想的工具,可以有效达到理解、记录并最终协调不同观点的目的。

当我身在异国,无法进行言语交流时,那位加油站服务员为我绘制的地图模型,使我明确了如何抵达目的地。无论我们想尝试着去了解某一业务中的一些重要概念如何与其他概念相关联,还是想了解一个已经使用了近20年的订单处理系统的运作,数据模型都是一个用于解释信息的理想工具。

借助数据模型,我们可以在不同的细节水平上交流相同的信息。例如,前不久我们构建了一个用于描述快餐领域消费者间相互作用和影响的高层次数据模型。于是,当有消费者电话投诉公司产品时,我们所构建的模型将存储该投诉以及与其相关的信息。可以看出在这个项目中,那些重要的商务客户就与我们建立的这个高层次数据模型所展示的内容相关联。数据模型有助于限定项目范围,帮助理解诸如客户、产品及相互作用等关键观念,帮助建立融洽的业务关系。几个月之后,我们使用更细化的模型来描述消费者间的相互作用信息(consumer-interaction information),并向业务报表制作者说明,在每一种选择条件下,哪些信息将出现在报表中。

基于数据建模的交流,并非只是在建模结束后才开始的。事实上,伴随着数据建模进程,需要更多的交流和知识分享,即交流沟通在建模中与建模后都同样具有价值。下面让我们一起领略建模过程和建模结果所带来的交流价值的更多细节。2.1.1 建模过程中的交流

在建立数据模型的过程中,我们必须分析数据及数据间的关系,我们别无选择,必须对所要模型化的内容具有清晰的认识。人们在建模过程中,相互挑战、质疑,从而获得与术语、假设、规则和概念相关的大量知识。

在为一家大型制造业公司建立配方管理系统(recipe management system)数据模型的过程中,我惊讶地目睹了具有多年工作经验的项目组成员就“组件”(Ingredient)的概念和“原材料”(Raw Material)的概念是否存在差别进行辩论,经过30分钟有关组件与原材料的讨论,每一位参加建模的人员都从中受益,当结束建模会话(modeling session)时,他们都对配方管理有了更深入的理解。又如,以模型化名片为例,在建模过程中,将学习到许多有关人员、公司和联系人管理的共识。2.1.2 建模过程后的交流

创建并完成的数据模型是讨论在应用程序中哪些模块应该被构建的基础,甚至更底层的,借以数据模型讨论业务流程或程序功能模块如何运作。数据模型像一张可反复使用的地图,无论是分析师、建模者,还是开发者,都可以利用它,了解他们各自关心的对象如何工作,正如第1位地图制作师需要经历艰苦的学习,才能准确记录下地理景观,为他人导航。与此极其相似的是建模者也需要经历类似的训练(痛苦但却有益)以便让其他人能够理解一个信息景观(information landscape)。

当我准备进入一家大型制造业公司工作之前,我的新任主管给了我一本公司手册,其中记录了一组与公司有关的数据模型,当我阅读了好几遍之后,我已经对公司业务中的重要概念和业务规程相当熟悉了。所以,在我工作的第一天,我已经掌握了大量关于公司业务运作的信息,甚至当同事们提及一些专有术语的时候,我也能熟知它们的含义。

就上一章提到的名片,一旦完成相应的数据模型,其他人就可以通过该模型了解联系人管理了。2.2 精确性

数据建模的精确性指的是阅读模型时,其中的每一个符号和条目都是清晰、无二义性的。你可能与其他人争议所使用的规则是否准确,但这与我们所强调的模型的精确性是不一样的概念。换言之,如果你看到模型中的某一符号并说“我看见了A”,那么另外一个看到这一符号的人不可能说“我看见了B”。

再回到那个名片的例子,假设我们定义“联系人”为名片上所罗列的人或公司,或许有人提出“一个联系人有多个电话号码”。显然这个表述是不精确的,因为我们不确定一个联系人是否可以没有电话号码,或者必须有一个电话号码,或者必须有多个电话号码。类似地,我们不明确是否允许出现一个未与任何联系人关联的电话号码,或者一个电话号码必须属于某一位联系人,或者可以属于多位联系人。数据模型提出的精确性,要求将这些模糊的表述转换为以下断言。● 每一位联系人必须和一个或多个电话号码关联。● 每一个电话号码必须属于一位联系人。

由于数据模型引入了精确性,所以无需试图花费宝贵的时间来解释模型,相反,时间可以用来讨论、验证一些与建立某一模型相关的概念。

但是在3种情况下,数据模型的精确性可能降低。

1.弱定义:如果对一个数据模型中的一些条目(terms)的定义,缺乏根据或压根不存在,那么此时极有可能对这些条目产生多种理解。如果数据模型中的一则业务规则规定每一位雇员(Employee)必须拥有一套福利计划,同时又将“雇员”定义为碳基生物形式这样一种缺乏现实意义的表述,那么我可能认为“雇员”包括“工作申请人”,而你可能认为不包括“工作申请人(Job Applications)”,所以你我之间必将有一位是错误的。

2.伪数据:第2种情形出现在当某一数据超出了常规的取值,而我们又希望将其引入特定的数据记录中。一个绕开数据模型严谨性(rigor of data model)的老把戏是扩大数据模型可能包含的数据值。例如,出于某种考虑,要求联系人必须有至少一个电话号码,而如果要添加到应用程序的联系人并没有电话号码,那么某位程序使用者可能为该联系人创建诸如“不可用”“99”或其他假电话号码,该联系人最终被添加进了应用程序。这个例子中,使用伪数据将一位没有电话号码的联系人添加进了应用,从而违背并规避了我们最初制定的业务规则。

3.模糊或缺失的标签:阅读一个数据模型类似于阅读一本书,应该有正确的句子结构,动词是句子中非常重要的组成部分。对于数据模型,这些动词用来描述模型中一些概念间的相互关联。以“客户(Customer)”和“订单(Order)”这组概念为例,可以通过动词“订购”(place)把它们相互关联,即“一位客户可能会订购一个或多个订单”。而诸如“联系”“有”等模糊的动词,或者缺少动词,将降低整个数据模型的精确性,正如我们不能准确理解一个句子的含义一样。

数据模型的精确性还源于使用了一组标准的符号集合,那家加油站服务员为我绘制的交通图使用了标准符号,于是人人都能理解。我们马上就会学到一些数据模型中使用的标准符号。2.3 使用数据模型

从传统的角度来讲,不仅要求对一个新的应用进行不断的分析与设计,以明确所有满足该项目的必备条件,还应该对现有数据库具有完整、正确的认识,并在此基础上完成数据模型的构建。由于模型的精确性,数据模型还可以被用于以下几种情况。

理解已有应用程序。数据模型提供了一个简单而精确的视角,用来观察某个应用程序所涉及的概念。我们可以通过考察一个现有应用程序的数据库,并根据该数据库结构创建出一个数据模型。“逆向工程”(reverse engineering)这一专业术语,即表示根据现有的应用构建出数据模型的过程。不久前,一家制造业机构需要将一个已使用了25年的应用系统迁移到一个新的数据库平台,对于这个庞大的应用系统,为了掌握理解它的结构,我们将数据库逆向工程为一个数据模型。

风险管理。通过数据模型可以获取一些概念及概念间的相互作用,并且这些概念及相互作用受到程序、项目开发的影响。对一个现有应用程序进行结构性添加或修改将产生什么影响?有多少应用程序结构需要备份?现在有很多机构购买一个软件后会再对其进行自定义修改。影响分析(impact analysis)是进行风险管理的一种方法,借助数据模型进行影响分析,来明确对所购买的软件进行结构修改会产生什么影响。

了解业务。开展一个大型项目开发的必要条件是在了解应用程序如何辅助业务开展之前,你最好先去了解相关的业务流程。例如,在开发订单录入系统之前,得先了解订单录入的处理过程。我最欣赏的一句话源自威廉·肯特(William Kent)1978年所写的一篇名为“数据与实现”(Data and Reality)的文章,文中当肯特论述到创建一个数据库来存储图书信息所需要的步骤时,他写到:所以需要再次强调的是如果计划创建一个图书数据库,在还未了解某个概念的准确含义之前,最好在所有用户中达成共识,如什么是“一本书”。

培训团队成员。当新成员想要尽快跟上进度或开发者想要了解需求时,数据模型可以作为一个非常有效的阐述工具。一位新人无论何时加入我们的部门,我都会花费一些时间,通过一系列数据模型尽可能快地给他传授一些相关概念。2.4 练习2:转变非信仰者

在你所在的组织中找到一位数据模型的非信仰者,并试图转变他。你都碰到了哪些障碍?你是否说服了他们?**关键点**√ 数据建模的两大核心价值是交流性及精确性。√ 无论是建模中,还是建模完成后,都需要进行交流、沟通。√ 如果存在弱定义、伪数据、模糊或缺失标签等3种情况,数据模型的精确性将会降低。√ 交流性和精确性使得数据模型成为一种构建应用程序的出色工具。√ 数据模型还可以被应用于理解已有应用程序、了解业务、执行影响分析和培训团队成员。第3章 哪些相机设置也适用于数据模型相机设置变焦、对焦、定时器、滤镜数据模型也一样。

本章将数据模型与相机比较,解析4种相机上的设置,它们完美诠释了数据模型,理解这些设置对数据模型的影响,将有助于增加一个应用项目成功的几率。同时,本章还对比了3个层次上的图像格式,从而理解概念模型、逻辑模型和物理模型。3.1 数据模型与照相机

一个相机上可以使用很多设置,来确保拍出动人的画面。想象一下,你正用相机瞄准一个美丽的落日场景,即使面对同一场景,如果使用不同的对焦、定时器或变焦设置,那么你可能也会拍到完全不同的照片。例如,你可以推远镜头以捕获尽可能多的落日画面,还可以拉近镜头,将画面集中在一位在落日中漫步的游客的身上,这完全取决于你想要将什么呈现在照片中。

变焦、对焦、定时器、滤镜是与相机有关的4种设置,它们都可以被直接变换到数据模型上,如图3.1所示,每种相机设置都对应于一个数据模型的特征。图3.1 相机设置向数据模型的变化

通过变焦设定,可以允许摄影者捕获一个广阔的场景而忽略一些小细节,或者捕获一个强调细节的狭窄范围。类似地,对数据模型的范围(scope)设置可以改变一个数据模型所能呈现的信息量大小。相机的对焦设置可以决定照片中的景物是锐化的(sharp),还是模糊的(blurry)。类似地,对模型的抽象(abstract)设置则可以使用诸如同类(party)、事件(event)等通用概念来“模糊”(blur)概念间的区别。定时器可以用来设定一个实时快门,或一段时间之后的快门。类似地,对数据模型的时间(time)设置则可以用来获取一个当前的视角或未来一段时间后的视角。滤镜设置可以用来调整整个画面的外观,产生某种特定的视觉效果。类似地,数据模型的功能(function)设置则可以用来将模型调整到业务视觉或应用程序视角。

同时,不能忽略图像类型的重要性。摄影校样(proof sheet)允许在一张纸上展示所有的图像,而底片为Raw格式的图像,其可以输出很多种图像格式,包括胶片、幻灯片或数字图像。类似地,相同的信息图像(information image)能够存在于数据模型的概念、逻辑、物理等3个不同的细节层次上。

哪种设置适合于你的模型?正如落日下的摄影,这取决于你想要捕获什么。用适当的模型设置匹配你的模型目标,可以提升数据模型以及它所支撑的应用项目的质量。3.2 范围

数据模型和相片都有相应的边界,边界决定了能够被显示的事物。一张照片可以捕捉到我的小女儿正享受冰淇淋时的情景(实际上,她的整个面部都在享受着冰淇淋),或者可以捕捉到我女儿及其所处的环境,如冰淇淋店。类似地,数据模型可以只包含索赔过程(claims processing),或者还可以囊括所有保险业务中概念。典型的情况下,数据模型范围可以是一个部门、一个组织或一个行业。● 部门(工程)。最常见的建模任务类型是工程级范围(project-

level scope),工程是完成软件开发任务的计划,经常由一组在

指定日期之前可交付的成果所定义。例如,可以包括销售数据集

市(sales data mart)、经纪人交易应用(broker trading

application)、预定系统(reservation system)及对现有应用的

加强。● 组织(应用程序)。应用是一种大型的、集中组织的计划,其中

可能包含多个工程。通常应用具有起始日期,但如果成功,则没

有结束日期。应用可能是非常复杂且需要长期模型化的任务。例

如,可以包括数据仓库(data warehouse)、操作数据存储(operational data store)及客户关系管理系统(customer

relationship management system)。● 行业。一份行业计划被设计,旨在获取行业中的一切,如制造业

或银行业。很多行业都在进行大量的工作,致力于共享一个共用

的数据模型。如健康卫生和电信等行业联盟,都在从事共用数据

模型结构的开发,这类共用结构可以加速应用程序开发以及方便

同行业中不同组织间的信息共享。3.3 抽象

一副照片可以是模糊或清晰的。类似于如何对照相机进行对焦,使得图片变得锐化或模糊,模型的抽象设置允许你表现“锐化”(concrete具体)或“模糊”(generic通用)的概念。

通过重定义和对模型中的一些属性、实体、关系进行合并,得到一些通用的概念,这样为数据模型带来一定的灵活性。抽象是指去除部分细节而保留一些重要的属性、概念或主题的必要本质,从而扩展适用性,满足更宽泛的应用需求。通过去除细节,消除分歧,改变我们看待这些概念或主题的方式,此时我们或许可以看到那些之前不太明显,甚至未曾发现的东西。例如,可以将“员工”“顾客”抽象为一个更通用的“人”的概念,人可以担任不同的角色,员工、顾客只是其中的两种,更多的数据模型抽象能将该模型变得更宽泛、通用。对于数据模型,概念可以被不同层次地抽象:“业务云”“数据库云”或“地面上”。● 在业务云中。在这一级别的抽象中,只有通用的概念被应用于数

据模型,业务云模型通过使用诸如人(Person)、交易(Transaction)和文档(Document)等通用概念,隐藏许多现实

复杂性。实际上,当使用业务云的概念时,糖果公司和保险公司

变得非常相似,倘若你缺乏对某一业务的认识,或不能获取到一

些业务文档和资料,一个业务云中的模型将能很好地运作起来。● 在数据库云中。在这一级别的抽象中,只有通用的数据库(database,DB)概念被应用于数据模型。数据库模型是最容易

被创建的,它使用诸如实体(Entity)、对象(Object)和属性(Attribute)等数据库概念。如果你不清楚业务如何开展,而又

想要覆盖所有行业的所有领域,那么一个数据库云中的模型将能

很好地运作起来。● 在地面上。这类模型对应于少量的业务处理,并使用尽可能少的

数据库云实体,而使用大量能代表具体业务术语的概念。比如数

据模型得花费大量时间来创建学生、课程、教师等3个概念,并

允许增加一些具体的值来帮助理解业务处理、解决数据问题。3.4 时间

大部分照相机具有定时器功能,使得摄像者可以在设定定时器后,快跑并把他自己也拍摄进画面中。类似于应用照相机定时器可以拍摄一幅当前或一段时间之后的场景,数据模型的时间设置允许将一个当前或未来的视角表现在模型上。

一个数据模型可以表示当前的业务运转,也可以表示未来一段时间后可能的业务状况。● 当前。一个带有当前设置的模型可以获取当前业务运作的信息。

即便存在一些陈旧的业务规则,它们也得出现在模型中,即使在

不久的将来这些规则要被修改。另外,如果一家企业正计划购买

另一家公司,或出售一家公司,或者正在改变经营种类,那么当

前视图也不会显示任何一个上述正要发生的变化,而仅仅只能表

现出目前的状况。● 未来。一个带有未来设置的模型可以表现未来任意一个时间阶段

的业务。通常这种模型是一个理想状态下的视角,无论过去了1

年、5年,还是10年,未来设置总能体现该组织的发展方向。如

果一个模型需要支持某个组织的发展规划和战略布局,那么设定

一个未来设置将是其首选。我曾经作为负责人为一所大学构建模

型,由于有大量的应用迁移要在一年内完成,所以这个模型需要

表现出一年以后的情况。还需注意的是对于大部分组织,如果需

要一个未来的视角,通常必须首先创建一个当前的视角作为起始

点,这样做没有什么不妥,正如一位摄影者可以对一个场景拍摄

多幅照片,那么一位数据模型的创建者也可以用不同的设置去创

建多个模型。3.5 功能

滤镜是一组覆盖在相机镜头上的塑料和玻璃材质的滤光片,可以用不同颜色的滤光片对照片进行调整,例如,让照片看起来更蓝或更绿,与相机滤镜可以改变场景的外观一样,数据模型的功能设置则允许一个数据模型表现为业务视角或功能视角。我们正在模型化一个业务视角下的世界,还是应用程序视角下的世界?有时它们一致,但有时它们有很大的差别。● 业务。这种过滤器使用的是业务术语及规则,而模型呈现与应用

无关的视角,无论某一机构是用文件柜存储信息,还是使用最有

效的软件系统。在模型中,这些信息将会被一些业务概念表示。● 应用程序。这种过滤器使用的是应用程序术语及规则,是用应用

程序的观点看待业务运作而形成的视角。例如,应用程序使用术

语“对象”来表示“产品”,则产品会以“对象”的形式出现在

模型中,而且是以应用程序定义术语的方式进行定义,而不是用

业务处理的方式进行定义的。3.6 格式

正如一台照相机可以用多种不同的格式获取图像,数据模型的格式设置可以用来调整模型的细节水平,让模型呈现出很宽泛、高层次的概念视图(conceptual view)或呈现出能反映更多细节的逻辑或物理视图(logical or physical view)。● 概念视图。通常当一组照片被冲洗时,一份校样会包含每一幅照

片的缩略图,则观察者可以用一张相纸得到一个全景的视角,这

里的全景视角类似于概念数据模型(conceptual data model,

CDM)。概念数据模型可以在一个很高的层次上表示业务,这种

很宽泛的视图仅包含给定范围内的一些基本、关键的概念。这里

的“基本”意味着在一天的交谈中一些概念会被很多次地提及。“关键”意味着倘若没有这些概念,部门、公司、行业会被极大

地改变。有的概念是所有组织通用的,如“顾客”“产品”和“员工”,而有的概念则特定于某一行业或部门,如保险领域中的“政策”,或中介行业中的“交易”。● 逻辑视图。在数码相机问世之前,一卷冲洗过的胶片可以得到一

组底片,这些底片可以用来很好地观察所拍相片,这里底片类似

于逻辑数据模型(logical data model,LDM)。逻辑数据模型描

述了一份详细的业务解决方案,这使得建模者不用创建与软硬件

实现有关的复杂数据模型,就能掌握相应的业务需求。● 物理视图。虽然底片是一种很好的观察相片的视角,但它其实并

不实用。例如,你不太可能将底片置于相框或相册中拿去与朋友

分享,你应该转换或“实例化”(instantiate)底片为照片、幻灯

片或数字图像。相似的,逻辑数据模型需要被修改成更实用的物

理数据模型(physical data model,PDM)。它是逻辑数据模型

的化身(incarnation)或实例化(instantiate),类似于照片是底

片的化身,物理数据模型表示详细的技术解决方案,是对特定环

境的优化(诸如特定的软件或硬件环境)。物理数据模型是在某

种特定环境下,对逻辑模型执行力的修改、增强,在该环境中数

据将被创建、维护和访问。3.7 练习3:选择正确的设置

在下列列表中,为每种情形选出最适当的设置,参考答案在书的后面。

1.给一位项目组开发人员解释现存的联系人管理系统是如何工作的。范  围抽  象时  间功  能部分业务云当前业务组织数据库云未来应用程序行业地面

2.向一位新员工解释制造业涉及的关键概念。范  围抽  象时  间功  能部分业务云当前业务组织数据库云未来应用程序行业地面

3.获取一份关于新的销售数据集市的详细需求(数据集市是为了满足一些特定用户需求而设计的一种数据仓库)。范  围抽  象时  间功  能部门业务云当前业务组织数据库云未来应用程序行业地面

 **关键点**√ 照相机上有4种设置,变焦、对焦、定时器、滤镜,它们都可以被直接转换到数据模型上。变焦可以转换为数据模型的范围。对焦可以转换为数据模型的抽象。定时器转换为时间设置,用来决定数据模型获取当前的视图,还是未来的视图。过滤器转换为功能设置,用来决定数据模型获取的是业务视角,还是应用程序视角。√ 用适当的模型设置匹配建立模型的目标,可以提升数据模型以及它所支撑的应用项目的质量。√ 不要忘记关于图像格式的可选项!人们更喜欢去看一份校样(概念数据模型)、底片(逻辑数据模型),还是图片(物理数据模型)?第2部分数据模型要素

第2部分将解释数据模型中所使用的符号及文本。第4章解释实体,第5章则关于属性,第6章讨论关系,第7章说明键。当完成了本部分的学习,你将可以读懂任意规模、复杂度的数据模型。

第4章介绍了实体(entity)的定义并讨论了不同种类的实体,实体实例也将于本章介绍。同时,对实体上存在的3种层次——概念、逻辑、物理也做了相应的说明。进一步地还介绍了与弱实体(weak entity)相关的概念。

第5章介绍了属性的定义并讨论了域的概念,而且还给出了3种不同域类型的实例。

第6章介绍了规则和关系的定义,数据规则有别于行为规则。另外,基数和标签也将会被阐述。由此使得能像阅读小说那样轻松地读懂任何数据模型。递归关系(recursive relationships)、子类型(subtyping)等关系类型也将被讨论。

第7章介绍了键的定义,并对候选键、主键、备用键等术语加以区分,而且还将介绍代理键、外键的定义,并对它们的重要性加以解析。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载