Université de Mons
Faculté des sciences
Département d’Informatique
Service des Systèmes d’Information
Réalisation d’un outil pour l’analyse
et la normalisation de bases de données
Auteurs :
Jannou Brohée
Julien Delplanque
Année académique 2013-2014
Table des matières
1 Introduction....................................... 2
1.1 Butduprojet.................................. 2
1.2 Aperçu rapide du résultat . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Présentation générale de l’outil . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1 Aperçu de l’organisation projet . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Lecture/écriture des dépendances fonctionnelles . . . . . . . . . . . . . . . 3
2.3 Vérification des dépendances fonctionnelles . . . . . . . . . . . . . . . . . 4
2.4 Identification des clés/superclés . . . . . . . . . . . . . . . . . . . . . . . . 4
2.5 Vérification des normes 3NF & BCNF . . . . . . . . . . . . . . . . . . . . 4
2.6 Interfaceutilisateur............................... 4
3 Gestiondessauvegardes ................................ 5
4 Gestion du paramétrage de l’application . . . . . . . . . . . . . . . . . . . . . . . 6
5 Description des notions théoriques et algorithmes utilisés . . . . . . . . . . . . . . 7
5.1 Lesnotionsthéoriques ............................. 7
5.2 Lesalgorithmes................................. 8
6 Problèmes rencontrés et solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7 Répartitiondutravail ................................. 11
8 Sources et remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1
1 Introduction
1.1 But du projet
Le but principal de ce projet est d’appliquer les notions vues aux cours théoriques et pratiques
(MySQL) de Base de Données I. L’outil développé permet d’effectuer diverses opérations sur
les dépendances fonctionnelles présentes dans une base de données analysée. Parmi celles-ci,
proposer à l’utilisateur d’ajouter des dépendances fonctionnelles, les modifier voir les supprimer,
vérifier si celles-ci sont vérifiées, vérifier si un schéma est en 3NF ou en BCNF ou encore exporter
un schéma en 3NF.
1.2 Aperçu rapide du résultat
Le bouton "Select table" permet d’afficher les dépendances fonctionnelles, les attributs, les
superclés et les clés de la table selectionnée dans la liste Tables.
Le label "3NF" est en vert et "BCNF" est en rouge car la table selectionnée respecte le
norme 3NF mais pas la norme BCNF. La couleur de ces labels donne donc comme information
le respect ou non des normes 3NF et BCNF.
2
2 Présentation générale de l’outil
2.1 Aperçu de l’organisation projet
Le projet est consitué de cinq couches listées ci-dessous dans l’ordre de leurs importances :
Lecture/écriture des dépendances fonctionnelles
·Lire la relation FuncDep.
·Ajouter des dépendances fonctionnelles à la relation FuncDep.
·Supprimer des dépendances fonctionnelles de la relation FuncDep.
·Modifier des dépendances fonctionnelles de la relation FuncDep.
Vérification des dépendances fonctionnelles
·Détecter les dépendances fonctionnelles non satisfaites.
·Distinguer les dépendances fonctionnelles qui sont une conséquence logique d’autres
dépendances fonctionnelles.
·Supprimer les dépendances fonctionnelles inutiles, incohérentes, non satisfaites ou
concernant des relations ou des attributs n’existant pas.
Identification des clés/superclés
·Identifier les clés.
·Identifier les superclés.
Vérification des normes 3NF & BCNF
·Vérifier si une relation est en 3NF.
·Vérifier si une relation est en BCNF.
·Exporter une base de données au format 3NF.
Interface utilisateur
·Interface graphique.
2.2 Lecture/écriture des dépendances fonctionnelles
Cette couche est la première qui a été implémentée. C’est le noyau de l’application, elle
contient les fonctions basiques indispensables à toutes les couches supérieures. Voici la liste
exhaustive de celles-ci :
La classe Funcdep : Cette classe représente une dépendance fonctionnelle. Elle contient
des outils basiques pour manipuler une dépendance fonctionnelle.
·Surcharge de la méthode __init__ : À l’initialisation, trois variables sont créées,
self.table : le nom de la table concernée par la dépendance fontionnelle, self.lhs et
self.rhs : respectivement les attributs de gauche et droite de la dépendance fonction-
nelle.
·Surcharge de la méthode __str__ : Une dépendance fonctionelle est représentée
sous forme de string comme "nom_table attribut1, ..., attributn->attribut1, ..., attributn".
·Surcharge de la méthode __eq__ : Deux dépendances fonctionnelles sont égales
ssi leurs noms de tables sont égaux et leurs attributs de gauche et droite sont égaux
deux à deux.
·La méthode generate_unique : Cette méthode génère les dépendances fonction-
nelles singulières à partir d’une dépendance fonctionnelle quelconque.
·La méthode format_db : Cette méthode formate la dépendance fonctionelle afin de
pouvoir introduire le résultat de cette méthode directement dans une requête SQL.
La classe FdReader :
·La méthode get_table_list : Cette méthode retourne la liste des tables présentes
dans la base de données.
3
·La méthode get_attribute_list : Cette méthode retourne les attributs de la table
dont le nom est passé en paramètre.
·La méthode add_functional_dependency : Cette méthode ajoute la dépendance
fonctionnelle passée en paramètre à la table dont le nom est passé en paramètre.
·La méthode remove_functional_dependency : Cette méthode supprime la dé-
pendance fonctionnelle passée en paramètre de la table dont le nom est passé en
paramètre.
·La méthode modify_functional_dependency : Cette méthode remplace la dé-
pendance fonctionnelle passée en paramètre de la table dont le nom est passé en
paramètre par la seconde dépendance fonctionnelle passée en paramètre.
·La méthode get_functional_dependencies : Cette méthode retourne toutes les
dépendances fonctionnelles de la table dont le nom est passé en paramètre.
2.3 Vérification des dépendances fonctionnelles
La classe FdReader :
·La méthode is_satisfied : Retourne vrai si la dépendance fonctionnelle passée en
paramètre est vérifiée, faux sinon.
·La méthode get_not_satisfied : Retourne les tuples qui ne satisfont pas la dépen-
dance fonctionnelle passée en paramètre.
·La méthode closure : Calcule la fermeture pour les dépendances fonctionnelles de la
table dont le nom est passé en paramètre.
·La méthode linear_closure : Idem que closure mais avec une complexité linéaire.
·La méthode member : Retourne vrai si la dépendance fonctionnelle passée en para-
mètre est une conséquence logique des dépendances fonctionnelles de la table concer-
née.
2.4 Identification des clés/superclés
La classe FdReader :
·La méthode get_superkeys : Retourne les superclés d’une table dont le nom est
passé en paramètre.
·La méthode get_keys : Retourne les clés d’une table dont le nom est passé en
paramètre.
2.5 Vérification des normes 3NF & BCNF
La classe FdReader :
·La méthode is_3nf : Retourne vrai si la table dont le nom est passé en paramètre
respecte la norme 3NF.
·La méthode is_bcnf : Retourne vrai si la table dont le nom est passé en paramètre
respecte la norme BCNF.
·La méthode export_to_3nf : Cette méthode exporte la table dont le nom est passé
en paramètre en 3NF dans la base de données dont le nom est passé en paramètre. Si
la base de données n’existe pas, celle-ci est créée.
2.6 Interface utilisateur
Pour la couche d’interface utilsateur, voici simplement la liste des classes utilisées.
La classe MainFrame : Cette classe représente la fenêtre principale de l’application. Elle
hérite de la classe QMainWindow du module QtGui de la librairie PyQt4.
4
1 / 12 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !