Schéma de flocon de neige vs. Schéma d'étoile

Schéma de flocon de neige vs. Schéma d'étoile

Lors du choix d'un schéma de base de données pour un entrepôt de données, flocon de neige et schémas de star ont tendance à être des choix populaires. Cette comparaison traite de l'adéquation de Star vs. schémas de flocon de neige dans différents scénarios et leurs caractéristiques.

Tableau de comparaison

Schéma de flocon de neige versus star schéma de comparaison du schéma
Schéma de flocon de neigeSchéma d'étoile
Facilité d'entretien / changement Pas de redondance, donc les schémas de flocon de neige sont plus faciles à entretenir et à changer. A des données redondantes et donc moins facile à entretenir / changer
Facilité d'utilisation Des requêtes plus complexes et donc moins facile à comprendre Complexité de requête plus faible et facile à comprendre
Performance de requête Plus de clés étrangères et donc du temps d'exécution de la requête plus longue (plus lent) Moins de clés étrangères et donc du temps d'exécution de la requête plus courte (plus rapide)
Type de Datawarehouse Bon à utiliser pour Datawarehouse Core afin de simplifier les relations complexes (beaucoup: beaucoup) Bon pour les dataMarts avec des relations simples (1: 1 ou 1: beaucoup)
Se joindre à Nombre plus élevé de jointures Moins de jointures
Table de dimension Un schéma de flocon de neige peut avoir plus d'une table de dimension pour chaque dimension. Un schéma d'étoile ne contient qu'une table à dimension unique pour chaque dimension.
Quand utiliser Lorsque la table des dimensions est relativement grande, la neige est meilleure car elle réduit l'espace. Lorsque la table de dimension contient moins de lignes, nous pouvons choisir le schéma d'étoile.
Normalisation / dé-normalisation Les tables de dimension sont sous une forme normalisée mais la table de fait est sous forme dénormalisée Les tables de dimension et de faits sont sous forme dénormalisée
Modèle de données Une approche en profondeur Approche descendante

Exemples

Envisagez une base de données pour un détaillant qui possède de nombreux magasins, chaque magasin vendant de nombreux produits dans de nombreuses catégories de produits et de diverses marques. Un entrepôt de données ou des données de données pour un tel détaillant devrait fournir aux analystes la possibilité d'exécuter des rapports de vente groupés par magasin, date (ou mois, trimestre ou année), ou catégorie de produit ou marque.

Exemple de schéma d'étoile

Si ce Data Mart utilisait un schéma d'étoiles, il semblerait comme suit:

Exemple de schéma d'étoiles

Le tableau des faits serait un enregistrement des transactions de vente, tandis qu'il existe des tables de dimension pour la date, le magasin et le produit. Les tables de dimension sont chacune connectées à la table des faits via leur clé primaire, qui est une clé étrangère pour le tableau des faits. Par exemple, au lieu de stocker la date de transaction réelle dans une ligne du tableau des faits, la date_id est stockée. Cette date_id correspond à une ligne unique dans la table DIM_DATE, et cette ligne stocke également d'autres attributs de la date requise pour le regroupement dans les rapports. e.g., jour de la semaine, mois, trimestre de l'année et ainsi de suite. Les données sont dénormalisées pour des rapports plus faciles.

Voici comment on obtiendrait un rapport de nombre de téléviseurs vendus par marque et par pays avec l'aide de jointures intérieures.

Exemple de schéma de flocon de neige

Le même scénario peut également utiliser un schéma de flocon de neige, auquel cas il serait structuré comme suit:

Exemple de schéma de flocon de neige (cliquez pour agrandir)

La principale différence, par rapport au schéma d'étoile, est que les données dans les tables de dimension sont plus normalisées. Par exemple, au lieu de stocker le mois, le trimestre et le jour de la semaine dans chaque rang. De même pour la table DIM_STORE, l'État et le pays sont des attributs géographiques qui sont une étape supprimée - au lieu d'être stockés dans la table DIM_STORE, ils sont maintenant stockés dans un tableau DIM_GEOGRAPHIE séparé.

Le même rapport - le nombre de téléviseurs vendus par le pays et par la marque - est maintenant un peu plus compliqué que dans un schéma d'étoiles:

Requête SQL pour obtenir le nombre de produits vendus par pays et marque, lorsque la base de données utilise un schéma de flocon de neige.