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

相关文章

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Java中StopWatch的使用示例详解

《Java中StopWatch的使用示例详解》stopWatch是org.springframework.util包下的一个工具类,使用它可直观的输出代码执行耗时,以及执行时间百分比,这篇文章主要介绍... 目录stopWatch 是org.springframework.util 包下的一个工具类,使用它

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

JavaScript Array.from及其相关用法详解(示例演示)

《JavaScriptArray.from及其相关用法详解(示例演示)》Array.from方法是ES6引入的一个静态方法,用于从类数组对象或可迭代对象创建一个新的数组实例,本文将详细介绍Array... 目录一、Array.from 方法概述1. 方法介绍2. 示例演示二、结合实际场景的使用1. 初始化二

C#中的 StreamReader/StreamWriter 使用示例详解

《C#中的StreamReader/StreamWriter使用示例详解》在C#开发中,StreamReader和StreamWriter是处理文本文件的核心类,属于System.IO命名空间,本... 目录前言一、什么是 StreamReader 和 StreamWriter?1. 定义2. 特点3. 用