领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

数据仓库事实表—设计原则_数据仓库实施内容有哪些

nixiaole 2025-02-17 13:26:55 知识剖析 8 ℃

前言

在《数据仓库建模—事实表》介绍了数据仓库建模事实表的定义、特征、三个分类及设计方法步骤,接下来简单介绍一下设计的原则,理解掌握这些原则可以帮助我们设计出规范的易于、理解的、高效的数据模型。

八大设计原则

  • 原则一:尽可能包含所有与业务相关的事实

事实表设计的目的是为了度量业务过程,所以分析哪些事实与业务过程有关是设计中非常重要的关注点,如:按地域统计的订单事实表,要包含区ID、城市ID、省份ID、国家ID,即使存在冗余,由于通常事实是数字型,存储开销并不会太大。

  • 原则二:只选择与业务过程相关的事实。

在选择事实时,应该注意只选择与业务相关的事实。比如:在订单的下单这个业务事实表设计中。不应该存在支付金额这个表示支付过程的事实。

  • 原则三:分解不可加性事实为可加的组件

对于不具备可加性的事实,需要分解为可加的组件,比如订单的优惠率,应该分解为订单的原价与订单优惠金额两个事实存储在事实表中。

  • 原则四:在选择维度和事实之前必须声明粒度

粒度用于确定事实表中一行所表示业务的细节层次,尽可能做到最细粒度,粒度越细模型的扩展性越好,比如:按下单时间统计订单数量的事实表,如果能做到订单维度(即一条数据一个订单),那么可以统计到任意时间,如果做到按天的订单数据量实时表,该表就不符合按小时统计了。

原则五:在同一个事实表中不能有多种不同粒度的事实

事实表中的所有事实需要与表定义的粒度保持一致,在同一个事实表中不能有多种不同粒度的事实。例如:按下单时间统计订单量,不能存在按分钟统计,按小时统计的粒度,应该直接坐到订单粒度。

  • 原则六:事实的单位要保持一致

对于同一个事实表中事实的单位应该保持一致。比如订单的金额、订单优惠金额、订单运费金额这三个事实,应该采用一致的计量单位,统一为元或者分,方便实用。

  • 原则七:对事实的null值要处理

因为在数据库中null 值对常用数字型字段的sql过滤条件都不生效,比如大于,小于等,建议用零值填充。

  • 原则八:使用退化维度提高事实表的易用性

为了减少下游用户使用时关联多个表进行操作,直接通过退化维度实现事实表的操作,即增加维度表存储的冗余,提高计算的速度,以空间置换时间。

例如:城市ID、城市名称、省份ID、省份名称、国家ID、国家名称等,可以做成一张退化维表,虽然省份和国家信息冗余,可以减少Join操作。

推荐阅读

数据库设计范式基础(必知必会)

数据仓库建模理论(大数据必学知识)

数据仓库建模—维度表

数据仓库建模—事实表

参考书籍

《大数据之路:阿里巴巴大数据实践》


觉得有用就分享收藏,关注我更多有价值的文章会第一时间推荐给你!

最近发表
标签列表