Bases de Données Relationnelles Normalisation d un schéma relationnel
Mises à jour et cohérence But d'un schéma logique : décrire une bd qui va effectivement être utilisée chargée, accédée, mise à jour (maj) Les maj (insertions, suppressions, modifications) doivent conserver la cohérence de la base de données intégrité référentielle toute contrainte d'intégrité en particulier les dépendances entre attributs Selon le schéma c'est + ou - facile Plus la bd contient de redondances, plus les maj avec maintien de la cohérence est difficile BDA 7.2
Exemple d'anomalies de maj LivraisonTot ( N f, adrf, N p, typep, qté ) 3 Lausanne 52 meuble 12 22 Bienne 10 ordinateur 6 22 Bienne 25 papier 210 3 Lausanne 25 papier 560 3 Vevey 10 ordinateur 15 Définition : Le fournisseur N f, qui est actuellement à telle adresse adrf, a livré au total telle quantité du produit N p, produit qui est de tel type. Si un fournisseur change d adresse et qu un seul tuple est mis à jour incohérence Si un nouveau tuple est inséré pour un fournisseur connu, avec une adresse différente incohérence Impossibilité d'enregistrer un nouveau fournisseur sans livraison BDA 7.3
Qu est-ce qu une BD relationnelle incorrecte? Une relation n est pas correcte si : elle implique des répétitions au niveau de sa population elle pose des problèmes lors des maj (insertions, modifications et suppressions) Les conditions pour qu'une relation soit correcte peuvent être définies formellement : => règles de normalisation BDA 7.4
Exemple (suite) LivraisonTot ( N f, adrf, N p, typep, qté ) 3 Lausanne 52 meuble 12 22 Bienne 10 ordinateur 6 22 Bienne 25 papier 210 3 Lausanne 25 papier 560 3 Vevey 10 ordinateur 15 L adresse du fournisseur ne dépend que du fournisseur et pas du produit. Le type du produit ne dépend que du produit et pas du fournisseur REDONDANCES Anomalies de mise à jour Cette relation n'est pas correcte. Il faut la normaliser. BDA 7.5
Normalisation d'un schéma logique Processus de transformation d'un schéma S1 pour obtenir un schéma S2 : qui est équivalent (même contenu) dont les maj assurant la cohérence de la bd sont simples maj simple : un changement élémentaire dans le monde réel se traduit par une mise à jour d'un tuple Exemples de changements élémentaires LivraisonTot (N f, adrf, N p, typep, qté) La quantité totale pour un produit et un fournisseur est mise à jour => 1 tuple à m.a.j. Un fournisseur change d'adresse => N tuples à m.a.j. BDA 7.6
Normalisation d'une relation Processus de décomposition d'une relation à maj complexes en plusieurs relations à maj simples Processus sur le schéma relationnel formel Exemple : La relation LivraisonTot (N f, adrf, N p, typep, qté) sera décomposée en : LivraisonTot (N f, N p, qté) Fournisseur (N f, adrf) Produit (N p, typep) BDA 7.7
Normalisation On mesure la qualité d'une relation par son degré de normalisation : 1FN (première forme normale), 2FN, 3FN, FNBC (forme normale de Boyce Codd), 4FN, etc. 1FN 2FN 3FN FNBC 4FN BDA 7.8
Normalisation ou traduction EA Niveau conceptuel (EA) Schéma EA VALIDATION Règles Niveau logique (Relationnel) Schéma Relationnel NORMALISATION Schéma EA valide TRADUCTION EA - R Schéma relationnel normalisé BDA 7.9
Exemple Fournisseur (NF, Nom, Adr) Produit (NP, Nom, Type) Livraison (NP, NF, Date, Qté, Tél) Fournisseur Nom Adr. Livraison 0-n 0-n Date VALIDATION Règles Qté Tel Produit Nom Type Décomposition des relations incorrectes NORMALI- SATION Fournisseur Nom Adr. Tel Livraison 0-n 0-n Qté Date Produit Nom Type TRADUCTION Produit (NP, Nom, Type) Fournisseur (NF, Nom, Adr, Tél) Livraison (NP, NF, Date, Qté) BDA 7.10
Dépendance fonctionnelle L adresse d un fournisseur ne dépend que du fournisseur,.. DÉPENDANCE FONCTIONNELLE (DF) Notation : A, B, C attributs X, Y, Z ensembles d'attributs Définition : Soit une relation R (X, Y, Z) il existe une DF : X Y si et seulement si dans R à une même valeur de X correspond toujours une même valeur de Y BDA 7.11
Dépendance fonctionnelle (suite) R : X Y Z x1 y1 z1... x1 y1 z2... X Y: X détermine Y Y dépend de X X : source de la DF, Y : cible de la DF La source peut être un ensemble d attributs : (nom, prénom) adresse BDA 7.12
Propriétés des DF Transitivité : si X Y et Y Z alors X Z (DF déduite) Augmentation : si X Y alors (A, X) Y (DF non élémentaire) quelque soit A On ne s intéresse qu aux DF élémentaires non déduites Elles expriment les faits élémentaires du monde réel Ce sont elles qui permettent de déterminer si une relation est bonne et sinon comment la décomposer BDA 7.13
Graphe des DF Pour chaque relation il faut recenser toutes ses DF élémentaires et non déduites. On les représente sous forme d'un graphe orienté graphe minimum des DF de la relation Une relation peut avoir plusieurs graphes minimum. Ils sont alors équivalents Exemple de graphe minimum : R (A, B, C, D, E) E A E B E C ( E A, B, C) C D E A B C D BDA 7.14
Utilité du graphe des DF Vérifier que le graphe est bien minimum Trouver les identifiants de la relation Tester si la relation est bonne (bien normalisée) Sinon trouver les décompositions Exemple de graphe non minimum E A B C X D E D est déduite de E C et C D Il faut supprimer E D du graphe BDA 7.15
Vérifier qu'un graphe est minimum DF déduite X D est déduite s'il existe un autre chemin X A1...An D X X D DF non élémentaire X D est non élémentaire s'il existe une DF Y D telle Y est un sousensemble des attributs de X (A,B,C) D est non élémentaire A B C X D BDA 7.16
Exemple de graphe des DF LivraisonTot (N f, adrf, N p, typep, qté) N f adrf l adresse d un fournisseur ne dépend que du fournisseur N p typep le type d un produit ne dépend que du produit (N f, N p) qté la quantité totale livrée dépend du produit et du fournisseur [faux : N f qté, N p qté ] N f N p adrf qté typep BDA 7.17
Un autre exemple RU (N E, nom, prénom, adr, daten, nomc, année, nbcrédits, prof, note) Définition : L'étudiant de numéro N E a tel nom, tel prénom et habite actuellement à telle adresse (adr). L'étudiant (N E) a obtenu telle année tel cours (nomc) avec telle note. Cette année là le cours était sous la responsabilité de tel prof et valait tant de crédits (nbcrédits). Faire le graphe minimum des DF BDA 7.18
Graphe des DF de RU note N E nomc année nom prénom adr daten nbcrédits prof BDA 7.19
DFs et identifiants Le graphe minimum des DF permet de trouver les identifiants de la relation L identifiant d une relation est l ensemble (minimal) des nœuds du graphe minimum à partir desquels on peut atteindre tous les autres nœuds (via les DF) Preuve : Pour que ce soit faux il faudrait qu il y ait deux lignes avec la même valeur de l «identifiant» et des valeurs différentes pour les autres attributs, ce qui est en contradiction avec les DF. Exemple : R (A, B, C, D, E) E est l'identifiant de R E A B C D BDA 7.20
DFs et identifiants - Exemple Autre exemple : R (A, B, C, D, E, F, G) F G A B C E D (F, G) est l'identifiant de R BDA 7.21
Normalisation par décomposition Soit une relation R qui contient des redondances et pose des problèmes lors des maj "Elle n'est pas normalisée" Il faut la décomposer en plusieurs relations meilleures ("normalisées") par projection en suivant les DF cela assure d'obtenir des relations normalisées. Il faut s'assurer de conserver le même contenu La jointure des nouvelles relations = R BDA 7.22
Normalisation par décomposition (2) R (A1, A2,, An) décomposition jointure R1 = π[a1, A2, Ai] R R2 = π[ai, Ai+1, Aj] R. Rk = π[al, Al+1, An] R nouvelle BD Si R = R1*R2* *Rk la décomposition est sans perte d'information Les requêtes sur R et celles sur la nouvelle BD donneront toujours le même résultat BDA 7.23
Théorème de Heath THEOREME : R (X, Y, Z) est décomposable sans perte d information en R1 = π[x,y]r R2 = π[x,z]r si la DF X Y existe R1 est alors nécessairement normalisée (en 3FN). Elle décrit le fait élémentaire X Y Les requêtes posées sur R et celles posées sur R1*R2 donnent le même résultat BDA 7.24
Exemple : décomposition sans perte d'info R (NomEmp, adresse, poste, age) Zoé Lausanne secrétaire 27 Armand Genève secrétaire 32 Marie Bienne directeur 38 R1 (NomEmp, adresse, poste) Zoé Lausanne secrétaire Armand Genève secrétaire Marie Bienne directeur R2 (NomEmp, age) Zoé 27 Armand 32 Marie 38 R = R1*R2 NB Cette décomposition est sans perte d'information, mais inutile BDA 7.25
Exemple : décomposition avec perte d'info R1' (NomEmp, adresse, poste) R2' (poste, age) Zoé Lausanne secrétaire secrétaire 27 Armand Genève secrétaire secrétaire 32 Marie Bienne directeur directeur 38 R1' * R2' Zoé Lausanne secrétaire 27 Zoé Armand Lausanne Genève secrétaire secrétaire 32 27 R Armand Genève secrétaire 32 Marie Bienne directeur 38 Cette décomposition ne suit pas Heath BDA 7.26
Application de Heath LivraisonTot (N f, adrf, N p, typep, qté) N f N p adrf qté typep N f adrf => R1 (N f, adrf) ok LivraisonTot' (N f, N p, typep, qté) N p typep => R2 (N p, typep) ok LivraisonTot'' (N p, N f, qté) (N p, N f) qté => LivraisonTot'' (N p, N f, qté) ok BDA 7.27
Qualité d une décomposition Une «bonne» décomposition est une décomposition 1) sans perte d information 2) sans perte de DF 3) qui produit des relations meilleures (mieux normalisées) Sans perte de DF : Toute DF doit être dans l une des relations obtenues par décomposition Une DF ayant comme source un identifiant sera automatiquement vérifiée par le SGBD Une DF perdue => une contrainte d'intégrité implicite => le SGBD ne peut pas la vérifier BDA 7.28
Vérification des DF par le SGBD LivraisonTot ( N f, adrf, N p, typep, qté ) DF vérifiées par le SGBD : (N f, N p) adrf, typep, qté Un même fournisseur peut avoir deux adresses Un même produit peut avoir deux types LivraisonTot2 ( N f, N p, qté ) Fournisseur ( N f, adrf ) Produit ( N p, typep ) DF vérifiées par le SGBD : N f adrf N p typep (N f, N p) qté BDA 7.29
Formes normales : 1FN Une relation est en 1FN si chaque valeur de chaque attribut de chaque tuple est une valeur simple (tous les attributs sont simples et monovalués). Exemple : LivraisonTot (N f, adrf, N p, typep, qté) est en 1FN Pratiquement, en relationnel on ne travaille que sur des relations en 1FN BDA 7.30
2ème forme normale : 2FN Permet d éliminer les attributs qui ne décrivent pas l «objet» représenté par la relation LivraisonTot (N f, adrf, N p, typep, qté) N f N p adrf qté typep Livraison mélange la description : - de la livraison cumulée ( N f, N p, quantité) - du fournisseur ( N f, adresse) - du produit ( N p, type) BDA 7.31
2ème forme normale : définition LivraisonTot (N f, adrf, N p, typep, qté) N f N p adrf qté typep Des DF partent de composants de l identifiant => Livraison n est pas en 2FN Définition : une relation est en 2FN si - elle est en 1FN, et - chaque attribut qui ne fait pas partie de l identifiant dépend d un identifiant entier BDA 7.32
Décomposition selon les DF Pour chaque source de DF créer une relation comprenant : la source et tous les attributs cibles de DF ayant cette source R1 N f N p adrf qté typep R2 R1 (N f, adrf) R2 (N p, typep) R3 (N f, N p, qté) R3 BDA 7.33
3FN : 3ème forme normale Permet d éliminer des sous-relations incluses dans une relation Exemple : Fournisseur (N fourn, ville, pays) N fourn ville X pays doit être décomposée en : F (N fourn, ville) G (ville, pays) N fourn ville pays BDA 7.34
3ème forme normale : définition Fournisseur (N fourn, ville, pays) N fourn ville pays Profondeur de l arbre des DF > 1 => Fournisseur n'est pas en 3FN Définition : Une relation est en 3FN si - elle est en 1FN, et - chaque attribut qui ne fait partie d aucun identifiant dépend directement d un identifiant entier BDA 7.35
Importance de la 3FN Toute relation peut toujours être décomposée en relations en 3FN sans aucune perte sans perte de DF, et sans perte d'information Ce n'est pas vrai pour les formes supérieures Il faut donc toujours faire des schémas au moins en 3FN BDA 7.36
Forme normale de Boyce-Codd Généralise la 3FN aux relations à plusieurs identifiants Fournisseur (N fourn, nom-fourn, N produit, prix) avec 2 identifiants : (N fourn +N produit) (nom-fourn + N produit) 3NF Mais des redondances : N fourn et nom-fourn Définition : Une relation est en FNBC si : - elle est en 1FN, et - si toute source complète de DF est un identifiant entier BDA 7.37
FNBC - exemple : Fournisseur Fournisseur (N fourn, nom-fourn, N produit, prix) N fourn N produit nom-fourn prix (2 graphes possibles) Identifiants : (N fourn + N produit) (nomfourn + N produit) Fournisseur est en 3FN mais pas en FNBC On doit décomposer pour obtenir des relations en FNBC Attention : Ce passage en FNBC n est pas toujours possible sans perte de dépendances BDA 7.38
Décompostion de Fournisseur Fournisseur (N fourn, nom-fourn, N produit, prix) N fourn N produit nom-fourn prix F2 F1 F1 (N fourn, nom-fourn) avec 2 identifiants F2 (N fourn, N produit, prix) ou (si l'on prend l'autre graphe des DF) F1 (N fourn, nom-fourn) avec 2 identifiants F2 (nom-fourn, N produit, prix) BDA 7.39
FNBC - exemple : Place Place (N Etud, Matière, Rang) rang sans ex aequo N Etud Matière Rang 2 identifiants : (N Etud + Matière) (Rang + Matière) Place est en 3FN et est en FNBC BDA 7.40
FNBC contre-exemple Enseignement (N Etud, Matière, Prof) N Etud Matière Prof 2 identifiants : (N Etud + Matière) (N Etud + Prof) Enseignement est en 3FN mais n est pas en FNBC BDA 7.41
Décomposition de Enseignement Enseignement (N Etud, Matière, Prof) La décomposition selon Heath : R1 (Prof, Matière) R2 (Prof, N Etud) est sans perte d information mais avec perte de la DF (N Etud, Matière) Prof On peut insérer des tuples qui transgressent la DF INSERT INTO R1 : (Rochat, BD) INSERT INTO R1 : (Walis, BD) INSERT INTO R2 : (Rochat, 12345) INSERT INTO R2 : (Walis, 12345) BDA 7.42
Enseignement : 2 solutions Solution 1 Enseignement (N Etud, Prof, Matière) avec la CI : un prof n'enseigne qu'une seule matière Solution 2 R1 (Prof, Matière) R2 (Prof, N Etud) avec la CI : un étudiant suit une matière donnée avec un seul prof Pas de solution idéale La solution 1 est préférable elle génère moins de jointures lors des requêtes la CI est mono-relation BDA 7.43
Algorithmes de décomposition / DF Plusieurs algorithmes pour décomposer selon les DF Algorithme 1 (d'après Heath) R (A1, A2, A3, An) Tant qu'il existe une DF élémentaire non déduite faire : Soit Ai Aj la DF Soient Ak, Al les autres attributs qui dépendent directement de Ai : Ai (Aj, Ak, Al) Remplacer R par R1 (Ai, Aj, Ak, Al) R2 (Ai, attributs de R autres que Aj, Ak, Al) Recommencer l'algorithme pour R1 et R2 BDA 7.44
Algorithme 1 F G A B C E D H Avantages relations en FNBC Inconvénients R1 (F, A, B) R2 (G, E) R3 (C, D, H) R4 (F, G, C) R1 (F, A, B) R2 (G, E) R3' (F, G, C) R4' (F, G, D, H) CI : C D,H dépend de l'ordre selon lequel les DF sont traitées peut perdre des DF peut trop décomposer BDA 7.45
Méthode pragmatique Algorithme 2 (à partir des sources de DF) R (A1, A2, A3, An) Tant qu'il existe une source de DF élémentaire non déduite faire : Choisir si possible une source dont toutes les cibles sont des extrémités terminales du graphe Soient Ai la source et Ai (Aj, Ak, Al) les DF Créer la relation Ri (Ai, Aj, Ak, Al) Supprimer les attributs Aj, Ak, Al de R Si aucune des relations Ri ne contient un identifiant de R alors ajouter la relation : R0 (un identifiant de R) NB La jointure avec R0 assure la non perte d'information BDA 7.46
Algorithme 2 F G R1 (F, A, B) A B C E R2 (G, E) R3 (C, D, H) D H R4 (F, G, C) Avantages relations en FN3 ne perd pas de DF ne perd pas d'information (grâce à R0) Inconvénients peut trop décomposer (cf. Enseignement) BDA 7.47
Un autre type de dépendance Certaines relations en FNBC peuvent encore contenir des redondances, et poser des problèmes lors des maj Exemple : Cours (nomc, prof, livre) CI : Pour chaque cours, il y a un ensemble de profs et un ensemble de livres; ces deux ensembles sont indépendants. Relation en non 1FN nomc prof livre Programmation BD Duval Schmidt Jouve Rochat Algorithmes Progr.1 Date Ullmann Gardarin BDA 7.48
Un autre type de dépendance (2) Cours (nomc, prof, livre) en 1FN nomc prof livre Programmation Duval Algorithmes Programmation Duval Progr.1 Programmation Schmidt Algorithmes Programmation Schmidt Progr.1 BD Jouve Date BD Jouve Ullmann BD Jouve Gardarin BD Rochat Date BD Rochat Ullmann BD Rochat Gardarin Cours contient beaucoup de redondances BDA 7.49
Un autre type de dépendance (3) Cours pose des problèmes de maj ajouter un nouveau professeur, Alex, au cours de BD corriger le nom d'un livre Cependant Cours est déja bien normalisée Cours est en FNBC parce qu'il n'y a pas de DF En EA, Cours aurait deux attributs multivalués profs livres indépendants l'un de l'autre BDA 7.50
Dépendance multivaluée (DM) Définition : Soit une relation R (X, Y, Z) Il y a dépendance multivaluée X --->> Y si à toute valeur de X correspond un ensemble de valeurs de Y qui est totalement indépendant de Z Propriété : S'il y a la DM X-->>Y alors il y a aussi X-->>Z On note : X-->>Y Z Remarque : DF est un cas particulier de DM BDA 7.51
Graphe des dépendances de Cours Cours (nomc, prof, livre) nomc prof livre La relation Cours contient une DM : nomc -->> prof livre L'identifiant de livre est (nomc, prof, livre) BDA 7.52
4ème forme normale (4FN) Sémantique : La 4FN permet de séparer des faits multivalués indépendants qui auraient été réunis dans une même relation Définition : R est en 4FN si : - elle est en 1ère FN, et - si toute DF ou DM de R a pour source un identifiant entier de R Remarque : 4FN implique FNBC Autre définition : R est en 4FN si elle est en FNBC et ne contient pas de DM BDA 7.53
Décomposition selon une DM Théorème de Heath n 2 Si R(X, Y, Z) contient la DM X-->>Y Z alors la décomposition en : R1 = π[x,y]r et R2 = π[x,z]r est sans perte d'information. Exemple : Cours (nomc, prof, livre) est décomposé en : CoursProf (nomc, prof) CoursLivre (nomc, livre) 4FN 4FN FNBC Ces deux relations ne contiennent ni DF ni DM prof nomc livre BDA 7.54
Un dernier type de dépendance (DJ) Permet de décomposer une relation qui regrouperait 3 (ou +) liens indépendants Exemple : Vins (buveur, cru, producteur) Si Vins peut être décomposée en 3 relations V1 (buveur, cru) V2 (buveur, producteur) V3 (cru, producteur) avec Vins = V1 * V2 * V3 (jointure des 3 relations) On dit qu il y a dépendance de jointure (DJ) En EA, Vins serait une fausse association ternaire. Le réel contient 3 liens binaires indépendants. BDA 7.55
Cinquième Forme Normale (5FN) Vins contient des redondances et pose des problèmes lors des maj Il faut donc décomposer Vins en V1, V2 et V3 Définition : R est en 5FN si toute dépendance de jointure est impliquée par un identifiant (DJ triviale) Vins est en 4FN, mais pas en 5FN V1, V2 et V3 sont en 5FN BDA 7.56
DJ triviale - Exemple Vin' (nomvin, année, couleur, goût, parfum) peut être décomposé en : Vin1 (nomvin, année, couleur) Vin2 (nomvin, année, goût) Vin3 (nomvin, année, parfum) car Vin = Vin1 * Vin2 * Vin3 Mais ce serait inutile, car Vin' ne contient pas de redondance Vin' est déjà en 5FN La décomposition de Vin' n'apporterait aucun gain de forme normale BDA 7.57
DJ - conclusion Pratiquement Les DJ sont rares et pas faciles à détecter On normalise en général en 4FN (si possible) Cependant Une relation en 4FN peut contenir encore des redondances et poser des problèmes lors des m.a.j. D'autres FN ont encore été proposées. BDA 7.58
Conclusion Conception d'une bd relationnelle Objectif : arriver à un ensemble de relations tel que - chaque relation décrit un type d «objet» avec les seuls attributs qui lui sont directement liés - les redondances d information (génératrices de problèmes lors des mises à jour) sont éliminées BDA 7.59
Conception d une BD relationnelle Méthode 1 : par normalisation Décomposition sans perte d information et sans perte de dépendances Outils : - dépendances fonctionnelles multivaluées dépendances de jointure - règles de normalisation BDA 7.60
Limites de la méthode 1 OK si le choix des relations initiales est bon décomposition de chaque relation indépendamment des autres Solution théorique : partir de la relation universelle relation qui contient tous les attributs gros schéma => nombre de dépendances énorme Autre solution : partir d'un schéma contenant plusieurs relations normaliser chaque relation (décomposition) vérifier la cohérence du schéma obtenu relations de même identifiant à fusionner (trop décomposé) BDA 7.61
Conception d une BD relationnelle Méthode 2 : par l'entité association Conception d un schéma entité-association puis traduction de celui-ci en schéma relationnel Si la traduction n'a pas pris en compte les dépendances, vérifier la FN de chaque relation Employé AVS nom service avec la DF : noms adresse noms adresse BDA 7.62