-
事实表
发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中。例如,一 个按照地区、产品、月份划分的销售量和销售额的事实表如下:
fact_销售量和销售额事实表
维度建模理论
- 在以上事实表的示例中,“地区 ID”、“产品 ID”、“月份 ID”为键值列,“销售 量”、“销售额”为度量列,所谓度量列就是列的数据可度量,度量列一般为可统计的 数值列。事实表中每个列通常要么是键值列,要么是度量列。
- 事实表中一般会使用一个代号或者整数来代表维度成员,而不使用描述性的名称,例如: ID 代号。上表中的“地区 ID”、“产品 ID”、“月份 ID”就是维度列,就是观察数 据的角度。使用代号或整数来代表维度成员的原因是事实表往往包含很多数据行,使用 代号或整数这种键值方式可以有效减少事实表的大小。
- 在事实表中使用代号或者整数键值时,维度成员的名称需要放在另一种表中,也就是维 度表。通常事实表中的每个维度都对应一个维度表。
- 在数据仓库中,事实表的前缀为“fact”
-
维度表
维 度 表 包 含 了 维 度 的 每 个 成 员 的 特 定 名 称 。 维 度 成 员 的 名 称 称 为 “ 属 性 ” (Attribute),假设“产品 ID”维度表中有 3 种产品,例如:
维度建模理论
- 如上图,“产品名称”是产品维度表中的一个属性,维度表中可以包含很多属性列。
-
产品维度表中的“产品 ID”与事实表中的“产品 ID”相匹配,称为“键属性”,在当 前产品维度表中一个“产品 ID”只有一个“产品名称”,显示时使用“产品名称”来 代替,所以“产品名称”也被认为是“键属性”的一部分。
在数据仓库中,维度表中的键属性必须为维度的每个成员包含一个对应的唯一值,用关 系型数据库术语描述就是,键属性是主键列,也就是说维度表中一般为单一主键。
- 每个维度表中的键值属性都与事实表中对应的维度相匹配,在维度表中“产品 ID”类 似关系型数据库中的主键,在事实表中“产品 ID”类似关系型数据库中的外键,维度 表和事实表就是按照键值属性“产品 ID”进行关联的。在维度表中出现一次的每个键 值都会在事实表中出现多次。例如上图中,产品 ID 中 1111 在事实表中对应多行。
- 在数据仓库中,维度表的前缀为"dim"
-
总结
在数据仓库中事实表就是我们需要关注的内容,维度表就是我们从哪些角度观察这些内 容。例如,某地区商品的销量,是从地区这个角度观察商品销量的。事实表就是销量表,维 度表就是地区表。
在多维分析的商业智能解决方案中,根据事实表和维度表的关系,又可将常见的模型分 为星型模型和雪花型模型。