9 数据建模之事实表与维度表
在上一篇《数据建模之维度建模》中,我们探讨了维度建模的基本概念及其在数据仓库中的重要性。本文将深入讨论数据建模中的事实表
与维度表
,并结合实例进行阐述,以帮助你更好地理解这些核心内容。
事实表与维度表的定义
在数据仓库中,事实表
和维度表
是组成数据模型的两个主要元素。
事实表
事实表
是一种以数值为主的表,通常记录事件发生的数据。每一条记录都对应着某项业务活动的结果,并包含以下特征:
- 度量值:
事实表
中的核心数据,通常是需要进行分析的数值,如销售额、交易数量等。 - 外键:连接到相关的
维度表
,提供上下文信息。
示例
假设我们有一个销售数据的事实表
,如下所示:
销售ID | 产品ID | 客户ID | 店铺ID | 销售额 | 销售日期 |
---|---|---|---|---|---|
1 | 101 | 201 | 301 | 500 | 2023-01-01 |
2 | 102 | 202 | 302 | 300 | 2023-01-02 |
3 | 103 | 203 | 301 | 700 | 2023-01-01 |
在这个例子中,销售额
就是我们的度量值,而产品ID
、客户ID
和店铺ID
都是外键,它们指向相应的维度表
。
维度表
维度表
是用于描述事实表
中事件的上下文信息的表。它们通常包含具有丰富信息的文本字段,有助于进行深入的分析和筛选。
示例
继续以产品维度表
为例,我们可以这样定义一个维度表
:
产品ID | 产品名称 | 类别 | 价格 |
---|---|---|---|
101 | 手机 | 电子产品 | 300 |
102 | 电脑 | 电子产品 | 600 |
103 | 平板 | 电子产品 | 400 |
在这个例子中,产品维度表
为事实表
提供了关于销售的进一步信息,如产品名称、类别和价格。
事实表与维度表的关系
在数据建模中,事实表
和维度表
之间的关系通常是通过外键来实现的。这种设计使得我们能够在执行查询时,以更丰富的上下文信息来分析事实表
中的数据。例如,我们可以利用维度表
的数据进行分组、过滤,甚至进行更复杂的聚合分析。
示例查询
假设我们想要查询每个产品的总销售额,可以使用如下SQL语句:
1 | SELECT |
此查询将返回每个产品的总销售额,并体现出事实表
和维度表
的紧密结合。
总结
在本文中,我们讨论了事实表
与维度表
的基本概念及其重要性,理解了它们在数据建模中的作用以及如何通过外键将它们联系起来。掌握这些内容为我们下一步深入了解星型模型
和雪花模型
打下了基础。
在下一篇文章中,我们将探讨数据建模中的星型模型与雪花模型,这两种模型是组织事实表
与维度表
的常用方式,欢迎继续关注!
9 数据建模之事实表与维度表