(数据建模与设计)
Posted 浊酒南街
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(数据建模与设计)相关的知识,希望对你有一定的参考价值。
目录
一、前言
本文是《DAMA数据管理知识体系指南》第五章的读书笔记,主要讲述如何进行数据建模和设计,该章是全文的核心关节之一(按照CDMP考试认证的内容占比高达11%,是占比最重的五个章节之一)。本章内容非常关键,是所有数据从业者都应该要学习了解的内容,由于总结内容较多,全文一共约8000字,建议在PC端阅读,如果时间有限可先阅读思维导图。
二、内容结构
本章节内容比较丰富且十分重要,且该部分内容的普适性非常强,针对所有数据从业者(包括业务数据构建、数据系统开发、数据仓库开发、数据服务等全套流程都有很强的参考价值)。本章从数据模型的概念、业务驱动因素以及模型搭建的目标和原则讲起,然后对数据模型中的数据类型、模型组件、建模方法、模型级别等重要内容进行解释阐述;并对数据模型搭建活动中的模型规划、建立、审核、维护等流程进行全面的梳理,让我们对整个过程有较为直观的认识;在流程中对数据模型搭建的相关工具、方法和治理以及度量指标等都择其重点进行简介。本文内容较为重要,整理主要内容导图如下:
三、主要内容
1.引言
数据建模是发现、分析、确定数据需求的过程,用一种称为数据模型的精确形式标识和传递这些数据的需求。数据建模是数据管理的重要组成部分。数据可以采取多种不同的模式来表示,其中最常见的6种模式分别是:关系模式、多维模式、面向对象模式、事实模式、时间序列模式和NoSQL模式。
1.1 业务驱动因素
数据模型对有效地进行数据管理至关重要,是数据发挥价值至关重要的环节,其最直接的业务驱动因素主要是数据团队内部的效率和质量要求(不是我们通常认为的外部业务直接驱动),主要包括:
提供有关数据的通用词汇表
获取、记录组织内数据和系统的详细信息
在项目中作为主要交流沟通工具
提供了应用定制、整合,甚至替换的起点。
1.2目标和原则
数据建模的目标是确认和记录不同视角对数据需求的理解,从而使应用程序与当前和未来的业务需求更加紧密地结合在一起,并成功地完成数据应用和管理活动奠定基础。良好的数据建模可以降低支持成本,增加需求重复利用的可能性,从而降低构建应用的成本。通过数据建模达到以下目的:
格式化:格式化定义赋予数据规范的结构,减少在访问和保存数据时发生异常的概率
范围定义:数据模型可帮助解释数据上下文边界,以及购买的应用程序、项目、方案或实施的现有系统。
知识保留记录:数据模型通过以书面形式获取知识来保存系统或项目的企业信息,它能给未来项目提供原始记录。
1.3基本概念
数据建模:数据建模最常用在系统开发与系统维护的工作环境中,数据建模可以用于广泛的领域(如业务&数据架构、主数据管理和数据治理计划),其直接的结果不是在数据库,而是对组织数据的理解。
数据模型:模型是显示当前事务的一种表征或者将来想要创建事务的一种模式,其中数据模型描述了组织已经理解或者未来需要理解的数据。数据模型是用来将数据需求从业务传递到IT,以及在IT内部从分析师、建模师和架构师到数据库设计人员以及开发同学的主要媒介。
建模的数据类型:任何既定组织中适合于建模的数据反映了组织或者项目需要数据模型的优先级,可以对以下4种主要类型的数据进行建模:
类别信息:用于对事物进行分类和分配事物类型的数据(实体维度信息)
资源信息:实施操作流程所需资源的基本数据(实体数据信息)
业务时间信息:在操作过程中创建的数据(关键事实流程数据)
详细交易信息:详细的交易信息通过销售系统生成、互联网页面点击、移动设备传感器等(广泛流程数据,大数据)
数据模型组件:不同的数据模型采用不同的符号来表示数据,但大多数数据模型包括基本相同的组件:实体、关系、属性、域(可能各种模型之间对组件的定义有些细微的差异,但是整体来说都是大差不离的)。
实体:实体是一个组织收集信息的载体,一个实体可被认为是一些基本问题的答案(谁、什么、何时、何地、为什么、怎么办或这些问题的综合);实体通常采用矩形表示;实体的定义属于核心元数据,描述的业务价值有巨大贡献,高质量数据定义具备以下三个基本特征:
清洗:定义应该易于阅读和理解,采用简单清晰的语言表述,没有晦涩的首字母缩写词或难于理解的歧义术语表达
准确:定义是对实体的准确和正确的描述,应由相关业务领域专家进行审查,以确保其准确性
完整:定义要尽量全面,所包括的内容都要体现
关系:关系在数据建模图上通常显示为线条,线条上的符号(称为基数)精确的语法说明了规则,关系通过关系数据库中的外键来表示,在非关系型数据库中通过边界或链接来表示。
属性:属性是一种定义、描述或度量实体某方面的性质,实体中属性的物理展现为表、视图、文档、图形或文件中的列、字段、标记或节点等。在数据模型中,属性通常在实体矩形内的列表中描述。标识符也称为键,是唯一标识实体实例的一个或多个属性的集合,根据键的结构和功能进行分类。通常,主键是代理键,而备用键是业务键。
域:在数据建模中,域代表某一属性可被赋予的全部可能取值,域提供了一种将属性特征标准化的方法,域可以用不同的方式定义:
数据类型(Data Type):域中的某一属性中的数据有特定的标准类型要求,eg:整数、日期
数据格式(Data format):使用包括模板和掩码等格式的域,eg:电话号码、邮政编码
列表(List):含有有限个值的域,eg:订单状态
范围(Range):允许相同数据类型的所有值在一个或多个最小值/最大值之间的域
基于规则(Rule_based):域内的值必须符合一定的规则才能够成为有效值
数据建模方法:常见的6种数据建模方法是关系建模、维度建模、面向对象建模、基于事实建模、基于事件建模和非关系模型。
关系建模:关系模型设计的目的是精确地表达业务数据,消除冗余。关系模型特别适合设计操作型的系统,因为这类系统需要快速输入信息并精确地存储和查询信息。
维度建模:维度模型的数据组织方式是为了优化海量数据对的查询和分析,模型中将数据表分为事实表和维度表,事实表标识特定事务流程中的结果数字型度量值,维度表标识事实表中各扩展维度的具体信息。其核心要素包括:
事实表:在维度建模中,事实表的行对应于特定的数值型度量值
维度表:表示业务的重要对象,并且主要包含文字描述
雪花模型:将星型模式中的平面、单表、维度结构规范为相应的组件层次结构或网络结构
粒度:指事实表中的单行数据的含义或描述,这是每行都有的最详细信息,定义一个事实表中的粒度是维度建模的关键步骤之一。
一致性维度:基于整个组织考虑构建,而不是基于某个特定的项目。由于具有一致的术语和值,这些维度在不同的维度模型中可以共享。
一致性事实:使用跨多个数据集市的标准化术语。
统一语言建模(UML):UML是一种图形风格的建模语言,规定了类和他们之间的关系类型,UML特定如下:
与ER图相似,但ER中没有操作或方法部分
在ER图中,与操作最为接近概念的是存储过程
属性类型是用程序编程语言的数据类型表示,而不是物理数据库数据类型来表示
默认值可以在符号中有选择的显示
访问数据是通过类的公开接口
基于事实的建模:基于事实的模型不适用属性,通过表示对象之间的精确关系来减少直观或专家判断的需求。
基于时间的数据模型:当数据值必须按照时间顺序与特定时间值相关联时,需要用到基于时间的建模。
数据拱顶:是一组支持一个或多个业务功能领域,面向细节、基于时间且唯一链接的规范化表,数据拱顶模型有3种类型实体:中心表、链接表和卫星表。数据拱顶模型设计的重点是业务的功能领域,中心表代表业务主键,链接表定义了中心表之间的事务集成,卫星表定义了中心表主键的语境信息。
锚建模:适合信息的结构和内容都随时间发生变化的情况,它提供用于概念建模的图形语言,能够扩展处理临时数据。锚建模有4个基本建模概念:锚、属性、连接、节点。锚模拟的是实体和事件,属性模拟了锚的特征,连接表示了锚之间的关系,节点用来模拟共享的属性。
非关系型数据库(Nosql):非关系型数据库是基于非关系技术构建的数据库统称,通常有4类NoSql数据库:文档数据库、键值数据库、列数据库和图数据库
文档数据库:通常将业务主题存储在一个称为文档结构中,而不是将其分解为多个关系结构
键值数据库:只在两列中存储数据(键和值),其特征是可在列值同时存储简单和复杂的信息。
列数据库:最接近关系型数据库,可以使用更复杂的数据类型,包括未格式化的文本和图像,列数据库将每一列存储在自己的结构中。
图数据库:为那些使用一组节点就可很好地表示他们之间关系的数据而设计,这些节点之间连接数不确定。图数据库最适用的例子是社交关系(节点是人)、交通网络(节点是公共汽车或火车站)或路径图(节点是十字路口或高速公路出口)。图数据库最大的功能是在图中寻找最短路径或最近邻居。
数据模型级别:数据模型级别包括概念数据模型、逻辑数据模型、物理数据模型
概念数据模型(CDM):概念数据模型是用一系列相关主题域集合来描述概要数据需求,概念数据模型仅包含给定的领域和职能中基础和关键的业务实体,同时也给出实体和实体之间的关系描述。
逻辑数据模型(LDM):逻辑数据模型是对数据需求的详细描述,通常用于支持特定用法的语境中,逻辑数据模型不受任何技术或特定实施条件的约束,逻辑数据模型通常是从概念数据模型扩展而来的。
物理数据模型(PDM):物理数据模型描述了一种详细的技术解决方案,通常以逻辑数据模型为基础,与某一类系统硬件、软件和网络工具相匹配,物理数据模型与特定技术相关。
规范化:规范化是运用规则将复杂的业务转化为规范的数据结构的过程,范式化的基本目标是保证每个属性只在一个位置出现,以消除冗余或冗余导致的不一致性。规范化规则根据主键和外键整理属性,规范化规则可归类到不同规范层次,对每一个层次可应用更细的方式和规范性来搜索正确的主键和外键。每个级别由一个独立的范式组成,层次包括:
第一范式(1NF):确保每个实体都要一个有效主键,每个属性都依赖于主键,而且消除冗余的分组,以确保每个属性的原子性。
第二范式(2NF):确保每个实体都有最小主键,每个属性都依赖于完整的主键
第三范式(3NF):确保每个实体都没有隐藏的主键,每个属性都不依赖于键值之外的任何属性。
BCNF:解决了交叉的复合候选项的问题。候选项是主键或备用键,复合意味着不止一个,交叉是指键与键之间隐藏着业务规则
第四范式(4NF):将所有三元关系分解成二元关系,所有连接依赖部分主键。
第五范式(5NF):将实体内部的依赖关系分解成二元关系,所有联结依赖部分主键。
抽象化:抽象化是将细节移除,这样可以更广泛的情况下扩展适用性,同时保留概念或主题的重要和本质属性。抽象包括泛化和特化,泛化将实体的公共属性和关系分组为超类实体,而特化将实体中的区分属性分离为子类实体。
2.活动
关于数据建模的活动过程,主要包括概念数据、逻辑数据和物理数据模型的规划设计,以及维护和审查数据模型的步骤和方法。
2.1 规划数据建模
在数据模型设计工作之前,首先需要制定一个合理的工作计划。数据建模工作计划主要包括评估组织需求、确定建模标准、明确数据模型存储管理任务等。数据建模工作交付成功主要包括如下4个方面的内容:
图表:一个数据模型包含若干个图表,图表是一种以精确方式描述需求的形式。
定义:实体、属性和关系的定义对于维护数据模型的精度至关重要。
争议和悬而未决的问题:数据建模过程中经常出现无法解决的一些争议和问题。
血缘关系:指数据从哪里来,经过什么样的加工,变成了什么样的结果的脉络关系。血缘关系之所以很重要,主要有两个原因:一是有助于数据建模人员深入理解数据需求,准确定位属性来源;二是确定属性在源系统中的情况,这是验证模型和映射关系准确性的有效工具。
2.2 建立数据模型
为了更好地开展建模工作,前期通常需要收集大量材料,开展大量的分析工作并了解之前的建模情况。研究完这些之后,才能真正开始建模工作。
数据建模是一个不断迭代的过程,在建模过程中,首先要研究现有的数据模型和数据库,参考已发布的建模标准和数据标准,搜索和考虑随时提出的新的数据要求,在此基础上建模人员设计数据模型初稿;然后在与业务专家和业务分析师确认及讨论模型设计是否符合业务规则要求,同时提出修改建议,这是一个不断迭代,螺旋上升的过程,可以有两种实现方式:正向工程和逆向工程。
正向工程:正向工程是指从需求开始构建新应用程序的过程,首先需要通过建立概念模型来理解需求的范围和核心术语;然后建立逻辑模型来详细描述业务过程;最后通过具体建表语句来实现物理模型。概念数据模型建模=>逻辑数据模型建模=>物理数据模型。
概念数据模型建模:选择模型类型=>选择表示方法=>完成初始概念模型=>收集组织中最高的概念=>收集与这些概念相关的活动=>合并术语。
逻辑数据模型建:分析信息需求=>分析现有文档=>添加关联实体=>添加属性=>指定域=>指定键。
物理数据模型:解决逻辑抽象=>添加属性细节=>添加参考数据对象=>指定代理键=>逆规范化=>建立索引=>分区=>创建视图。
逆向工程:逆向工程是记录现有数据库的过程。物理数据模型=>逻辑数据模型建模=>概念数据模型建模。首先,了解现有系统的技术设计;然后,以记录现有系统满足业务的解决方案;最后,用于记录现有系统中的范围和关键术语。这是数据从业同学通常会面对的状况,业务先行,数据滞后,所以往往会对整个数据建模产生一些制约。
2.3 审核数据模型
价值实现时间、支持成本和数据模型质量验证器(记分卡)等技术可用于评估模型的正确性、完整性和一致性。
2.4 维护数据模型
数据模型需要保持最新的状态,需求或业务流程发生变化时,都需要对数据模型进行更新;好的习惯是最新的物理数据模型进行逆向工程,并确保它与相应的逻辑数据模型保持一致。
3.工具和方法
数据建模的工作是非常庞杂的,需要有多种类型的工具来帮助大家,常见的工具包括数据建模工具、模型血缘工具、数据剖析工具、元数据资料库等。
3.1 数据建模工具
入门级数据建模工具提供基本的绘图功能,以便用户可以轻松创建实体和关系;更复杂的数据建模工具支持从概念模型到逻辑模型,从逻辑模型到物理模型,从物理模型到数据库结构转换的正向工程,允许生成数据库数据定义语言;大多数还支持从数据库到概念模型的逆向工程。(其中viso是最常用的软件工具,结构图、流程图、泳道图等是最常见的图表工具)
3.2 建立血缘工具
数据血缘工具允许捕获和维护数据模型上每个属性的源结构变化的工具,通过这些工具可实现变更分析。即可使用它们来查看一个系统的变化或系统的一部分中的变化是否对另一个系统产生影响。数据流动的有向无环图(DGA),可以非常清晰的观测数据表的来源和去向
3.3 数据分析工具
数据分析工具可帮助探索数据内容,根据当前的元数据进行验证、识别数据质量和现有数据工件的缺陷。常见的BI系统、监控大屏等都是有效的工具。
3.4 元数据资料
元数据资料库是一款软件工具,用于存储有关数据模型的描述性信息,包括图表和附带的文本以及通过其他工具和流程导入的元数据;元数据资料库必须具有便于用户访问的方式,供人们查询存储库的内容。
3.5 数据建模模式
基本模式是数据建模的“螺母和螺栓”,包括解决多对多关系和构建自引用层次结构的方法;套件模式是指跨越业务人员和数据建模人员范畴的一套构建块;已公布的数据模型模式主题模型套件,可为建模设计人员提供可靠、强健、可扩展和可实现的模型设计。
3.6 行业数据模型
行业数据模型是为整个行业预建的数据模型,一些行业的数据模型包含数千个实体和属性,包括保健、电信、保险、银行、制造业等行业。
4.方法
4.1命名约定的最佳实践
数据建模和数据库设计标准是有效满足业务数据需求的指导原则,需要符合企业架构和数据架构的要求。对每种类型建模对象和数据库对象发布数据模型和数据库命名标准;逻辑名称对业务用户应具有意义,尽可能使用完整的单词,并避免使用除最熟悉的缩写之外的单词;命名标准应尽量减少跨环境的名称变化,分类词(即数量、名称和代码等属性名词中的最后一个术语)可用于从表名中区分实体和列名的属性。
4.2数据库设计中的最佳实践
在设计和构建数据库时,DBA应牢记如下PRISM设计原则:
性能和易用性:确保用户可快速、轻松地访问数据,从而最大限度地提高应用程序和数据的业务价值
可重用性:确保数据库结构在适当情况下,能被多个应用重复使用,并可用于多种目的,避免将数据库、数据结构或数据对象耦合到单个应用程序中。
完整性:无论语境如何,数据应始终具有有效的业务含义和价值,并且应始终反映业务的有效状态。实施尽可能接近数据的完整性约束,并立即检测并报告数据完整性约束的违规行为。
安全性:应始终及时向授权用户提供真实准确的数据,且仅限授权用户使用,必须满足所有利益相关方的隐私要求;强化数据安全性,执行数据的安全性约束检查,尽可能确保数据的安全性。
可维护性:确保创建、存储、维护、使用和处置数据的成本不超过其对组织的价值,以能够产生价值的成本方式执行所有数据工作。
5.数据建模设计治理
5.1数据建模的设计质量管理
数据分析人员和设计人员作为信息消费者,和数据生产者之间的中介,他们必须平衡信息消费者的数据使用要求和数据生产者的应用要求。
开发数据建模和设计标准:数据建模和数据库设计标准应包含以下内容
标准数据模型和数据库设计可交付成果的列表和描述
适用于所有数据模型对象的标准名称、可接受的缩写和非常用单词的缩写规则列表
所有数据模型对象的标准命名格式列表,包括属性和分类词
用于创建和维护这些可交付成果的标准方式的列表和说明
数据建模和数据库设计角色和职责的列表和描述
数据模型和数据库设计中捕获的所有元数据属性的列表和描述,包括业务元数据和技术元数据
元数据质量期望和要求
如何使用数据建模工具的指南
准备和领导设计评审的指南
数据模型版本控制指南
禁止或需要避免的事项列表
评审数据模型以及数据库设计质量:项目团队应对概念数据模型、逻辑数据模型和物理数据库设计进行需求评审和设计评审。审查会议议程包括审查启动模型的项目、对模型所做的更改、考虑和拒绝任何其他选项以及新模型在多大程度上符合现有的建模和架构标准。
管理数据模型版本与集成:对数据模型的每次更改,需要以时间线记录变更内容,如更改影响到了逻辑数据模型,如新的或更改了业务数据需求,则需要数据分析师或架构师审核并批准对模型的更改,记录内容:
为什么(Why)项目或情况需要变更
变更对象(What)以及如何(How)更改,包括添加了哪些表,修改或删除了哪些列等
变更批改的时间(When)以及将此变更应用于模型的时间
谁(Who)做出了变更
进行变更的位置(Where)在哪些模型中
5.2度量指标
数据模型计分卡方法,用于衡量数据模型质量,其中提供了10个数据模型质量指标,如下表所示。
四、思考与总结
数据模型搭建是理解数据和理解业务的关键,在没有直接参与业务流程设计的前提下,通过数据去了解业务,通过数据模型搭建去梳理业务流程,通过数据模型多角度认识业务。
模型是认识事务的一种方法,模型之间没有绝对的对错之分,没有完美的模型,每种模型都有各自的应用场景,如关系模型适用于OLTP系统,维度模型适合于OLAP系统,面向对象模型便于对实体间关系属性的认识。我们从不同的角度去观察数据、认识数据、构建数据体系,并能在各种场景之间进行数据模型的转化,以便时数据应用更加便捷有效。
维度建模是数据仓库开发同学最常见的模型,但是我们需要知道的是我们在进行数据仓库建模时也用到了其他模型的思想,如关系模型、面向对象建模等模型思想。我们切记不可依葫芦画瓢,要明白各种模型其中的思想方法,学会因地制宜。
钻在链接:https://mp.weixin.qq.com/s/6yvIbkbELRHkqFmmcGhrXg
以上是关于(数据建模与设计)的主要内容,如果未能解决你的问题,请参考以下文章