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, les schémas en flocon de neige et en étoile ont tendance à être des choix populaires. Cette comparaison discute de l'adéquation des schémas étoile vs flocon de neige dans différents scénarios et de leurs caractéristiques.

Tableau de comparaison

Schéma de comparaison entre le schéma en flocon de neige et le schéma en étoile
Schéma de flocon de neige Schéma en étoile
Facilité d'entretien / changementAucune redondance, les schémas de flocons de neige sont donc plus faciles à entretenir et à modifier.Dispose de données redondantes et donc moins faciles à entretenir / modifier
Facilité d'utilisationRequêtes plus complexes et donc moins faciles à comprendrePlus faible complexité des requêtes et facile à comprendre
Performances des requêtesPlus de clés étrangères et donc un temps d'exécution des requêtes plus long (plus lent)Moins de clés étrangères et donc un temps d'exécution des requêtes plus court (plus rapide)
Type de DatawarehouseBon à utiliser pour le cœur de datawarehouse pour simplifier les relations complexes (plusieurs: plusieurs)Bon pour les datamarts avec des relations simples (1: 1 ou 1: plusieurs)
Se jointPlus grand nombre de jointuresMoins de jointures
Tableau des dimensionsUn schéma de flocon de neige peut avoir plusieurs tables de dimensions pour chaque dimension.Un schéma en étoile ne contient qu'une seule table de dimension pour chaque dimension.
Quand utiliserLorsque la table de dimension est relativement grande, le flocon de neige est meilleur car il réduit l'espace.Lorsque la table de dimension contient moins de lignes, nous pouvons choisir le schéma en étoile.
Normalisation / dénormalisationLes tableaux de dimensions sont sous forme normalisée, mais le tableau de faits est sous forme dénormaliséeLes tableaux de dimensions et de faits sont sous forme dénormalisée
Modèle de donnéesUne approche en profondeurApproche descendante

Exemples

Considérez une base de données pour un détaillant qui a de nombreux magasins, chaque magasin vendant de nombreux produits dans de nombreuses catégories de produits et de différentes marques. Un entrepôt de données ou un magasin 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 en étoile

Si ce magasin de données utilisait un schéma en étoile, il se présenterait comme suit:

Exemple de schéma en étoile

La table de faits serait un enregistrement des transactions de vente, tandis qu'il existe des tables de dimensions pour la date, le magasin et le produit. Les tables de dimensions sont chacune connectées à la table de faits via leur clé primaire, qui est une clé étrangère pour la table de faits. Par exemple, au lieu de stocker la date de transaction réelle dans une ligne de la table de faits, le date_id est stocké. Ce date_id correspond à une ligne unique dans la table Dim_Date, et cette ligne stocke également d'autres attributs de la date qui sont requis pour le regroupement dans les rapports. par exemple, jour de la semaine, mois, trimestre de l'année, etc. Les données sont dénormalisées pour faciliter les rapports.

Voici comment obtenir un rapport du nombre de téléviseurs vendus par marque et par pays à l'aide de jointures internes.

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 en étoile, est que les données des tableaux de dimensions sont plus normalisées. Par exemple, au lieu de stocker le mois, le trimestre et le jour de la semaine dans chaque ligne de la table Dim_Date, ceux-ci sont davantage répartis dans leurs propres tables de dimension. De même pour la table Dim_Store, l'état et le pays sont des attributs géographiques qui sont supprimés d'une étape - au lieu d'être stockés dans la table Dim_Store, ils sont désormais stockés dans une table Dim_Geography distincte.

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

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

Articles Connexes