当今数据仓库建模主要分为两类:范式建模和维度建模
范式建模是基于三范式标准进行建模,好处是高度集成,易于管理和维护,但坏处是结构死板,周期过长
维度建模是依据事实表和维度表结合应用所产生的一种模型结构,好处是构建迅速,最快看到回报,坏处是不好维护,结构复杂
实际应用中一般是范式建模和维度建模相结合,这里讲下维度模型下的两个主要分类:雪花模型和星型模型
星型模型:由一个事实表和一组维表直接组成。每个维表都有一个维作为主键,所有这些维的主键组合成事实表的外键。强调的是对维度进行预处理,将多个维度集合到一个事实表,形成一个宽表,优点是所有字段均已连接,方便OLAP,缺点是数据可能会造成冗余;
图片来自于百度百科
雪花模型:事实表与一组维度表组成,但维度表不一定全部直接关联于事实表,形状如雪花一样,好处是数据不会冗余,坏处是数据关联join太多,不利于OLAP。
图片来自于百度百科
通俗区别:看是否所有的维度表都全部直接关联在事实表上,如果是则为星型,反之为雪花。简单来说星型模型是明细表,雪花模型是主表
属性 | 星型模型 | 雪花模型 |
---|---|---|
数据总量 | 多 | 少 |
可读性 | 容易 | 差 |
表个数 | 少 | 多 |
查询速度 | 快 | 慢 |
冗余度 | 高 | 低 |
对实时表的情况 | 增加宽度 | 字段比较少,冗余底 |
扩展性 | 差 | 好 |
实际应用:由于雪花模型不利于OLAP,所以实际项目中在数据冗余可接受的情况下一般选择星型模型