Entreposage de données - Schémas
Le schéma est une description logique de l'ensemble de la base de données. Il comprend le nom et la description des enregistrements de tous les types d'enregistrement, y compris tous les éléments de données et agrégats associés. Tout comme une base de données, un entrepôt de données nécessite également de maintenir un schéma. Une base de données utilise un modèle relationnel, tandis qu'un entrepôt de données utilise le schéma Star, Snowflake et Fact Constellation. Dans ce chapitre, nous aborderons les schémas utilisés dans un entrepôt de données.
Schéma en étoile
Chaque dimension d'un schéma en étoile est représentée avec une seule table à une dimension.
Cette table de dimension contient l'ensemble des attributs.
Le diagramme suivant montre les données de vente d'une entreprise par rapport aux quatre dimensions, à savoir le temps, l'article, la succursale et l'emplacement.
Il y a une table de faits au centre. Il contient les clés de chacune des quatre dimensions.
La table de faits contient également les attributs, à savoir les dollars vendus et les unités vendues.
Note- Chaque dimension n'a qu'une seule table de dimension et chaque table contient un ensemble d'attributs. Par exemple, la table de dimension d'emplacement contient l'ensemble d'attributs {location_key, street, city, province_or_state, country}. Cette contrainte peut entraîner une redondance des données. Par exemple, «Vancouver» et «Victoria», les deux villes se trouvent dans la province canadienne de la Colombie-Britannique. Les entrées pour ces villes peuvent entraîner une redondance des données le long des attributs province_or_state et country.
Schéma de flocon de neige
Certaines tables de dimension du schéma Snowflake sont normalisées.
La normalisation divise les données en tables supplémentaires.
Contrairement au schéma en étoile, la table des dimensions dans un schéma en flocon de neige est normalisée. Par exemple, la table de dimension article dans le schéma en étoile est normalisée et divisée en deux tables de dimension, à savoir la table article et fournisseur.
Désormais, la table des dimensions de l'article contient les attributs clé_article, nom_article, type, marque et clé-fournisseur.
La clé fournisseur est liée à la table de dimension fournisseur. La table de dimension fournisseur contient les attributs clé_fournisseur et type_fournisseur.
Note - En raison de la normalisation dans le schéma Snowflake, la redondance est réduite et par conséquent, il devient facile à maintenir et à économiser de l'espace de stockage.
Schéma de constellation des faits
Une constellation de faits a plusieurs tables de faits. Il est également connu sous le nom de schéma de galaxie.
Le diagramme suivant montre deux tableaux de faits, à savoir les ventes et les expéditions.
La table de faits sur les ventes est la même que celle du schéma en étoile.
La table de faits d'expédition a les cinq dimensions, à savoir item_key, time_key, shipper_key, from_location, to_location.
Le tableau des données d'expédition contient également deux mesures, à savoir les dollars vendus et les unités vendues.
Il est également possible de partager des tables de dimension entre des tables de faits. Par exemple, les tables de dimension de temps, d'article et d'emplacement sont partagées entre la table de faits sur les ventes et l'expédition.
Définition du schéma
Le schéma multidimensionnel est défini à l'aide du langage de requête d'exploration de données (DMQL). Les deux primitives, définition de cube et définition de dimension, peuvent être utilisées pour définir les entrepôts de données et les magasins de données.
Syntaxe de la définition du cube
define cube < cube_name > [ < dimension-list > }: < measure_list >
Syntaxe pour la définition de dimension
define dimension < dimension_name > as ( < attribute_or_dimension_list > )
Définition du schéma en étoile
Le schéma en étoile que nous avons discuté peut être défini à l'aide du langage de requête d'exploration de données (DMQL) comme suit -
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)
Définition du schéma de flocon de neige
Le schéma Snowflake peut être défini en utilisant DMQL comme suit -
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))
Définition du schéma de constellation des faits
Le schéma de constellation de faits peut être défini à l'aide de DMQL comme suit -
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