范式建模

范式建模在实际的应用中有:第一范式(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. SAP MM ME56不能为审批后的PR分配供应源?
  2. JavaScript的AMD规范
  3. python同步异步_python中Tornado的同步与异步I/O的介绍(附示例)
  4. lisp语言是最好的语言_Lisp可能不是数据科学的最佳语言,但是我们仍然可以从中学到什么呢?...
  5. EISCONN的故事
  6. 36岁程序员感慨:天天加班压力太大,有200万存款能转行了吗?
  7. 小米电动车官宣!雷军:今晚发布会跟大家仔细说
  8. ubuntu 18.10增加和设置Swap交换分区
  9. 干货 | 各大AI研究院共35场NLP算法岗面经奉上
  10. mac pycharm汉化(附带汉化包)
  11. 计算机网络第七版课后习题答案(第一章)(20210321)
  12. ubuntu屏幕放大+复制粘贴共享
  13. 对数(log)的换算公式
  14. CSS中vertical-align和text-align属性详解(使用场景、举例、注意点)、display:table-cell使用详解(基础介绍和使用例子)。
  15. 解析阿里“聚石塔”产品
  16. php 百度网盘上传文件大小限制吗,百度云存储,curl_百度云存储如何上传数G超大文件(视频类)和防盗链等一系列问题,百度云存储,curl - phpStudy...
  17. Android EditText简单自定义边框样式
  18. 烧录esp32 并用oled显示
  19. [2022 强网杯] devnull 复现
  20. Android基础面试题

热门文章

  1. C# 三种方式实现模拟键盘按键
  2. xcodewarning :no rule to process file xxx解决
  3. 用MS切面,构建真空层,BFDH看主要的生长面
  4. 微信小程序之图片删除
  5. CocosCreator 经典飞刀小游戏 (实战)
  6. Linking Structure and Function in Macroscale Brain Networks——从宏观尺度脑网络的角度看结构--功能关系
  7. GDOI2017再次旅游滚粗记
  8. eclipse-spark开发环境
  9. cosmos源码分析之一概述
  10. Mac常用软件推荐(长期更新)