Схема звезды

Схема «звезды», схема звёздного соединения, звездоподобная схема, звёздная схема (от англ. star schema) — специальная организация реляционных таблиц, удобная для хранения многомерных показателей. Лежит в основе реляционного OLAP.

Модель данных состоит из двух типов таблиц: одной таблицы фактов (fact table) — центр «звезды» — и нескольких таблиц измерений (dimension table) по числу измерений в модели данных — лучи «звезды».

Пример схемы звёздного соединения

Таблица фактов обычно содержит одну или несколько колонок типа DECIMAL, дающих числовую характеристику какому-то аспекту предметной области (например, объём продаж для торговой компании или сумма платежей для банка), и несколько целочисленных колонок-ключей для доступа к таблицам измерений.

Таблицы измерений расшифровывают ключи, на которые ссылается таблица фактов; например, таблица «products» измерения «товары» базы данных торговой компании может содержать сведения о названии товара, его производителе, типе товара. За счёт использования специальной структуры таблицы измерений реализуется иерархия измерений, в том числе ветвящаяся.

Обычно данные в таблицах-измерениях денормализованы: ценой несколько неэффективного использования дискового пространства удается уменьшить число участвующих в операции соединения таблиц, что обычно приводит к сильному уменьшению времени выполнения запроса. Иногда, тем не менее, требуется произвести нормализацию таблиц-измерений; такая схема носит название «снежинка» (snowflake schema).

SQL-запрос к схеме «звезда» обычно содержит в себе:

  • одно или несколько соединений таблицы фактов с таблицами измерений;
  • несколько фильтров (SQL-оператор WHERE), применяемых к таблице фактов или таблицам измерений;
  • группировку и агрегирование по требуемым элементам иерархии измерений (dimension elements).

Например:

 SELECT
  d_product.brand,
  d_store.country_iso_id,
  SUM (f_sales.units_sold) AS summa
 FROM
  f_sales, d_customer, d_time, d_store, d_product
 WHERE
  f_sales.customer_id = d_customer.customer_id  AND
  f_sales.date_id = d_time.date_id  AND
  f_sales.store_id = d_store.store_id AND
  f_sales.product_id = d_product.product_id AND
  d_time.year_id = 1997  AND
  d_product.category_id = "tv"
 GROUP BY
  d_product.brand,  d_store.country_iso_id

См. также



Что такое monamir.ru Monamir.ru является одним из мощнейших информационным ресурсом в рунете. Он открыт для любого пользователя. Наш сайт - это библиотека, которая является общественной. Любой посетитель сможет найти необходимую для себя информацию.

Основа этой страницы находится в Вики. Текст доступен по лицензии CC BY-SA 3.0 Unported License.

Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. monamir.ru является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).

E-mail: admin@monamir.ru
Сайт Monamir.ru является НЕофициальным.