Y a-t-il un avantage à inclure des relations dans la conception de votre table de schéma en étoile?

StackOverflow https://stackoverflow.com/questions/838169

Question

Je conçois les tables de faits et de dimensions pour un entrepôt de données utilisant actuellement SQL Server, SSIS et SSAS. Est-ce que la programmation des relations entre les dimensions et les tables de faits en SQL apportera un réel avantage? Ou est-il préférable de simplement définir les relations manuellement au moment de créer les cubes?

Il semble plus facile de charger et de transformer les données si je n’ai aucune contrainte sur l’insertion de mes données dans les tables et que je laisse donc de côté les relations.

Était-ce utile?

La solution

J'interprète la "programmation des relations" comme signifiant de mettre des contraintes de clé étrangère sur les tables.

Non, dans un entrepôt de données, vous ne devez pas imposer de contraintes de clé primaire ou de clé étrangère aux tables de faits.

Vous avez évoqué certains problèmes. Un autre problème est que ces contraintes alourdissent les performances lors de l'insertion de lignes, ce qui rend le processus ETL plus coûteux.

Pour ceux qui ne connaissent que la conception de bases de données transactionnelles, cela pourrait aller à l’encontre de tout ce qu’ils ont appris et expérimenté. Les contraintes de clé étrangère sont vitales pour les bases de données où plusieurs processus modifient des données simultanément. Il existe un risque certain que deux processus gâchent les données d'une manière ou d'une autre, malgré les meilleurs efforts des développeurs. Les contraintes constituent un filet de sécurité essentiel.

Dans un modèle dimensionnel, la base de données est uniquement peuplée par le processus ETL unique et de manière hautement contrôlée. Cela réduit considérablement le risque de corruption des données, au point que le coût supplémentaire des contraintes n'en vaut tout simplement pas la peine.

Autres conseils

Je pense que nous avons besoin de contraintes FK, car les mises à jour de DW sont "principalement" contrôlées mais pas toujours. Par exemple, des corrections de données manuelles se produisent en cas de problèmes de données, etc. [Idéalement, cela ne doit pas arriver, mais ....:)]

Pour garantir que les clés n'affectent pas les performances, nous pouvons les désactiver avant le chargement et les réactiver. Cela peut nous donner l'assurance que les données sont correctes et également résoudre tous les problèmes de performances lors du chargement. Une autre chose à garder à l'esprit est que les délais de traitement ne constituent pas une contrainte majeure pour la plupart des entrepôts de données.

Si vous considérez le temps nécessaire pour résoudre les problèmes potentiels d'intégrité des données, disposer de FK en vaut la peine.

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