SGBD Dépendance Fonctionnel et Normalisation d'un Schéma Relationnel
Rappel Dépendance Fonctionnel Soient X et Y, 2 attributs (ou groupes d'attributs) d'une même relation Si Y dépend de X, on dit qu'il y a une dépendance fonctionnelle On note X Y si la valeur de X détermine la valeur de Y
Exemples : Rappel Dépendance Fonctionnel Adresse (nom, ville, codepostal, département) on a codepostal ville mais pas ville département Etudiant (nom, prénom, moyenne, âge, enseignant) (nom, prénom) moyenne (nom, prénom) âge
Propriétés des DF Réflexivité : Y X X Y Augmentation : X Y XZ YZ Transitivité : X Y et Y Z X Z Union : X Y et X Z X YZ Pseudo-transitivité : X Y et W Y Z W X Z Décomposition : X Y et Z Y X Z
Clés Une clé minimale X est un attribut (ou groupe d'attributs) de R dont : X R est identifié de façon unique X est le plus petit ensemble d'attributs qui identifie R Si R possède plus d'une clé minimale, celleci est appelée clé primaire Clé étrangère est un attribut de R qui est clé minimale de S
Clés R(ville, région, code) DFs possibles {ville, région} code code ville {ville} {ville, région, code} {région} {ville, région, code} {ville, région} est la clé minimale de R
Exercices Voiture(modèle, année, fabricant, couleur) Lister les DF qui sont vérifiées Identifier les clés minimales de Voiture Etudiant(numéro, nom, prénom, formation) Lister les DFs qui sont vérifiées Identifier les clés minimales d'etudiant si deux étudiants ne peuvent pas avoir le même nom et prénom laquelle choisirez vous comme clé primaire?
Exercices Une relation R(A,B,C,D,E) satisfait les DF {ABC DE, E BCD} Trouvez toutes les clés de R Une relation R(A,B,C,D) satisfait les DF {AB C, B D, BC A}. Trouvez toutes les clés de R
Normaliser un Schéma Relationnel C'est remplacer un schéma relationnel par un autre schéma "équivalent" (représentant les mêmes données) Toutes les relations du nouveau schéma sont dans une certaine forme normale respectent des règles entre les DFs
But de la Normalisation Une mauvaise répartition des données entre les relations peut occasionner de graves problèmes lors de l'évolution de la base La normalisation des relations permet d'éviter ces problèmes, essentiellement en évitant les redondances Les problèmes viennent en fait des dépendances fonctionnelles internes aux relations
Pratique de la Normalisation Normaliser un schéma relationnel c'est remplacer chaque relation du schéma par des relations qui sont dans la forme normale voulue Le schéma est équivalent si l'union des attributs communs des relations obtenues redonne la relation de départ On extrait les DF internes qui posent des problèmes, en les transférant dans de nouvelles relations
Exemple Soit donné la relation FILM FILM(titre, année, durée, type, studio, acteur) Comment éviter des tuples identifiés par {titre,année} avec différents durées, types ou studios? On sépare la relation en FILM1 et FILM2 FILM1(titre, année, durée, type, studio) FILM2(titre, année, acteur)
Exemple d'éclatement sans Perte de Données EMPLOYE(numéro, nom, département, depid) Peut s'éclater en : EMPLOYE(numéro, nom, depid) DEPARTEMENT(depID, département) Clé Étrangère
Degrés de Normalisation Il existe plusieurs degrés de normalisation : de la 1ère forme normale à la 5ème 1NF - première forme normale 2NF deuxième forme normale 3NF troisième forme normale («minimum») BCNF forme normale de Boyce-Codd 4NF quatrième forme normale 5NF cinquième forme normale Plus le degré est grand, moins on risquera de rencontrer des anomalies lors des mises à jour des données plus les conditions à remplir sont strictes
Hiérarchie des Formes Normales 1NF 2NF 3NF
1NF - Première Forme Normale Toutes les attributs sont atomiques (ne sont pas multivalués) Ex: La pseudo-relation Livre(codeISBN, titre, auteurs) peut être décomposée en 2 vraies relations : Livre(codeISBN, titre) Auteurs(codeISBN, auteur) Multivalué
1NF - Première Forme Normale Il n'existe pas d'attributs répétitifs Étudiant (numéro, nom, adresse, cours1, cours2, cours3) peut être décomposée en 2 vraies relations : Étudiant(numéro, nom, adresse) Cours(numéro, cours)
1NF - Première Forme Normale Chaque attribut a une sémantique précise Ex2 : La pseudo-relation pas très clair Film(titre, année, durée, type, studio, ville) peut comporter différents valeurs pour type genre romance, sci-fi, drame,... couleur, noir et blanc dolby, muet,...
Exercices Transformer l'exemple suivant en 1NF codetudiant Nom Adresse Cours 1214 Deschamps 10 Grande Rue Français, Physique, Latin 1250 Mounié 2 Quai Perrin Economie, Droit, Gestion 1356 Velasquez 52 rue Thiers Mathématique, Physique 1456 Kracoviak 13 avenue de Lyon Informatique, Anglais Quelles sont les désavantages?
2NF - Deuxième Forme Normale Une relation est en 2NF si elle est en 1NF si chaque attribut qui ne fait partie d'aucune clé candidate ne dépend pas d'une partie stricte d'une clé candidate Employé(matr, projet, nome, fonctionprojet) n'est pas en 2NF
Problèmes de Mise à Jour Pour modifier le nom d'un employé, on doit le modifier dans toutes les lignes des projets auxquels participe l'employé On ne peut ajouter un employé qui ne participe à aucun projet On perd toute information sur un employé qui ne participe plus à aucun projet
Normalisation en 2ème Forme On «extrait» les DF gênantes théorème de décomposition sans perte de données : Soit une relation R(A, B, C) où A, B et C sont des ensembles d'attributs disjoints, avec B C, alors R(A, B, C) = R[A, B] * R[B, C] Employé(matr, nome) Participation(matr, projet, fonctionprojet)
Exercice Soit donnée la relation Commande(NoComm, Date, TotalComm, CodClient, NomClient, Adresse, CodProd, DescriptProd, Prix, Quantité, TotalProd) Transformer en 2ème forme normale
3NF Troisième Forme Normale Objectifs de la 3NF éliminer les dépendances partielles ex: Employé(nom, depid, depnom, projet) réduit la redondance d'informations éliminer les dépendances transitives ex: Commande(NumComm,Date,TotalComm, CodClient, NomClient, Adresse) réduit des problèmes d'insertion et suppression
3NF Troisième Forme Normale Une relation est en 3NF si tout attribut qui ne fait pas partie d'une clé minimale ne peut dépendre que d'une clé minimale Employé(matr, nome, dept, nomd) n'est pas en 3NF On obtient un schéma en 3NF par extraction de la DF : Employé(matr, nome, dept) Département(dept, nomd)
BCNF Forme Normale de Boyce-Codd Une relation est en FNBC si les seules sources de DF sont les clés candidates élimine les dépendances partielles élimine les dépendances transitives élimine les anomalies de 3NF R est en BCNF ssi lorsque X A appartient à F+ et que A n'est pas dans X, alors X est une clé de R ex: Membre(nom, adresse, cotisation) F={nom adresse, nom cotisation}
Exemple de Relation PAS en BCNF Introduisons une nouvelle règle de gestion : 2 personnes d'un même département ne peuvent participer à un même projet Cette règle induit la DF suivante : (dept, codep) matr Soit la relation Participation2(dept, codep, matr, fonctionp) Elle est en 3NF mais pas en BCNF
Normalisation en BCNF Si on extrait la DF, on obtient : Participation(matr, codep, fonctionp) Emp(matr, dept) On obtient bien un schéma en FNBC mais on perd la DF (dept, codep) matr Il faut choisir entre avoir un schéma en 3 FN, avec toutes les DF avoir un schéma en FNBC, avec perte de DFd
Conséquences On peut toujours normaliser en 3NF, sans perte de données ni perte de dépendances On peut toujours normaliser en BCNF sans perte de données, mais on peut avoir des pertes de dépendances On est obligé de faire des jointures pour vérifier les règles de gestion liées aux DF perdues Exemple : avec Participation et Emp, à chaque nouvelle participation à un projet, il faut vérifier par programme qu'il n'y a pas déjà un employé du même département dans le projet
Exercice Vérifier si les relations suivantes suivent la 3NF les normaliser dans le cas contraire Commande(NoComm, Date, TotalComm, CodClient, NomClient, Adresse) ListeProds(NoComm, CodProd, Quantité, TotalProd) Produit(CodProd, Description, Prix)
Exercices Faire les exercices de la feuille 1 Foundation Tousceau Équipe Sportive Compagnie Aérienne