Question

Je suis en train d'en apprendre davantage sur l'entreposage OLAP et les données, et je suis confus au sujet de la différence entre la modélisation relationnelle et dimensionnelle. La modélisation dimensionnelle modélisation essentiellement relationnelle, mais permettant redondantes / données non normalisées?

Par exemple, disons que j'ai données sur les ventes historiques sur (produit, ville, # ventes). Je comprends que ce qui suit serait un point de vue relationnel:

Product | City | # Sales
Apples, San Francisco, 400
Apples, Boston, 700
Apples, Seattle, 600
Oranges, San Francisco, 550
Oranges, Boston, 500
Oranges, Seattle, 600

Bien que ce qui suit est un point de vue plus dimensions:

Product | San Francisco | Boston | Seattle
Apples, 400, 700, 600
Oranges, 550, 500, 600

Mais il semble que les deux points de vue serait néanmoins mis en œuvre dans un schéma en étoile identique:

Fact table: Product ID, Region ID, # Sales
Product dimension: Product ID, Product Name
City dimension: City ID, City Name

Et ce n'est pas jusqu'à ce que vous commencez à ajouter quelques détails supplémentaires à chaque dimension que les différences commencent à apparaître. Par exemple, si vous voulez suivre les régions ainsi, une base de données relationnelle aurait tendance à avoir une table de région séparée, afin de garder tout normalisé:

City dimension: City ID, City Name, Region ID
Region dimension: Region ID, Region Name, Region Manager, # Regional Stores

Alors qu'une base de données dimensionnelle permettrait dénormalisation de conserver les données de la région dans la dimension de la ville, afin de le rendre plus facile à trancher les données:

City dimension: City ID, City Name, Region Name, Region Manager, # Regional Stores

Est-ce correct?

Était-ce utile?

La solution

Un schéma en étoile vraiment de mensonges à l'intersection du modèle relationnel de données et le modèle dimensionnel des données. Il est vraiment une façon de commencer par un modèle dimensionnel, et la cartographie dans les tables SQL qui ressemblent un peu les tables SQL que vous obtenez si vous commencez à partir d'un modèle relationnel.

Je dis ressemble un peu parce que de nombreuses méthodologies de conception relationnelle se traduisent par une conception normalisée, ou au moins une conception presque normalisée. Un schéma en étoile aura des écarts significatifs par la normalisation complète.

Chaque départ de normalisation complète comporte des anomalies d'une mise à jour de données conséquente. (Je suis notamment anomlaies sur insert, update et opérations de suppression sous un parapluie). Ces anomalies n'ont rien à voir avec ce modèle de données que vous avez commencé avec.

Le commentaire sur OLTP par rapport OLAP est pertinente. anomalies de mise à jour auront des impacts sur la performance et la difficulté de programmation / ou dans ces deux situations.

En plus d'un schéma en étoile dans un databaase SQL, il existe des produits de base de données dimensionnels là-bas que stocker des données sous une forme physique qui est unique à ce produit. Avec ces produits, vous ne voyez pas un schéma en étoile tant que vous voyez une application directe du modèle dimensionnel, et une interface qui pourrait être propre au produit. Certaines de ces interfaces permettent des opérations OLAP d'être complètement au point et cliquez sur.

Tout comme une digression de votre question, je une fois construit un schéma en étoile comme une étape intermédiaire entre une base de données OLTP qui a soutenu une application de transaction et un cube de données dans Cognos PowerPlay. En utilisant des techniques standard ETL, le transfert combiné de la base de données OLTP au schéma en étoile et du schéma en étoile au cube de données réellement surperformé le transfert direct de la base de données OLTP au cube de données. Ce fut un résultat inattendu.

Hope this helps.

Autres conseils

En simples mots OLTP base de données normalisée sont conçus avec la plus optimale point de vue « transactionnel ». Les bases de données sont normalisées pour un fonctionnement optimal à un système transactionnel. Quand je dis optimisation du système transactionnel je veux dire ..getting à un état de conception de la structure de base de données où toutes les opérations transactionnelles telles que supprimer, insérer, mettre à jour et select sont équilibrés pour donner une importance égale ou optimale à tous à tout moment .. .as ils sont évalués également dans un système transactionnel.

Et quelle ..minimal offre de système normalisé à jour possible pour une mise à jour de données, insérer un minimum possible pour une nouvelle entrée, un endroit supprimer pour la catégorie suppression etc (par exemple une nouvelle catégorie de produits) ... tout cela est possible une branche de nous Crées tables de maître ..... mais cela se fait au prix de « sélectionner » retard d'opération ..mais comme je l'ai dit sa (normalisation) le modèle le plus efficace pour ne pas « optimale » de toutes les opérations ... ayant dit que nous obtenir d'autres méthodes pour améliorer les données aller chercher l'indexation des speed..like etc

D'un autre côté modèle dimensionnel (la plupart du temps utilisé pour la conception de la maison de données ware) .. destiné à donner de l'importance à un seul type d'opérations des thats Sélection des données ... comme dans les maisons données-ware mise à jour / insertion ..data arrive périodiquement ..et est un coût ponctuel.

Donc, si un essai d'ajuster la structure de données normalisées de sorte que la sélection n'est la plus importante opération à tout moment ... nous finirons par obtenir un dénormaliser (je dirais partiellement dénormaliser) .. structure tridimensionnelle étoiles.

  • toutes les clés étrangères un endroit Fact -NO dimension à la dimension joindre (à savoir maître de table maître jointure) .. flocon de représenter même dimension
    • faits idéalement conçus portent des numéros seulement ..measures ou clés étrangères
    • dimension sont utilisés à la description de transport et d'information non agrégeable
    • redondance des données est ignoré ... mais dans les cas rares si les dimensions se développent trop design .snowflake est considéré comme option..but qui est encore évitable

Pour plus de détails s'il vous plaît passer par des livres détaillés sur ce sujet.

Je viens tout juste de lire sur la différence entre la modélisation des données dimensionnelle et Relational puisque nous utilisons principalement des modèles relationnels à mon entreprise où nous un entrepôt de données d'entreprise (EDW).

Selon Steve Hoberman dans son livre "Modélisation des données Made Simple" la distinction entre les 2 types de modèles est le suivant:

  • des données relationnelles Modèles capture la solution d'entreprise pour la façon dont une partie des travaux d'affaires, a.k.a processus d'affaires
  • Modèles de données dimensionnelles capturer les détails les besoins de l'entreprise pour répondre aux questions sur la façon dont il fait

On peut faire valoir qu'un modèle relationnel peut également être utilisé comme une base sur laquelle pour répondre aux questions d'affaires, mais à un niveau tactique. « Combien de commandes sont dans un état non tenues pour le client x en raison de tenir de crédit? » Mais la distinction est celle d'où la question des rapports a besoin du « grain indigène » de la table et lorsque la question des rapports peut répondre avec des données résumées.

Dans vos 2 exemples ci-dessus, ils sont en fait deux exemples de données dimensionnelles modélisation, car aucune des 2 tables stockent l'ordre de vente à son « grain indigène », et donc ne saisit pas le processus d'affaires de la création d'un ordre de vente. La seule différence entre les 2 tables est que dans le 2ème tableau de la dimension de la ville a été transposée dans la table de faits.

Je trouve la description que j'ai trouvé sur http://www.orafaq.com/node/2286 être très utile en venant à schéma étoile vient d'une perspective relationnelle.

  

Considérons un modèle de données entièrement normalisé. Maintenant, pensez à exactement le contraire, où vous dénormaliser entièrement votre modèle de données relationnelles afin que vous ayez un seul enregistrement à plat comme une feuille de big'ol avec une ligne très large. Maintenant sauvegarder de ce disque plat juste un peu afin que vous ayez un modèle de données qui est seulement deux niveaux de profondeur; une grande table, et plusieurs petites tables que les grands points de table revenir. Ceci est un schéma STAR. Ainsi, un véritable modèle de données d'étoiles dispose de deux attributs, il est toujours le modèle profond et une véritable star deux niveaux contient toujours une seule grande table qui est au centre du modèle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top