J'ai récemment appris la normalisation et je sais à quel point elle est importante lors de l'implémentation d'un nouveau schéma.
Comment puis-je vérifier si ma base de données est compatible 2NF ou 3NF?
La révision manuelle est une option sûre, mais je cherche un outil automatisé ici.
Je ne recherche pas un outil pointer-cliquer, mais quelque chose qui mettrait en évidence les optimisations possibles pour rendre une table 3NF conforme. Je suppose qu'il pourrait utiliser des statistiques basées sur de bons exemples de données et / ou une analyse sémantique des noms de colonnes.
Réponses:
La normalisation est absolument utilisée dans le monde réel ... et j'espère que vous savez que 3NF n'est que le troisième de ... qu'est-ce qui est maintenant, 8? Mais 3NF devrait être une cible facile.
Cependant ... j'oserais dire qu'il ne pourrait pas y avoir un tel outil.
La normalisation, techniquement, est un attribut de chaque table. Dans une base de données donnée, différentes tables peuvent avoir différents niveaux de normalisation.
Chaque tableau représente des faits ... des faits sur les instances d'un certain type de chose (personne, compte, commande, expédition, article, emplacement), y compris, parfois, des clés étrangères qui vous mènent à d'autres types de faits sur cette chose.
La normalisation a trait à la précision et à l'efficacité de la représentation des faits dans les tableaux ainsi qu'à la capacité de la conception des tableaux à éviter les modèles de données ambigus et redondants.
Ainsi, une compréhension des faits réels est nécessaire ... ce qui est hors de la portée des outils automatisés.
Dans un monde où tous les instructeurs enseignaient toutes les matières et chaque étudiant pouvait suivre n'importe quelle combinaison mais pas plus d'un cours sur chaque matière de chaque instructeur, ce tableau pourrait en effet être considéré comme étant en 3NF. Dans le monde réel, réclamer 3NF pour ce tableau est absurde.
Pour comprendre que ce n'est pas dans 3NF, il faut comprendre la nature des faits qu'il représente. Dans notre réalité, ce tableau ne va pas être 3NF car (entre autres raisons) le sujet et l'instructeur sont associés ensemble d'une manière qui n'a rien à voir avec l'élève. Si nous avons des cours où les instructeurs enseignent des sujets stockés ailleurs dans notre base de données, pourquoi devrions-nous copier les deux valeurs ici au lieu d'une clé étrangère de l'autre table indiquant que l'étudiant était inscrit au cours? Si l'instructeur est remplacé, nous devons modifier plusieurs enregistrements à plusieurs endroits.
Plus une base de données est normalisée, plus elle est intrinsèquement cohérente avec le monde réel et avec elle-même, et plus il est difficile pour les faits de la base de données d'être faux par inadvertance. La conception de bases de données est un art, mais c'est certainement aussi une science.
Même si je ne vois pas tout ce qu'il écrit, je recommanderais le livre de Chris Date, Database Design and Relational Theory: Normal Forms and All That Jazz, qui donne des détails atroces sur la théorie sous-jacente du modèle relationnel.
la source
Une partie de l'intérêt d'utiliser des méthodes formelles pour développer la théorie relationnelle était de développer des procédures qui pourraient être automatisées. Je suis presque sûr que CJ Date sort tout de suite et le dit dans son introduction aux systèmes de bases de données .
Plusieurs outils CASE publiés à la fin des années 1980 ou au début des années 1990 pourraient dériver tous les schémas 5NF possibles soit en analysant les diagrammes ER ou en analysant statistiquement les données de l'échantillon.
Visio Enterprise Architect (je pense) est un outil relativement récent dans ce sens.
la source
Je doute beaucoup que vous ayez toujours besoin d'une réponse, mais au cas où vous ou quelqu'un d'autre pourrait en bénéficier, vous pouvez essayer cet outil: http://uisacad5.uis.edu/cgi-bin/mcrem2/ database_design_tool.cgi
la source
Je pense que si vous pouviez écrire un outil pour le faire, il faudrait toujours un examen manuel pour que cela fonctionne. les formes normales sont définies sur la base de dépendances fonctionnelles et celles-ci ne peuvent pas être déterminées à partir d'une simple inspection des données. En d'autres termes, il s'agit d'une logique inductive plutôt que déductive afin de déterminer s'il existe une dépendance fonctionnelle.
la source