Normaliser une base de données sans accès aux données sources?

8

J'ai commencé un nouveau rôle qui traite d'une grande quantité de données connexes. Notre source de toutes ces données est divers dumps Excel extraits de bases de données auxquelles nous n'avons pas accès. La personne précédente remplissant ce rôle a utilisé une douzaine de fichiers Excel pour rassembler ces fichiers de données, les manipuler et créer des rapports.

J'ai commencé à déplacer les vidages vers une base de données Access. J'ai remarqué que beaucoup de données Excel sont liées et devraient probablement être normalisées. Ce que je fais actuellement est de créer une table pour chaque vidage de données, de les importer dans Access et d'utiliser un certain nombre de requêtes pour répliquer les dizaines de manipulations de données et de rapports.

Y a-t-il toujours des avantages à normaliser les données où ma seule source sont les vidages Excel d'un entrepôt?

Comment normaliser les données lorsque je n'ai pas la possibilité de modifier le format d'envoi des clichés?

De plus, mon plan (en fonction du budget) consiste à passer d'Access à une base de données MS SQL.

pedram
la source
4
Normalement, vous ne souhaitez PAS normaliser les données qui ne sont pas transactionnelles et ne seront utilisées que pour les rapports. Si les données proviennent d'un entrepôt de données, ils ont déjà fait le gros travail pour vous. Il suffit de le charger dans Access et d'interroger.
HardCode
Juste pour clarifier, les vidages Excel contiennent-ils les données brutes, ou s'agit-il de données pré-agrégées / rapportées? La source de données provient-elle d'une exportation d'un fournisseur quelconque (c'est-à-dire, êtes-vous en mesure de communiquer avec celui qui a conçu les structures de données impliquées)?
Jon Seigel
Les vidages Excel proviennent du fournisseur ou de notre propre entrepôt de données, et il s'agit donc soit de données brutes, soit de données brutes avec une quantité minimale de transformations (par exemple, 0/1 passe à Oui / Non, ou le code de compte mappé à la description du compte). Je suis capable de communiquer avec ceux qui ont conçu les structures de données, mais je n'ai rien à dire sur la façon dont elles sont conçues. Pour donner un peu de contexte, je ne suis pas DBA, mais j'essaie de trouver la meilleure solution pour notre équipe compte tenu des contraintes budgétaires et politiques.
pedram

Réponses:

6

Oui, la normalisation des données présente des avantages importants si vous êtes prêt à faire le travail pour la réaliser et la maintenir. Les deux avantages fondamentaux de la normalisation sont:

  • Intégrité des données
  • Flexibilité des requêtes

L'approche simple de la normalisation consiste à créer un tableau pour chaque personne, lieu, chose, concept ou événement. En faisant cela, vous avez chaque caractéristique de chaque personne, lieu, chose, concept ou événement qui vous intéresse dans un et un seul endroit dans la base de données. L'intérêt de l'intégrité des données est obtenu lorsque vous insérez et mettez à jour des données. Parce que vous avez normalisé, vous n'avez pas de copies redondantes de la même caractéristique à de nombreux endroits de la base de données, chacune avec une valeur différente, que vous devez vous rappeler de mettre à jour et de synchroniser. Deuxièmement, vous n'avez qu'un seul endroit dans la base de données pour programmer les vérifications lors de l'insertion ou de la mise à jour des données pour vous assurer que les données sont valides. Étant donné que vos données proviennent de nombreuses feuilles de calcul Excel, normaliser vos données vous donne la possibilité de mettre en œuvre des contrôles d'intégrité des données sur la charge pour vous assurer que votre analyse est basée sur des données précises. L'avantage de la flexibilité des requêtes est obtenu lorsque vous souhaitez lire et analyser les données. Parce que vous avez normalisé les données, vous pouvez connecter les tables de manière flexible en fonction de la question sur les données auxquelles vous souhaitez répondre, y compris uniquement ce dont vous avez besoin pour répondre à la question spécifique. Deuxièmement, cela permet à la base de données de renvoyer les réponses à vos questions beaucoup plus rapidement que si elle devait parcourir toutes les données, y compris les données non pertinentes pour votre question, dans vos tableaux non normalisés. Parce que vous avez normalisé les données, vous pouvez connecter les tables de manière flexible en fonction de la question sur les données auxquelles vous souhaitez répondre, y compris uniquement ce dont vous avez besoin pour répondre à la question spécifique. Deuxièmement, cela permet à la base de données de renvoyer les réponses à vos questions beaucoup plus rapidement que si elle devait parcourir toutes les données, y compris les données non pertinentes pour votre question, dans vos tableaux non normalisés. Parce que vous avez normalisé les données, vous pouvez connecter les tables de manière flexible en fonction de la question sur les données auxquelles vous souhaitez répondre, y compris uniquement ce dont vous avez besoin pour répondre à la question spécifique. Deuxièmement, cela permet à la base de données de renvoyer les réponses à vos questions beaucoup plus rapidement que si elle devait parcourir toutes les données, y compris les données non pertinentes pour votre question, dans vos tableaux non normalisés.

Access est un SGBD simplifié et comprend un processeur SQL de base qui vous permet d'écrire des requêtes et ainsi profiter des avantages des données normalisées. Si vous allez éventuellement passer à SQL Server, qui est un SGBD complet, la normalisation de vos données facilitera la transition et vous permettra de profiter des capacités complètes de SQL Server et de sa très riche implémentation de SQL.

Comme je l'ai mentionné au début, pour obtenir ces avantages, vous devez être prêt à effectuer la programmation initiale pour traduire les données provenant de vos divers fichiers Excel et mapper les lignes et les colonnes de ces feuilles de calcul vers vos tables normalisées. Ce n'est pas un exercice trivial mais réalisable en utilisant la programmation Access. Une approche consisterait à créer des tables qui répliquent les données comme dans la source et y chargent les données. Ce sont des scènesles tables. Une fois que vous avez les données non normalisées dans les tables Access, vous pouvez ensuite écrire plus facilement du code d'accès à l'aide de SQL pour extraire les données de ces tables d'étape, les normaliser, identifier les problèmes de qualité des données (dites la même caractéristique dans deux vidages Excel différents qui devraient avoir la même valeur mais pas) et chargez-la dans vos tables normalisées. Il s'agit de la méthode courante de normalisation des données provenant d'une source non normalisée très courante dans les entrepôts de données par domaine.

Vous trouverez que ce niveau d'effort supplémentaire en vaut la peine bien qu'une fois que vous avez des données normalisées de haute qualité dans votre base de données d'accès. Vous signalez que les consommateurs verront que vous êtes un véritable professionnel des données lorsque vous leur montrez des exemples de qualité médiocre des données et que vous avez découvert ce fait afin qu'il puisse être corrigé dans les sources. De même, lorsqu'ils demandent un nouveau rapport qui analyse les données d'une manière très différente, vous pouvez rapidement créer le nouveau rapport en utilisant SQL pour combiner les données dans les tables normalisées de cette manière très différente qui n'était pas prévue à l'origine. Ils seront très impressionnés que vous puissiez le faire rapidement et facilement!

J'espère que cela explique pourquoi la normalisation vous serait bénéfique.

Todd Everett
la source
Merci beaucoup! Une belle réponse qui m'a convaincu de faire l'effort initial pour nettoyer ce gâchis. Je me demande si vous avez des livres recommandés ou d'autres sources à lire sur les meilleures pratiques de normalisation de base de données et d'autres concepts importants?
pedram
3
Heureux d'avoir pu vous aider. Voici un lien décent sur la conception et la normalisation des bases de données en général - sqa.org.uk/e-learning/MDBS01CD/page_01.htm . C'est assez bien car cela permet de garder les choses simples et est le plus facile à comprendre de nombreux exemples que j'ai vus. Un bon livre, d'autant plus que vous pouvez passer à SQL Server, est «Pro SQL Server 2012 Relational Database Design and Implementation» de Louis Davidson. Ce livre contient les meilleures pratiques en plus de la normalisation et donne des exemples pour SQL Server. Pour la mise en scène, consultez "The Data Warehouse ETL Toolkit" de Ralph Kimball. Bonne chance!
Todd Everett