conception d’un schéma relationnel.

Les dépendances fonctionnelles.

Je viens de suivre un cours trés intéressant de michel freville du cnam sur la conception d’un schéma relationnel, j’y ai appris la méthode « ancienne » pour décomposer les relations ( autrement dit les tables ). Il existe tout un processus en commençant par déterminer les dépendances fonctionnelles. Il s’agit de déterminer les liens sémantiques entre les attributs ou les sous ensemble d’attributs d’une relation. Par exemple : La puissance d’une voiture est dépendante de l’immatriculation du véhicule. Si je connais l’immatriculation, je peux déduire la puissance. c’est une dépendance fonctionnelle. On doit déterminer la couverture minimale des dépendances fonctionnelles. c’est à dire, les seules dépendances qui restent quand on a supprimé toute celle qui se déduise logiquement. Par exemple, l’immatriculation définit la marque, la marque définit le pays. Une relation inutile à supprimer est donc l’immatriculation définit le pays… On est capable de retrouver cette dépendance fonctionnelle par transitivité. A partir de la couverture minimale, on est capable de déterminer la clé primaire de la relation en produisant un graphe des dépendances fonctionnelles. c’est assez génial! Je ne détaille pas. Il existe aussi un algorithme de BERNSTEIN qui permet de passer d’un graphe des dépendances fonctionnelles à un schéma relationnelle compatible avec la 3 eme forme normale.

Les formes normales.

Les formes normales ne sont que des règles qui permettent de déterminer le niveau de redondance et d’intégrité d’un schéma relationnelle. Un diagramme de classe conçu par l’analyse UML ( objet du monde réel distincts ) si il est conçu intelligemment avec une analyse poussée supprimant toute redondance d’information conduit à un schéma relationnel qui respecte la quatrième forme normale. Si l’analyse n’est pas poussée assez loin, on peut se retrouver à ne pas respecter la 4 eme, la 3 eme, la seconde ou la première forme normale.

Première forme normale :

Une relation R est en 1ière forme normale, si tout attribut
de R contient une valeur atomique.

exemple :
Membre du projet(NumeroMembre,Nom,Ville,NumerosDesProjets) est dénormalisée car NumérosDesProjets contient plusieurs Numéros de Projets pour un seul membre.
(‘1′,’Jean’,’Lyon’,’1,2,7′) (‘2′,’corinne’,’Marseille’,’1,2,9′)…

Pour passer en premiere forme normale:
MembreDuProjet(NumeroMembre,Nom,Ville,NumeroProjet)
(‘1′,’jean’,’Lyon’,’1′) (‘1′,’jean’,’Lyon’,’2′) (‘1′,’jean’,’Lyon’,’7′) (‘2′,’corinne’,’Marseille’,’1′)…

remarque : en premiere forme normale, on est oblige de changer de cle primaire : NumeroMembre ne suffit plus, on doit ajouter NumeroProjet.

Deuxième forme normale :

- Une relation R est en 2ième forme normale si et
seulement si :
1) Elle est en 1ière forme normale.
2) s’il existe une dépendance fonctionnelle totale reliant la clé à chaque attribut non clé.

remarque : la dependance fonctionnelle totale indique que pour une cle primaire compose, l’attribut doit etre dépendant de toute la cle composée, pas seulement d’une partie.

Pour passer MembreduProjet en 2 eme forme normale ( en fait on passe directement en 3 eme forme normale )
Employe(NumeroEmploye,Nom,ville)
Appartenance(NumeroEmploye,NumeroProjet)

Troisième forme normale :

- Une relation R est en 3ième forme normale si et
seulement si :
1) Elle est en 2ième forme normale.
2) Aucun Attribut non clé ne dépend d’une clé quelconque par transitivité.

exemple :EmployeDuDepartement(NumeroEmploye,Nom,prenom,age,NumeroDepartement,DescriptionDepartement ) est en deuxieme forme normale.
En troisième forme normale, cela donne :
Employe(NumeroEmploye,Nom,prenom,age)
Departement(NumeroDepartement,DescriptionDepartement)

Pour un complément d’information sur les formes normales, je vous renvoie vers le livre de Andreas Meier – introduction pratique aux bases de données relationnelles.

A bientôt.

Laisser un commentaire