数据仓库的数据结构,到底是星型、雪花模型、还是三范式?三范式和星型、雪花是什么关系?是不是包含他们

2022-12-28 21:20

数据仓库的数据结构,到底是星型、雪花模型、还是三范式?三范式和星型、雪花是什么关系?是不是包含他们?
2个回答

1. 星型模式

星形模式(Star Schema)是最常用的维度建模方式。星型模式是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。星形模式的维度建模由一个事实表和一组维表成,且具有以下特点:a. 维表只和事实表关联,维表之间没有关联;b. 每个维表主键为单列,且该主键放置在事实表中,作为两边连接的外键;c. 以事实表为核心,维表围绕核心呈星形分布;

2. 雪花模式

雪花模式(Snowflake Schema)是对星形模式的扩展。雪花模式的维度表可以拥有其他维度表的,虽然这种模型相比星型更规范一些,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维表,性能也比星型模型要低。所以一般不是很常用

雪花模式

3.星座模式

星座模式是星型模式延伸而来,星型模式是基于一张事实表的,而星座模式是基于多张事实表的,而且共享维度信息。前面介绍的两种维度建模方法都是多维表对应单事实表,但在很多时候维度空间内的事实表不止一个,而一个维表也可能被多个事实表用到。在业务发展后期,绝大部分维度建模都采用的是星座模式。

星座模型

首先,你说的数据结构设计包括了两种,一个是数据库设计,一个是数据仓库设计

针对数据库设计一般用的是三范式。因为数据库的数据会用于频繁的增删改查,因此出于减少系统压力考虑,会尽量减少冗余,从而提升系统频繁读写数据的效率。

而星型、雪花型则是数据仓库的设计模式。与数据库的使用目的不同,数据仓库更多的是存储历史数据,不会有频繁的读写。其主要是用于从历史数据中进行分析,进而获取指导性的生产指引,生成报表等等。而这时数据库设计中的范式拆表以提升效率的方法这时却会适得其反(因为历史数据的量相当庞大,而往往数据分析、BI等又需要从多个表中检索数据来进行,这时大表之间的频繁交互会使分析效率变得相当低,所以往往会考虑合并表的方法,故意制造冗余)。

当然,以我个人的经验,就算是数据库设计,也很少会把表设计到三范式。因为一旦表的数据量变得庞大时,表与表之间交互的时间代价会比冗余数据的代价大得多。
相关问答
数据仓库的模型有哪些?
1个回答2022-09-25 10:59
1. 星型模式 星形模式(Star Schema)是最常用的维度建模方式。星型模式是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。星形模式的维度建模由一个事实表和一组维表成,且具有以...
全文
数据库模型和模式的区别
2个回答2022-07-23 14:31
数据模型是对实体,数据模式是对数据
数据仓库的数据模型
1个回答2023-08-25 10:46
1. 星型模式 星形模式(Star Schema)是最常用的维度建模方式。星型模式是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。星形模式的维度建模由一个事实表和一组维表成,且具有以...
全文
什么是数据仓库中的三维数据模型
1个回答2022-09-25 20:29
多维模型,而不只限定在三维。
数据库中第一范式,第二范式,第三范式、、、、是什么,怎么区分?
2个回答2022-10-10 20:50
我给你解释下,他们说的都照本宣科。 第一范式,说的是数据库要划分出多个实体,就是基础表。 第二范式,说的是实体唯一性,每一行用主键区分,所以主键不能重复,主键后面跟着的都是该实体的属性。 第三范式,说...
全文
数据库第二范式和第三范式的区别的是什么?
1个回答2023-01-25 15:20
第二范式(2NF)和第三范式(3NF)的概念很容易混淆,区分它们的关键点在于,2NF:非主键列是否完全依赖于主键,还是依赖于主键的一部分;3NF:非主键列是直接依赖于主键,还是直接依赖于非主键列。 ...
全文
数据库中的三大范式是什么?
1个回答2022-10-06 04:38
第一范式,又称1NF,它指的是在一个应用中的数据都可以组织成由行和列的表格形式,且表格的任意一个行列交叉点即单元格,都不可再划分为行和列的形式,实际上任意一张表格都满足1NF; 第二范式,又称2NF,...
全文
数据库 范式题
2个回答2022-08-28 16:41
1.f的最小函数依赖集为 {bg—c ,b—e,dg—c,adg—bc,ag—b,b—d} 2.r的候选键 {a,g} 3.因为r中不存在重复的属性,所以r不属于第一范式; 又因为r中存在非主属性对主...
全文
数据库范式判别
3个回答2022-12-20 19:04
存在非主属性对码的部分依赖
数据库五大范式是什么
1个回答2022-12-06 00:45
其实没有什么范式的 在真实的设计中 大多时候都不会满足这些 而是根据当时的需求来定的