Dwh 简明教程

Data Warehousing - Schemas

模式是对整个数据库的逻辑描述。它包括所有记录类型记录的名称和说明,包括所有关联的数据项和聚合。与数据库非常相似,数据仓库也需要维护模式。数据库使用关系模型,而数据仓库则使用星形、雪花和事实星座模式。在本章中,我们将讨论数据仓库中使用的模式。

Star Schema

  1. 星形模式中的每个维度仅用一个“维度”表表示。

  2. 此维度表包含一组属性。

  3. 下图显示了公司的销售数据,相对于四个维度,即时间、项目、分支和位置。

start schema
  1. 中心有一个事实表。它包含四个维度中每个维度的键。

  2. 事实表还包含属性,即销售额和销售单元。

Note − 每个维度仅有一个维度表,并且每个表都包含一组属性。例如,位置维度表包含属性集 {location_key, street, city, province_or_state, country}。此约束可能会导致数据冗余。例如,“温哥华”和“维多利亚”这两个城市都位于加拿大不列颠哥伦比亚省。这些城市的条目可能会导致 province_or_state 和 country 属性的数据冗余。

Snowflake Schema

  1. 雪花模式中的一些维度表被归一化。

  2. 归一化将数据拆分为另外一些表。

  3. 与星形模式不同,雪花模式中的维度表被归一化。例如,星形模式中的项目维度表被归一化并拆分为两个维度表,即项目表和供应商表。

snowflake
  1. 现在,项目维度表包含属性 item_key、item_name、type、brand 和 supplier-key。

  2. 供应商键链接到供应商维度表。供应商维度表包含属性 supplier_key 和 supplier_type。

Note − 由于雪花模式中的归一化,冗余已减少,因此易于维护并节省存储空间。

Fact Constellation Schema

  1. 事实星座有多个事实表。也称为星系模式。

  2. 下图显示了两个事实表,分别是销售和运输。

fact constellation
  1. 销售事实表与星形模式中的相同。

  2. 运输事实表有五个维度,分别是 item_key,time_key,shipper_key,from_location,to_location。

  3. 运输事实表还包含两个度量,分别是销售额和销售单位。

  4. 在事实表之间共享维度表也是可能的。例如,时间、项目和位置维度表在销售和运输事实表之间共享。

Schema Definition

多维模式使用数据挖掘查询语言 (DMQL) 定义。两个基元,多维数据集定义和维度定义,可用于定义数据仓库和数据市集。

Syntax for Cube Definition

define cube < cube_name > [ < dimension-list > }: < measure_list >

Syntax for Dimension Definition

define dimension < dimension_name > as ( < attribute_or_dimension_list > )

Star Schema Definition

我们讨论过的星形模式可以使用数据挖掘查询语言 (DMQL) 如下定义:

define cube sales star [time, item, branch, location]:

dollars sold = sum(sales in dollars), units sold = count(*)

define dimension time as (time key, day, day of week, month, quarter, year)
define dimension item as (item key, item name, brand, type, supplier type)
define dimension branch as (branch key, branch name, branch type)
define dimension location as (location key, street, city, province or state, country)

Snowflake Schema Definition

雪花模式可以使用 DMQL 如下定义:

define cube sales snowflake [time, item, branch, location]:

dollars sold = sum(sales in dollars), units sold = count(*)

define dimension time as (time key, day, day of week, month, quarter, year)
define dimension item as (item key, item name, brand, type, supplier (supplier key, supplier type))
define dimension branch as (branch key, branch name, branch type)
define dimension location as (location key, street, city (city key, city, province or state, country))

Fact Constellation Schema Definition

事实星座模式可以使用 DMQL 如下定义:

define cube sales [time, item, branch, location]:

dollars sold = sum(sales in dollars), units sold = count(*)

define dimension time as (time key, day, day of week, month, quarter, year)
define dimension item as (item key, item name, brand, type, supplier type)
define dimension branch as (branch key, branch name, branch type)
define dimension location as (location key, street, city, province or state,country)
define cube shipping [time, item, shipper, from location, to location]:

dollars cost = sum(cost in dollars), units shipped = count(*)

define dimension time as time in cube sales
define dimension item as item in cube sales
define dimension shipper as (shipper key, shipper name, location as location in cube sales, shipper type)
define dimension from location as location in cube sales
define dimension to location as location in cube sales