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

范式建模

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

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

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

假设有表如下:

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

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

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

有表如下:

学号姓名系名系主任课名分数
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)和星型模型优点的建模方法。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值