发布网友 发布时间:2022-04-22 23:21
共2个回答
热心网友 时间:2022-05-02 03:09
1. 星型模式
星形模式(Star Schema)是最常用的维度建模方式。星型模式是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。星形模式的维度建模由一个事实表和一组维表成,且具有以下特点:a. 维表只和事实表关联,维表之间没有关联;b. 每个维表主键为单列,且该主键放置在事实表中,作为两边连接的外键;c. 以事实表为核心,维表围绕核心呈星形分布;
2. 雪花模式
雪花模式(Snowflake Schema)是对星形模式的扩展。雪花模式的维度表可以拥有其他维度表的,虽然这种模型相比星型更规范一些,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维表,性能也比星型模型要低。所以一般不是很常用
雪花模式
3.星座模式
星座模式是星型模式延伸而来,星型模式是基于一张事实表的,而星座模式是基于多张事实表的,而且共享维度信息。前面介绍的两种维度建模方法都是*表对应单事实表,但在很多时候维度空间内的事实表不止一个,而一个维表也可能被多个事实表用到。在业务发展后期,绝大部分维度建模都采用的是星座模式。
星座模型
热心网友 时间:2022-05-02 04:27
首先,你说的数据结构设计包括了两种,一个是数据库设计,一个是数据仓库设计
针对数据库设计一般用的是三范式。因为数据库的数据会用于频繁的增删改查,因此出于减少系统压力考虑,会尽量减少冗余,从而提升系统频繁读写数据的效率。
而星型、雪花型则是数据仓库的设计模式。与数据库的使用目的不同,数据仓库更多的是存储历史数据,不会有频繁的读写。其主要是用于从历史数据中进行分析,进而获取指导性的生产指引,生成报表等等。而这时数据库设计中的范式拆表以提升效率的方法这时却会适得其反(因为历史数据的量相当庞大,而往往数据分析、BI等又需要从多个表中检索数据来进行,这时大表之间的频繁交互会使分析效率变得相当低,所以往往会考虑合并表的方法,故意制造冗余)。
当然,以我个人的经验,就算是数据库设计,也很少会把表设计到三范式。因为一旦表的数据量变得庞大时,表与表之间交互的时间代价会比冗余数据的代价大得多。追问麻烦看下这个网址关于 数据仓库和数据集市区别的说明。
http://book.51cto.com/art/201205/338215.htm
其中提到 数据仓库是三范式的,数据集市是星形、雪花模型的。
按照你的说法,他说数据仓库是三范式的,是不是说错了?