数据建模方法论及实施步骤
了解数据建模之前首先要知道的是什么是数据模型。数据模型(Data Model)是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。
一、概要:数据建模简介
数据基本用于两种目的:1、操作型记录的保存2、分析型决策的制定。简单地说就是操作型系统保存数据,分析型系统使用数据;前者反映数据的最新状态,后者反映数据一段时间的状态变化。操作型系统简称为OLTP(On-Line Transaction Processing)联机事务处理,分析型系统简称为OLAP(On-Line Analytical Processing)联机分析处理。在OLTP场景中,常用的是使用实体关系模型(ER)来存储,从而在事务处理中解决数据的冗余和一致性问题。在OLAP场景中,有多种建模方式有:ER模型、星型模型和多维模型。
数据建模是一种用于定义和分析数据的要求和其需要的相应支持的信息系统的过程。从需求到实际的数据库,有三种不同的类型。用于信息系统的数据模型作为一个概念数据模型,本质上是一组记录数据要求的最初的规范技术。数据首先用于讨论适合企业的最初要求,然后被转变为一个逻辑数据模型,该模型可以在数据库中的数据结构概念模型中实现。一个概念数据模型的实现可能需要多个逻辑数据模型。数据建模中的最后一步是确定逻辑数据模型到物理数据模型中到对数据访问性能和存储的具体要求。数据建模定义的不只是数据元素,也包括它们的结构和它们之间的关系。
1) 概念数据模型(Conceptual Data Model)
简称概念模型 ,主要用来描述世界的概念化结构。概念数据模型是最终用户对数据存储的看法,反映了最终用户综合性的信息需求,它以数据类的方式描述企业级的数据需求,数据类代表了在业务环境中自然聚集成的几个主要类别数据。概念数据模型的目标是统一业务概念,作为业务人员和技术人员之间沟通的桥梁,确定不同实体之间的最高层次的关系。
2) 逻辑数据模型(Logical Data Model)
简称数据模型,这是用户从数据库所看到的模型,是具体的DBMS所支持的数据模型,如网状数据模型(Network Data Model)、 层次数据模型 (Hierarchical Data Model)等等。 此模型既要面向用户,又要面向系统 ,主要用于 数据库管理系统 (DBMS)的实现。逻辑数据模型的内容包括所有的实体和关系,确定每个实体的属性,定义每个实体的主键,指定实体的外键,需要进行范式化处理。逻辑数据模型的目标是尽可能详细的描述数据,但并不考虑数据在物理上如何来实现。逻辑数据建模不仅会影响数据库设计的方向,还间接影响最终数据库的性能和管理。
3) 物理数据模型(Physical Data Model)
简称物理模型 ,是面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS 有关,而且还与操作系统和硬件有关。每一种逻辑数据模型在实现时都有起对应的物理数据模型。DBMS为了保证其独立性与可移植性,大部分物理数据模型的实 现工作又系统自动完成,而设计者只设计索引、聚集等特殊结构。物理结构图显示物理数据模型是在逻辑数据模型的基础上,考虑各种具体的技术实现因素,进行数据库体系结构设计,真正实现数据在数据库中的存放。
二、方法:数据建模常用模型
1)D-R模型
D-R模型(Entity-relationship model)实体关系模型,E-R模型的构成成分是实体集、属性和联系集。其表示方法如下:(1) 实体集用矩形框表示,矩形框内写上实体名。(2) 实体的属性用椭圆框表示,框内写上属性名,并用无向边与其实体集相连。(3) 实体间的联系用菱形框表示,联系以适当的含义命名,名字写在菱形框中,用无向连线将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型,即1—1、1—N或M—N。如图1-1所示。

2)多维模型
它是维度模型的另一种实现。当数据被加载到OLAP多维数据库时,对这些数据的存储的索引,采用了为维度数据涉及的格式和技术。性能聚集或预计算汇总表通常由多维数据库引擎建立并管理。由于采用预计算、索引策略和其他优化方法,多维数据库可实现高性能查询。这种模型可以以星型模式,雪花模式,或事实星座模式的形式存在。
3)星型模型
它是维度模型在关系型数据库上的一种实现。它是多维的数据关系,它由事实表(Fact Table)和维表(Dimension Table)组成。每个维表中都会有一个维作为主键,所有这些维的主键结合成事实表的主键。事实表的非主键属性称为事实,它们一般都是数值或其他可以进行计算的数据。该模型表示每个业务过程包含事实表,事实表存储事件的数值化度量,围绕事实表的多个维度表,维度表包含事件发生时实际存在的文本环境。这种类似于星状的结构通常称为'星型连接'。其重点关注用户如何更快速地完成需求分析,同时具有较好的大规模复杂查询的响应性能。如图1-2所示。

4)雪花模型
它是当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。如图1-3所示。

三、方案:数据建模六步骤
数据建模,通俗地说,就是通过建立数据科学模型的手段解决现实问题的过程。数据建模也可以称为数据科学项目的过程,并且这个过程是周期性循环的。具体可分为六大步骤,如图2-1所示。

1) 收集业务需求与数据实现:在开始维度建模工作之前,需要理解业务需求,以及作为底层源数据的实际情况。通过与业务方沟通交流、查看现有报表等来发现需求,用于理解他们的基于关键性能指标、竞争性商业问题、决策制定过程、支持分析需求的目标。同时,数据实际情况可通过与数据库系统专家交流,了解访问数据可行性等。
2) 选择业务过程:业务过程是组织完成的操作型活动。业务过程时间建立或获取性能度量,并转换为事实表中的事实。多数事实表关注某一业务过程的结果。过程的选择非常重要的,因为过程定义了特定的设计目标以及对粒度、维度、事实的定义。
3) 声明粒度:声明粒度是维度设计的重要步骤。粒度用于确定某一事实表中的行表示什么。在选择维度或事实前必须声明粒度,因为每个候选维度或事实必须与定义的粒度保持一致。在从给定的业务过程获取数据时,原子粒度是最低级别的粒度。强烈建议从关注原子级别粒度数据开始设计,因为原子粒度数据能够承受无法预期的用户查询。
4) 确认维度:维度提供围绕某一业务过程事件所涉及的'谁、什么、何处、何时、为什么、如何'等背景。维度表包含分析应用所需要的用于过滤及分类事实的描述性属性。牢牢掌握事实表的粒度,就能够将所有可能存在的维度区分开来。
5) 确认事实:事实,涉及来自业务过程事件的度量,基本上都是以数据值表示。一个事实表行与按照事实表粒度描述的度量事件之间存在一对一关系,因此事实表对应一个物理可观察的事件。在事实表内,所有事实只允许与声明的粒度保持一致。
6) 部署方式:选择一种维度模型的落地方式。既可以选择星型模型,部署在关系数据库上,通过事实表及通过主外键关联的维度表;也可以选择多维模型,落地于多维数据库中。
相关文章:
数据建模方法论及实施步骤
了解数据建模之前首先要知道的是什么是数据模型。数据模型(Data Model)是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。 一、概要:数据…...
AUTOSAR知识点 之 COM (一):基础知识
目录 1、概述 1.1、简介 1.2、各模块依赖关系 1.2.1、PDUR关系 1.2.2、RTE 2、SPEC解读...
自媒体品牌宣传策略注意哪些,是怎么种草的
众所周知,小红书平台有着极其强大的种草能力。不论新品牌孵化,还是大品牌扩张,都会将目光投注到这里,那么小红书的品牌宣传策略究竟是怎样的呢。 一、聚焦种草能力 前面已经提到了,小红书平台是一个以“种草”为特色的…...
网络带宽管理
网络某一部分的带宽使用过多,可能会影响整个网络的性能,带宽问题甚至会影响业务关键型服务并导致网络停机。在企业中保持稳定的网络性能可能具有挑战性,因为采用数字化的网络可扩展性和敏捷性应该与组织的发展同步。随着基础设施的扩展、新应…...
SpringCloud(27. Redis 和 ZK 分布式锁)
上一篇 :26.分布式服务框架Dubbo面试题简析 1. redis 分布式锁 官方叫做 RedLock 算法,是 redis 官方支持的分布式锁算法。这个分布式锁有 3 个重要的考量点: 互斥(只能有一个客户端获取锁)不能死锁容错(…...
运行时栈帧结构与方法调用
1 运行时栈帧结构 Java虚拟机以方法作为最基本执行单元,“栈帧”则是用于支持虚拟机进行方法调用和方法执行背后的数据结构。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。 1.1 局部变量表 局部变量表的容量以变量槽为最小单位。 Java…...
VSCode +gdb+gdbserver远程调试arm开发板
一、下载编译器 从ARM官网下载gcc-arm编译器,编译器中自带gdb和gdbserver,可以省去自己编译。 注:gdb是电脑端程序,gdbserver是arm开发板程序 arm官网链接:https://developer.arm.com/downloads/-/arm-gnu-toolchain-d…...
阿里云大学考试python中级题目及解析-python高级
阿里云大学考试python高级题目及解析 1.以上代码输出结果为 a [1,2,3,None,(),[],] print(len(a))A.4 B.5 C.6 D.syntax error C 列表中元素可以存储任意数据类型 2.将字符串s 中的字母a替换为字母,以下代码正确的是 A.s.swap(“b”,“a”) B.s.r…...
基于FPGA的车牌识别
基于FPGA进行车牌识别 基于FPGA进行车牌识别 1. 文件说明2. 程序移植说明3. 小小的编程感想 本项目的原理讲解视频已经上传到B站“基于FPGA进行车牌识别”。 本项目全部开源,见我本人的Github仓库“License-Plate-Recognition-FPGA”。 1. 文件说明 小技巧&…...
Qt - 进程/线程 补充进阶
Qt - 进程/线程 补充进阶 多线程quit / eixt / terminate QThread例子tdicethread 类.h.cpp widget 类.h.cpp 线程同步 多线程 quit / eixt / terminate quit 应用程序或线程安全的取消事件处理队列的执行,并随后使线程退出(如果只希望结束线程并保证它…...
spring笔记
spring 和 springboot的区别 自动配置原理 beanFactory接口和ApplicationContext接口 两个都是 IOC 容器 ApplicationContext接口是BeanFactory接口实现类的子类 功能: ApplicationContext扩展BeanFactory BeanFactoryApplicationContext控制反转国际化支持 …...
最大熵模型
最大熵模型(maximum entropy model)由最大熵原理推导实现 最大熵原理 最大熵原理是概率模型学习的一个准则。最大熵原理认为,学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型时最好…...
微服务中网关的配置
一、添加 Spring Cloud Gateway 依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId> </dependency>二、配置网关路由 在application.yaml中配置如下内容:…...
Linux基本指令实现4及热键指令详解
目录 Linux热键补充: 1.bc指令: Tab键的智能补充: ctrlc键: uname指令: lscpu指令: lsmem指令: df -h指令: 关机指令: 扩展指令: Linux热键补充&#…...
系统调用与API
系统调用介绍 什么是系统调用 为了让应用程序有能力访问系统资源,也为了让程序借助操作系统做一些由操作系统支持的行为,每个操作系统都会提供一套接口,以供应用程序使用。系统调用涵盖的功能很广,有程序运行所必需的支持…...
OpenPCDet系列 | 5.4.1 DenseHead中的AnchorGenerator锚框生成模块
文章目录 AnchorGenerator模块AnchorGenerator.generate_anchors函数 AnchorGenerator模块 首先,根据点云场景将其划分为一个个grid,这个grid size是可以通过配置文件设定的点云场景方位和voxel大小计算出来的。 POINT_CLOUD_RANGE: [0, -39.68, -3, 6…...
【开发者指南】如何在MyEclipse中使用HTML或JSP设计器?(上)
MyEclipse v2022.1.0正式版下载 一、HTML & JSP 可视化设计器 本文简要介绍了 MyEclipse HTML 和 JSP Web 设计器的概念、功能和基本操作过程。这两个设计器具有相似的功能和相同的操作模型,但本文为专门针对其类型的内容。本文档中的示例是使用 MyEclipse HT…...
Node开发Web后台服务
简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。 能方便地搭建响应速度快、易于扩展的网络应用&#…...
Linux下对mmap封装使用
Linux下对mmap封装使用 1、mmap简介2、Linux下mmap使用介绍2.1、mmap函数2.2、munmap函数 3、对mmap进行封装4、对封装类MEM_MAP进行测试5、mmap原理6、源代码下载 1、mmap简介 mmap即memory map,是一种内存映射文件的技术。mmap可以将一个文件或者其它对象映射到进…...
深入了解云计算:发展历程、服务与部署模型、未来趋势与挑战
开篇博主 bluetata 的观点:PaaS 服务必将是未来10年云计算权重最高的趋势(05/02/2023 15:32) 文章目录 一、前言二、认识了解云计算2.1 什么是云计算2.1.1 维基百科上的云计算定义2.1.2 NIST 标准云计算定义2.1.3 如果被面试如何解释云计算 2…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
