Хранилище данных - схемы

Схема представляет собой логическое описание всей базы данных. Он включает в себя имя и описание записей всех типов записей, включая все связанные элементы данных и агрегаты. Как и база данных, хранилище данных также требует поддержки схемы. База данных использует реляционную модель, а хранилище данных использует схемы Star, Snowflake и Fact Constellation. В этой главе мы обсудим схемы, используемые в хранилище данных.

Звездная Схема

  • Каждое измерение в звездообразной схеме представлено только одномерной таблицей.

  • Эта таблица измерений содержит набор атрибутов.

  • На следующей диаграмме показаны данные о продажах компании по четырем измерениям, а именно: время, позиция, филиал и местоположение.

Начальная схема
  • В центре находится таблица фактов. Он содержит ключи к каждому из четырех измерений.

  • Таблица фактов также содержит атрибуты, а именно проданные доллары и проданные единицы.

Примечание. Каждое измерение имеет только одну таблицу измерений, и каждая таблица содержит набор атрибутов. Например, таблица измерения местоположения содержит набор атрибутов {location_key, street, city, провинция_or_state, страна}. Это ограничение может привести к избыточности данных. Например, «Ванкувер» и «Виктория» оба города находятся в канадской провинции Британская Колумбия. Записи для таких городов могут вызывать избыточность данных вдоль атрибутов провинция_или_стата и страна.

Снежинка Схема

  • Некоторые таблицы измерений в схеме Snowflake нормализованы.

  • Нормализация разбивает данные на дополнительные таблицы.

  • В отличие от схемы Star, таблица измерений в схеме снежинки нормализована. Например, таблица измерений элементов в звездообразной схеме нормализована и разделена на две таблицы измерений, а именно таблицу элементов и поставщиков.

Снежинка Схема
  • Теперь таблица измерений элементов содержит атрибуты item_key, item_name, type, brand и ключ поставщика.

  • Ключ поставщика связан с таблицей измерений поставщика. Таблица измерений поставщика содержит атрибуты supplier_key и supplier_type.

Примечание. Из-за нормализации в схеме «Снежинка» избыточность уменьшается, и, следовательно, становится проще в обслуживании и экономит место для хранения.

Схема Созвездия Фактов

  • Созвездие фактов имеет несколько таблиц фактов. Это также известно как схема галактики.

  • На следующей диаграмме показаны две таблицы фактов, а именно: продажи и доставка.

Схема Созвездия Фактов
  • Таблица фактов продаж такая же, как в схеме «звезда».

  • Таблица фактов доставки имеет пять измерений: item_key, time_key, shipper_key, from_location, to_location.

  • Таблица фактов отгрузки также содержит две меры: проданные доллары и проданные единицы.

  • Также возможно разделить таблицы измерений между таблицами фактов. Например, таблицы измерений времени, позиции и местоположения совместно используются таблицей фактов продаж и отгрузки.

Определение схемы

Многомерная схема определяется с помощью Data Mining Query Language (DMQL). Два примитива, определение куба и определение измерения, могут использоваться для определения хранилищ данных и витрин данных.

Синтаксис для определения куба

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

Синтаксис для определения измерения

define dimension < dimension_name > as ( < attribute_or_dimension_list > )

Определение схемы звезды

Обсуждаемая нами схема «звезда» может быть определена с помощью Data Mining Query Language (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