范式建模

范式建模在实际的应用中有:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)、第五范式(5NF)

在企业范式建模中,一般追求三范式,即:

  • 属性不可分割
  • 不存在部分函数依赖
  • 不存在传递函数依赖
属性不可分割

假设有表如下:

班级 物品
3年E班 30张桌子
3年E班 30张椅子

很显然这个表不符合第一范式,因为列中的数据不是原子数据项,可以再分割。修改后如下:

年级 班级 数量 物品
3 E 30 桌子
3 E 30 椅子
不存在部分函数依赖

有表如下:

学号 姓名 系名 系主任 课名 分数
1022211101 李小明 经济系 王强 高等数学 95
1022211101 李小明 经济系 王强 大学英语 87
1022211101 李小明 经济系 王强 普通化学 76
1022211102 张莉莉 经济系 王强 高等数学 72
1022211102 张莉莉 经济系 王强 大学英语 98
1022211102 张莉莉 经济系 王强 计算机基础 88
1022211101 高芳芳 法律系 刘玲 高等数学 82
1022211101 高芳芳 法律系 刘玲 法学基础 82

假设这个表中学号与课名为主键,那么分数完全依赖于学号与课名,但是姓名,系名,系主任不完全依赖于学号与课名,那么修改如下:

表一:

学号 课名 成绩
1022211101 高等数学 95
1022211101 大学英语 87
1022211101 普通化学 76
1022211102 高等数学 72
1022211102 大学英语 98
1022211102 计算机基础 88
1022211101 高等数学 82
1022211101 法学基础 82

表二:

学号 姓名 系名 系主任
1022211101 李小明 经济系 王强
1022211102 张莉莉 经济系 王强
1022211101 高芳芳 法律系 刘玲
不存在传递函数依赖

在表二中,我们可以通过学号推导学生属于那个系,然后推导出系主任,但是我们不能直接通过系主任推导出学号。这就表示学号+学生姓名+系名与系名+系主任是两对信息,传递依赖的是系名,所以可以修改为:

表三:

系名 系主任
经济系 王强
法律系 刘玲

表四:

学号 姓名 系名
1022211101 李小明 经济系
1022211102 张莉莉 经济系
1022211101 高芳芳 法律系

维度建模

维度建模就简单说一下就是事实表+维度表的不同组合方式。事实表是存放事实的表,维度表是存放维度的表,相关概念可以去什么是事实,什么是维度看。

目前组合方式主要有三种:

  • 星型模型
  • 雪花模型
  • 星座模型
星型模型


核心一个事实表,连接着多个只有一个层次维度表。

雪花模型


雪花模型与星型模型的区别在于维度表的层次。

星座模型


星座模型与其他两个模型的区别在于事实表的数量,而星座模型也是最贴切数据仓库的模型。毕竟维度表可以复用,所以星型模型和雪花模型与星座模型不冲突。

在数据仓库建模中使用维度建模而不使用范式建模的原因是为了减少join,减少join就是减少shuffle,可以带来直观的性能提升。

在数据仓库的建设中,层次越向上越趋向于星型模型。

Data Vault

Data Vault模型是一种中心辐射式模型,其设计重点围绕着业务键的集成模式。这些业务键是存储在多个系统中的、针对各种信息的键(最好是主密钥),用于定位和唯一标识记录或数据。


Data Vault由中心表(Hub),链接表(Link)和卫星表(satellite)组成。

Data Vault是面向细节的,可追踪历史的,一组有连接关系的规范化的表的集合。 这些表可以支持一个或多个业务功能。
它是一种综合了第三范式(3NF)和星型模型优点的建模方法。

数据仓库灵魂30问之数仓有哪几种建模思想?相关推荐

  1. 大数据/数仓面试灵魂30问

    1.什么是数据仓库?如何构建数据仓库?(如果这个问题回答的好,后面很多问题都不需要再问) 2.如何建设数据中台?可简单说下理解与思路 3.数据仓库.数据中台.数据湖的理解 4.传统数仓的程度(建模工具 ...

  2. 大数据/数仓面试灵魂30问(转)

    1.什么是数据仓库?如何构建数据仓库?(如果这个问题回答的好,后面很多问题都不需要再问) 2.如何建设数据中台?可简单说下理解与思路 3.数据仓库.数据中台.数据湖的理解 4.传统数仓的程度(建模工具 ...

  3. 大数据面试3分钟自我介绍_面试真经 | 大数据/数仓面试灵魂30问(附答案 | 已斩offer)...

    作者:7.7 编辑:紫霞仙子 云神原文: 作者寄语: 最近正好在找工作,看到社区发的面试文章受益匪浅().梳理文章每一个题目后,顺利拿到offer,故总结梳理答疑整理了这篇文章,以表感激,同时希望能帮 ...

  4. 数据仓库系列(三)数仓分层的意义价值及如何设计数据分层

    文章目录 一.前言 二.数仓建模 三.数仓分层 四.数仓的基本特征 五.数据仓库用途 六.数仓分层的好处 七.如何分层 一.前言 现在说数仓,更多的会和数据平台或者基础架构搭上,已经融合到整个基础设施 ...

  5. 数据仓库系列(四)数仓架构以及多维数据模型的设计

    文章目录 一.前言 二.数据仓库的定义 三.数据仓库的特点 四.数据仓库的作用 五.数据仓库的架构 六.数据仓库的要求 七 .数据仓库分层 八.数据仓库四个层次的划分 8.1 ODS层 8.2 PDW ...

  6. 数据中台 第7章 数据体系建设:数仓分层设计、数据建模

    数据中台数据体系是在全域原始数据的基础上,进行标准定义及分层建模,数据体系建设最终呈现的结果是一套完整.规范.准确的数据体系,可以方便支撑数据应用. 中台数据体系应具备以下特征: ·覆盖全域数据:数据 ...

  7. 大数据基础知识——数仓的搭建(维度建模)

    数据仓库 文章目录 数据仓库 数据仓库的介绍: 数据仓库的概念: OLTP和OLAP区别: 数据仓库的特点: 面向主题: 数据集成: 非易失: 时变: 数据仓库系统架构 系统结构图 源数据 ETL 数 ...

  8. 数仓(二)关系建模和维度建模

    上一篇我们了解了OLTP和OLAP数据处理类型.OLTP处理的是关系模型表即实体-关系表ER,而OLAP处理的是维度模型表. 数仓(一)简介数仓,OLTP和OLAP 本篇我们来讨论一下数仓中两种建模的 ...

  9. 吴乙己的数仓指南_5.1维度建模技巧之SCD2类型缓慢变化维搭建

    目录 0.引言 1.SCD类型 2.举个栗子 3.SCD2 3.1 什么是SCD2 3.2 如何使用SCD2 3.3 如何实现SCD2 3.3.1 获取维度基准 3.3.2 按情况分治打标 3.3.3 ...

最新文章

  1. ASP+COM 组件开发
  2. 面试突击 005 | Redis 是如何实现高可用的?它的实现方式有哪些?「视频版」
  3. C语言博客作业---嵌套循环
  4. 分享bootstrap3.0.2响应式模板-第三弹[Metronic_Admin]
  5. CentOS 6.3 编译安装搭建LNMP(迎接端午节,首发)
  6. 基于redis集群实现的分布式锁,可用于秒杀,定时器。
  7. (5)Redis主从同步原理及详细配置
  8. 浅谈Netty中ServerBootstrap服务端源码(含bind全流程)
  9. 微信跳一跳小游戏源码
  10. 出现ERROR 1698 (28000): Access denied for user ‘root‘@‘localhost‘ 的解决方法
  11. 记一次批量定时抓取微信公众号文章的实现
  12. RTL8370N 8口千兆交换机 PCB图纸方案资料 和芯片的datasheet
  13. 使用webpack搭建react项目
  14. Qt将选中的字体加粗下划线
  15. idc数据中心托管服务器需要注意的事项有哪些
  16. 智慧医院(iHospital)_乳腺健康专栏
  17. 模拟登陆CSDN——就是这么简单
  18. GIS添加XY坐标操作
  19. 3.1本征值和线性方程组
  20. 围剿Viking、专杀工具的较量——继初遇Worm.Viking.dy

热门文章

  1. python镜像加载_少为人知的Python图片处理,赶紧收藏起来
  2. realvnc viewer安卓下载,realvnc viewer安卓下载工具加使用方法
  3. 【Android 应用开发】使用蒲公英 SDK 收集崩溃日志信息 ( 导入依赖 | 申请 Key | 集成代码 | 清单文件配置 | 手动上传日志 | 手动检查更新 )
  4. 【运维面试】面试官:mysql主从延迟是怎么处理的
  5. html5 框架angularjs,5款最好用的AngularJS程序构建框架
  6. PMBOK泛读(第六章) - 项目进度管理
  7. SPAD器件仿真(一)器件参数提取和dark下的I-V曲线仿真
  8. git使用MERGING处理
  9. 键盘打字游戏简要代码
  10. [ 数据通信面试篇 ] 数通面试题大集合(详解),看完直怼面试官(四)