Ответ
Нет, в схеме "Снежинка" (Snowflake Schema) данные не объединены в одну большую таблицу. Это нормализованная версия схемы "Звезда" (Star Schema).
Структура "Снежинки":
- Факты (Fact Table): Одна центральная таблица фактов, содержащая количественные показатели (меры) и ключи для связей с измерениями.
- Измерения (Dimension Tables): Несколько таблиц измерений, связанных с таблицей фактов.
- Ключевая особенность: Таблицы измерений нормализованы. Это означает, что они могут сами ссылаться на другие подчинённые таблицы измерений, образуя иерархическую структуру, которая визуально напоминает снежинку.
Пример для интернет-магазина:
- Таблица фактов:
Sales(содержитsale_id,product_key,customer_key,date_key,amount). - Таблица измерения
Dim_Productссылается не напрямую на категорию, а на отдельную таблицуDim_Category. АDim_Category, в свою очередь, может ссылаться наDim_Department.
-- Пример связи в Snowflake Schema
SELECT
s.amount,
p.product_name,
c.category_name,
d.department_name
FROM fact_sales s
JOIN dim_product p ON s.product_key = p.product_key
JOIN dim_category c ON p.category_key = c.category_key -- Нормализация!
JOIN dim_department d ON c.department_key = d.department_key; -- Нормализация!
| Сравнение со "Звездой": | Аспект | Схема "Звезда" | Схема "Снежинка" |
|---|---|---|---|
| Нормализация | Денормализована (измерения плоские) | Нормализована (измерения иерархичны) | |
| Избыточность данных | Высокая (повторы в измерениях) | Низкая (данныe об иерархии хранятся один раз) | |
| Сложность запросов | Проще (меньше JOIN) | Сложнее (больше JOIN из-за нормализации) | |
| Потребление диска | Больше | Меньше | |
| Оптимальна для | Частых аналитических запросов, где важна скорость | Сценариев с жёсткими требованиями к целостности данных и экономии дискового пространства |
Итог: "Снежинка" не объединяет, а, наоборот, разделяет (нормализует) данные по иерархиям для уменьшения избыточности, что может усложнить запросы, но экономит место и упрощает поддержку целостности.