📅  最后修改于: 2021-01-07 05:57:32             🧑  作者: Mango
模式是整个数据库的逻辑描述。它包括所有记录类型的记录的名称和描述,包括所有关联的数据项和聚合。就像数据库一样,数据仓库也需要维护模式。数据库使用关系模型,而数据仓库使用Star,Snowflake和Fact Constellation模式。在本章中,我们将讨论数据仓库中使用的模式。
星型模式中的每个维度仅由一维表表示。
该维表包含属性集。
下图显示了关于四个维度(时间,项目,分支和位置)的公司销售数据。
中心有一个事实表。它包含四个维度中每个维度的键。
事实表还包含属性,即出售的美元和出售的单位。
注–每个维度只有一个维度表,并且每个表都具有一组属性。例如,位置维度表包含属性集{location_key,street,city,province_or_state,country}。此约束可能导致数据冗余。例如,“温哥华”和“维多利亚”两个城市都在加拿大不列颠哥伦比亚省。这些城市的条目可能会导致沿省份省或国家/地区分布数据冗余。
Snowflake模式中的某些维度表已标准化。
规范化将数据拆分为其他表。
与Star模式不同,雪花模式中的维度表是规范化的。例如,星型模式中的项目维度表被规范化并分为两个维度表,即项目表和供应商表。
现在,项目维度表包含属性item_key,item_name,类型,品牌和供应商密钥。
供应商密钥链接到供应商尺寸表。供应商维度表包含属性Supplier_key和Supplier_type。
注–由于在Snowflake模式中进行了规范化,减少了冗余,因此易于维护并节省了存储空间。
一个事实星座具有多个事实表。它也被称为星系模式。
下图显示了两个事实表,即销售和运输。
销售事实表与星型模式中的表相同。
运输事实表具有五个维度,即item_key,time_key,shipper_key,from_location和to_location。
运输事实表还包含两个度量,即出售的美元和出售的单位。
也可以在事实表之间共享维度表。例如,时间,项目和位置维度表在销售和运输事实表之间共享。
多维模式是使用数据挖掘查询语言(DMQL)定义的。多维数据集定义和维度定义这两个原语可用于定义数据仓库和数据集市。
define cube < cube_name > [ < dimension-list > }: < measure_list >
define dimension < dimension_name > as ( < attribute_or_dimension_list > )
可以使用数据挖掘查询语言(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)
可以使用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))
事实星座图可以使用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