聚合架构:面向数字生态的构件化企业架构
上QQ阅读APP看书,第一时间看更新

5.3 常见的数据建模方法

读者可以通过一些专著,以及很多系统分析、软件工程的教材来广泛地了解数据模型的建模方法。在数据方面多投入时间是非常有必要的,数据模型的质量可以说是业务模型整体质量的基础,对后续设计的影响非常大。本节将介绍两种比较常见的数据建模方法。

5.3.1 FSDM

FSMD(Financial Services Data Model)诞生于20世纪90年代,是IBM针对金融行业核心应用系统或者数据仓库推出的数据模型。作为大型主机及相关开发服务的主要供应商,IBM在这方面有独特优势,而金融行业也曾长期是大型主机的VIP级用户,所以,IBM得以根据其丰富的行业经验设计出这一很经典的行业级数据模型。

FSDM是一种分层级的、逐级细化的数据模型,包括ABCD四个大的层级,具体分层如图5-6所示。

图5-6 FSDM数据模型的层级

顶级分类指的是A层级的概念级模型。FSDM囊括了银行约80%的业务数据,并将数据分为九大类,分别是关系人、合约、条件、产品、地点、分类、业务方向、事件、资源项目,这九大类的具体定义如表5-1所示。

表5-1 FSDM九大类简介

这个框架可以将数据实体、数据属性进行归类,形成统一的企业级逻辑模型。当然,这是IBM的经验总结,并不是唯一解,其他行业也需要逐步建立自己的参考模型,这有助于企业间定义服务接口,做好生态连接。

对于如何构建符合上述分层分类原则的数据模型,IBM也给出了一套方法,如图5-7所示。

图5-7中的数据建模方法可以视为一个自顶向下的过程,在A级的九个大领域约定了所有数据的高阶分类,在B级基于业务人员的解释、概念、印象等,形成了一个初步的、分级的数据聚类。这就是“层次化的概念术语”的含义,将业务信息进行组织,便于初步认识数据关系,由于采用的是业务人员的视角,因此也是便于业务人员理解的。之后,高阶B要逐步细化为完整B,这样分类模型才能比较精确。不过这个精确也是相对的,因此我们称之为“概念模型”,或者读者也可以将其理解为基于概念的模型。

到了C级就是了解数据模型的读者比较熟悉的数据实体了,也就是实体-联系图(Entity Relationship Diagram,ER图)展现的内容。数据实体大致可分为基础实体(一个数据主题域中最重要的实体)、扩展实体(与基础实体相关联,补充描述基础实体的数据实体)、关系实体(表达实体间关系的实体,主要用于处理多对多关系)。当然,数据实体在识别上难以一次到位,也有一个从高阶C到完整C的过程。高阶C依然是业务视角的,只需要识别实体即可,不需要到属性级。笔者在元模型中提及的业务对象就属于高阶C。

图5-7 IBM的数据模型层级介绍

业务人员与数据建模人员看到的“实体”是不一样的,以业务合同为例,一个业务合同可能有几十个甚至上百个业务信息。业务人员有可能看到的就是一个“合同”实体,数据建模人员可能看到的是参与人、产品、合同、担保等不同的“实体”。对这个过程加以利用,也是一个业务与技术“融合”的机会。

C模型的范式要求比较高,不可以冗余,不可以有派生数据,也就是所谓的计算之后的结果,也即基础数据。但是也有特例,比如“余额”。严格来说,“发生额”是基础数据,比如每次取了多少钱、存了多少钱,“余额”应该是派生数据,是“发生额”的累次汇总,但是,在FSDM的C模型中,“余额”是作为基础数据的。所以,有时候,基础数据的定义也未必那么严格,建模时需要做必要的权衡。

由于范式要求太高,在实际使用时难免在各个领域需要做些拓展,有些拓展不是靠定义子实体就可以完全解决的,也有些数据会出现冗余。所以在应用架构设计阶段,为了满足不同领域的需要,会做一定的“降范”处理,也就是根据领域需要设计可以冗余、可以有更多派生数据的C′模型,以增加模型的灵活性和适用性。由于我们是在C模型的基础上增加的属性,因而不会破坏C模型的逻辑。

最后才是数据库设计阶段,在C′模型的基础上,综合数据的存储、读取、技术数据等因素,进行D模型设计,指导物理库表设计。

这是一个完整的设计方法,实际上,从概念级到逻辑级再到物理级是很多数据建模的书和文章主张的标准建模方式,但是在实际工作中,时常见到的是为了“方便”“快捷”而在大致了解了需求之后直接进入库表设计,也就是快速走向D模型建设。这之后给出的ER图实际上就是库表关系图,业务数据、非业务数据都混杂在一起,等之后感觉到系统处理效率低,想完善或重构的时候,才发现库表逻辑几乎无法理解,又得重新梳理。从库表反推逻辑模型是一个痛苦甚至难以完成的任务,所以,有时候“快”可能只是把“慢”留给了别人。

传统方法处处显得都很“慢”,但是现在数据治理越来越重要,尤其是主数据的识别与管理。虽然IBM的方法中没有给出单独的主数据管理,但是主数据的识别本身可以结合在数据建模过程中。另外,在数据资产管理方面,传统方法的确略显单薄,尤其是在“数据中台”兴起后。但是,数据建模依然是数据资产管理的基础,数据资产的识别、分类仍旧是数据建模的识别、分类过程,只是在对数据资产的利用、评估方面进行了创新。

5.3.2 通用数据建模方法

除了IBM的方法论,还有更为通用的数据建模方法论,可适用于更多行业。该方法论将数据的顶级分类聚合成六大领域,如表5-2所示。

表5-2 六大领域简介

建模操作方法类似,也是将数据建模过程划分为概念级、逻辑级和物理级,逐层识别实体和属性,描述实体间关系,但是在实体的定义、关系描述方面与IBM的方法略有区别。比如,IBM中数据实体分为基础实体、扩展实体和关系实体三类,但在这一方法论中只有强实体和弱实体两类。

关于详细建模方法,推荐读者阅读Steve Hoberman所著的《数据建模经典教程》一书,本书不再赘述。

FSDM和通用数据建模方法都比较适用于关系型数据库的逻辑设计。除此之外,也还有其他的数据建模方法。通常来讲,技术实现一般不会影响建模的逻辑表达,但是有些特殊类型的技术实现方式确实要求逻辑模型的建模方法也有所不同,比如图数据库的建模方法就与关系型数据库的建模方法不同。

总之,多学习些数据建模、数据架构、数据治理方面的知识,对业务建模工作大有裨益。