CBF Studio业务建模示例(2)-数据模型设计

2023-11-09 17:20

本文主要是介绍CBF Studio业务建模示例(2)-数据模型设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 业务数据分析
    • 域/实例组模型定义
    • 实体数据模型定义
    • 关联数据模型定义
    • 行业标准和落地方法

业务数据分析


  简单分析下客户信息的构成要素,不论个人客户还是对公客户,都应该包含一个唯一标识号——客户号,以及客户信息开立的时间和是否有效的状态;然后才划分出个人客户信息和对公客户信息,两者间的业务属性是完全不一致的。因此我们将创建一个名为“基本客户信息”的内核实体数据模型,并且用客户号作为主键,客户号是必须满足某种格式的唯一标识号,因此定义为域数据;客户信息状态可选枚举值为“正常”、“睡眠”和“冻结”三个状态,因此设计为实例组数据。
  利用同样的数据分析方法,分析下个人客户信息应该包含哪些要素。比如说“法定名称”、“英文名称”等,这些属性需要定义为基本的字符串类型,“性别”、“客户类型”、“证件类型”等都应该设计为实例组数据,“证件生效时间”、“出生日期”等需要定义为日期类型。对公客户信息的业务数据分析交给读者。
  最后需要将业务数据进行归纳整理,按类别进行划分,并在适当的数据架构中定义。

域/实例组模型定义


  按业务分析结论,预先定义好域/实例组,下面以客户编号、客户状态为例。
客户编号
客户状态
  其中客户编号需要进行值校验,我们对其加锁,右键选择“设计ADML”。
值校验

  为化简示例,校验逻辑暂定为校验值长度,不满足13位长度的字符串则抛出错误信息。
校验值长度

实体数据模型定义


  按前文分析结论,需要为个人客户基本信息和对公客户基本信息创建一个衍生基类——客户基本信息,仅设置“客户编号”、“客户状态”和“创建时间”三个基本属性,并且设置客户编号为主键。
客户基本信息

  接下来分别定义个人客户信息和对公客户信息,两者均衍生自基本客户信息。为化简示例,仅以个人客户信息为例(暂列部分属性)。
个人客户基本信息(示意)

关联数据模型定义


  显然个人客户基本信息是不充分的,尚需要对其补充关联数据,如客户的联系方式信息,关系人信息等。以个人客户的联系信息为例。创建个人客户联系信息,并与个人客户基本信息进行数据关联,数据关系为“N:1”。
个人客户联系信息

  按同样的步骤创建关系人信息、非居民纳税信息、财务信息等,那么从个人客户基本信息的角度来看,完整的个人客户基本信息模型定义应该如下图所示。
个人客户基本信息

行业标准和落地方法


  先简单介绍下行业标准中对数据模型的定义:

  • A:可以用九大数据概念来描述所有金融服务信息;给B级的结构和内容定义了约束。
  • B:用层次化的概念术语来组织业务信息;不关心信息之间在具体应用中进行交互的业务规则;采用业务人员熟悉的语言。
  • C:用ER图描述业务信息;不考虑实施层面的约束,只维护逻辑视图;对各方面利益相关者的特有视图进行统筹整合。
  • C’:用ER图描述应用数据;考虑具体实施层面的约束,引入派生数据或去范式化的数据;允许可控的数据冗余
  • D:描述物理数据结构;考虑系统部署层面的约束。

  将标准翻译一下并结合CBF Studio工具上的使用可以描述为:

  • A级模型可以简单解释为即数据的基本概念,这些基本概念来自业务需求的描述,如“客户信息包含对私客户信息和对公客户信息,客户信息包含客户号,开立时间……”,那么从这段描述中我们可以整理出至少三个基本概念“对私客户信息”、“对公客户信息”以及“客户号”,其中“客户号”作为不可细分的数据定义,且必须要遵守既定的格式标准,那么它就应当被定义为数据标准,而“对私客户信息”和“对公客户信息”的数据应当持久化到数据库中,因此它们需要被定义为实体数据模型。
  • B级模型可以解释为对数据模型进行属性补充,补充的属性服务于业务设计。以上面的客户信息为例,“对私客户信息”和“对公客户信息”中均需要包含“客户号”属性,并且“对私客户信息”需要包含“客户姓名”属性,“对公客户信息”需要包含“企业名称”属性。其中“客户号”作为数据标准是可以被复用的,这也是行业标准中提倡的数据沉淀。
  • C级模型可以简单解释为除业务属性之外,还需要补充实体数据间的关系,如个人客户基本信息和个人客户联系人信息之间就存在着“1:N”的关系。
  • C’级模型简单解释为除业务设计必须的属性外,还允许补充应用设计所需的属性,这些属性仅为应用设计提供支撑,并且需要对数据模型进行模式化处理,将共有属性进行泛化处理,形成具有衍生关系的模型结构。回到“对私客户信息”和“对公客户信息”案例,两者均属于“客户信息”范畴,且均具有“客户号”作为唯一识别码,因此需要抽象出“客户信息”数据模型作为“对私客户信息”和“对公客户信息”的公共抽象层,也即两者均衍生自“客户信息”。
  • D级模型可以简单解释为将实体数据模型转换为可执行的数据库操作脚本,将模型设计落实到数据库设计中。这个过程CBF Studio已经自动实现了,无需用户关注。

  总结起来业务数据模型的设计基本上达到C’即可满足设计需求,并且数据模型的设计过程可大致划分为下述几个步骤:

  • 1.根据业务需求描述提取出基本模型(数据标准、实体数据模型);
  • 2.根据业务需求补充基本模型的业务属性;
  • 3.根据业务需求补充实体数据关系;
  • 4.使用数据范式以及模型泛化方法对数据模型进行衍生设计;
  • 5.根据应用设计需求补充应用属性。

  (更多关于可视化建模开发工具的介绍可以关注领驭框架(北京)软件有限公司的微信公众号和我自己的订阅号,或者到公司主页(www.eframesoft.com)查询。)
领驭框架软件
Java基友圈

这篇关于CBF Studio业务建模示例(2)-数据模型设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/377514

相关文章

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Java Spring ApplicationEvent 代码示例解析

《JavaSpringApplicationEvent代码示例解析》本文解析了Spring事件机制,涵盖核心概念(发布-订阅/观察者模式)、代码实现(事件定义、发布、监听)及高级应用(异步处理、... 目录一、Spring 事件机制核心概念1. 事件驱动架构模型2. 核心组件二、代码示例解析1. 事件定义

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

mysql中insert into的基本用法和一些示例

《mysql中insertinto的基本用法和一些示例》INSERTINTO用于向MySQL表插入新行,支持单行/多行及部分列插入,下面给大家介绍mysql中insertinto的基本用法和一些示例... 目录基本语法插入单行数据插入多行数据插入部分列的数据插入默认值注意事项在mysql中,INSERT I

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

MyBatis ResultMap 的基本用法示例详解

《MyBatisResultMap的基本用法示例详解》在MyBatis中,resultMap用于定义数据库查询结果到Java对象属性的映射关系,本文给大家介绍MyBatisResultMap的基本... 目录MyBATis 中的 resultMap1. resultMap 的基本语法2. 简单的 resul