bases de données - irifamelie/normalisation1617.pdfbases de données bases de données...
TRANSCRIPT
-
Bases de Données
Bases de Données
Amélie Gheerbrant
Université Paris DiderotUFR InformatiqueLaboratoire d’Informatique Algorithmique : Fondements et Applications
16 novembre 2016
1 / 63
-
Bases de Données
Normalisation
Contraintes et conception de schéma
I On sait que les bases de données doivent typiquementsatisfaire certaines contraintes d’intégrité
I Les plus communes sont les dépendance fonctionnelles etd’inclusion
I Nous allons étudier certaines propriétés de ces contraintesd’intégrité
I Nous allons voir comment elles influencent la conception deBD, en particulier, comment elles nous permettent dedéterminer quel type d’information devrait être stocké dansquelle relation
2 / 63
-
Bases de Données
Normalisation
Les dépendances fonctionnelles et les clefsI Une dépendance fonctionnelle est de la forme X → Y où X ,Y
sont des séquences d’attributs. Elle vaut dans une relation R sipour tous tuples t1, t2 de R :
πX (t1) = πX (t2) implique πY (t1) = πY (t2)
I Un cas spécial très important : les clefsI Soit K un ensemble d’attributs de R , et U l’ensemble de tous
les attributs de R . Alors K est une clef si R satisfait ladépendance fonctionnelle K → U.
I i.e., un ensemble d’attributs K est une clef de R si pour toustuples t1, t2 de R ,
πK (t1) = πK (t2) implique t1 = t2I Une clef est donc un ensemble d’attributs qui définit de
manière unique un tuple dans une relation.3 / 63
-
Bases de Données
Normalisation
Problèmes
I Bonnes vs Mauvaises contraintes : certaines contraintespeuvent être indésirables car susceptibles de mener à desproblèmes.
I Problème de l’implication : supposons qu’on nous donne unensemble de contraintes, est-ce qu’elles en impliquentd’autres ?Important, car on n’a jamais la liste de toutes les contraintesqui valent dans une BD (trop grande, ou tout simplementinconnue du concepteur)Toutes les contraintes connues peuvent avoir l’air ok, maisimpliquer de mauvaises contraintes
I Axiomatisation de contraintes : moyen simple de formulerl’implication de contraintes.
4 / 63
-
Bases de Données
Normalisation
Mauvaises contraintes : exempleDRE Dept Res Empl
D1 Smith JonesD1 Smith BrownD2 Turner WhiteD3 Smith TaylorD4 Smith Clarke... ... ...
ES Empl SalaireJones 10Brown 20White 20... ...
On observe les dépendances fonctionnelles suivantes :I dans DRE : Departement → Responsable, mais pas :
I Dept → EmplI Resp → DeptI Resp → Empl
I dans ES : Empl → Salaire (Employe est une clef de ES),mais pas Salaire → Empl
5 / 63
-
Bases de Données
Normalisation
Anomalies de mise à jour
I Anomalies d’insertion : une entreprise engage un nouvelemployé, mais ne l’assigne pas tout de suite à un département.On ne peut pas enregistrer ce fait dans la relation DRE.
I Anomalies de suppression : l’employé White quittel’entreprise. Il nous faut donc supprimer un tuple de DRE.Mais ceci entraine aussi la suppression du responsable Turner,alors qu’il n’est pas parti !
I Anomalies de modification : imaginons que Smith soitremplacé à la tête de D1 par Turner. Il faut alors modifier tousles triplets de DRE correspondant.
6 / 63
-
Bases de Données
Normalisation
Anomalies de mise à jour
I Raisons : association entre employés et responsables dans lamême relation que association entre responsables etdépartements + le même fait (département D dirigé par R)peut être représenté plus d’une fois.
I Dans le langage des dépendances fonctionnelles :
Dept → Resp, mais Dept n’est pas une clef
I En général on essaie d’éviter ce genre de situations.
7 / 63
-
Bases de Données
Normalisation
Dépendances et implicationsI Soit une relation R avec trois attributs A,B,CI On nous dit que R satisfait A → B et B → {A,C}I Ressemble au mauvais exemple de tout à l’heure :
on a A → B sans mention de CI Mais en fait, A est une clef :
si πA(t1) = πA(t2), alors πB(t1) = πB(t2)
et comme B est une clef, t1 = t2I Donc, même sans savoir qu’A était une clef, nous avons pu le
dériver, car les autres dépendances l’impliquaient.I En utilisant l’implication, on peut trouver toutes les
dépendances et déterminer s’il y a un problème de conception.
8 / 63
-
Bases de Données
Normalisation
L’implication pour les dépendances fonctionnelles
I On essaie seulement de trouver les dépendances non trivialesUne dépendance triviale c’est X → Y avec Y ⊆ X
I Supposons donné l’ensemble U des attributs d’une relation, unensemble F de dépendances fonctionnelles (DFs), et une DF fsur U. Alors F implique f , noté
F ` f
ssi pour toute relation R sur les attributs U, si R satisfaittoutes les DFs de F, alors elle satisfait aussi f.
I Problème de l’implication : Etant donné U et F , trouvertoutes les DFs non triviales telles que F ` f .
9 / 63
-
Bases de Données
Normalisation
L’implication pour les dépendances fonctionnellesI Ensemble clos par rapport à F : sous ensemble V de U t.q.
pour tout X → Y dans F,
si X ⊆ V , alors Y ⊆ V
I Propriétés des DFs : pour tout ensemble V, il existe un uniqueensemble CF (V ), appelé clôture de V par rapport à F, tel que
I CF (V ) est closI V ⊆ CF (V )I Pour tout ensemble clos W : V ⊆W implique CF (V ) ⊆W .
I Solution du problème de l’implication :Une DF X → Y est impliquée par F
si et seulement siY ⊆ CF (X )
10 / 63
-
Bases de Données
Normalisation
Implication et clôture
I Pour résoudre le problème de l’implication, il suffit de trouverla clôture de chaque ensemble d’attributs.
I Approche naïve pour trouver CF (X ) : vérifier tous les sousensembles V ⊆ U, vérifier qu’ils sont clos, et sélectionner leplus petit ensemble clos contenant X .
I Problème : c’est trop coûteux.I Si U a n elements et X a m < n éléments, alors il y’a 2n−m
sous ensembles de U qui contiennent V .I En fait on va considérer un algorithme beaucoup plus efficace.
11 / 63
-
Bases de Données
Normalisation
Implication et clôture
Algorithme CLOTURE
Entrée : un ensemble F de DFs, et un ensemble X d’attributsSortie : CF (X )1. inutilisé := F2. clôture := X3. répéter jusqu’à ce que plus de changement :
si Y → Z ∈ inutilisé et Y ⊆ clôture alors(i) inutilisé := inutilisé - {Y → Z}(ii) clôture := clôture ∪Z
4. Sortie : clôture.
12 / 63
-
Bases de Données
Normalisation
Clôture : exemple
I Pratique commune : écrire AB pour l’ensemble {A,B}, BCpour {B,C} etc
I U = {A,B,C}, F = {A→ B,B → AC}I Clôture :
CF (∅) = ∅CF (C ) = CCF (B) = ABCd’où CF (X ) = ABC pour tout X qui contient BCF (A) = ABCd’où CF (X ) = ABC pour tout X qui contient A
13 / 63
-
Bases de Données
Normalisation
Clôture : exemple pratiqueSoit U = {NomFournisseur ,Adresse,Produit,Prix ,FraisTransport} etF = {F1,F2,F3}, avec :
I F1 = NomFournisseur → AdresseI F2 = NomFournisseur ,Produit → PrixI F3 = Adresse,Produit → FraisTransport
Calcul de CF (NomFournisseur ,Produit) :1. inutilisé={F1,F2,F3}, clôture={NomFournisseur ,Produit}2. inutilisé={F3}, clôture={NomFournisseur ,Produit,Adresse,Prix}3. inutilisé=∅,
clôture={NomFournisseur ,Produit,Adresse,Prix ,FraisTransport}4. Fin (plus de DF à appliquer) :
CF (NomFournisseur ,Produit)=clôture
On en déduit que :F ` NomFournisseur ,Produit → Adresse,Prix ,FraisTransport
14 / 63
-
Bases de Données
Normalisation
Propriétés de la clôtureI X ⊆ CF (X )I X ⊆ Y implique CF (X ) ⊆ CF (Y )I CF (CF (X )) = CF (X )
On peut utiliser l’algorithme de clôture pour déterminer si unensemble de DFs F implique une DF f :
F ` Y → Z ⇔ Z ∈ CF (Y )
ou pour déterminer étant donné F , la clef d’un schéma de relationR , on supprime tous les attributs de R jusqu’à arriver à unensemble K ⊆ R t.q. :
I CF (K ) = R
I ∀A ∈ K ,CF (K − {A}) 6= R (i.e., K est minimal)15 / 63
-
Bases de Données
Normalisation
Clefs, clefs candidates et attributs primairesI Un ensemble X d’attributs est une clef pour F si X → U est
impliqué par F (i.e., si X détermine tous les attributs)I C’est-à-dire, X est une clef si CF (X ) = UI Dans le premier exemple, tout ensemble qui contient A ou B
est une clef.I Clefs candidates : plus petites clefs, i.e., clefs X t.q. pour tout
Y ⊂ X , Y n’est pas une clef.I Dans l’exemple précédent : A et BI Attribut primaire : attribut d’une clef candidate.
Attention : on parle parfois de superclefs (au lieu de clefs) versusclefs (au lieu de clef candidates). Il y a un flottementterminologique dans la littérature...
16 / 63
-
Bases de Données
Normalisation
Dépendances d’inclusionI Les dépendances fonctionnelles et d’inclusion sont les plus
fréquentes dans les applications.I Rappel : R[A1, . . . ,An] ⊆ S [B1, . . . ,Bn] veut dire que pour
tout tuple t dans R , il y a un tuple t ′ dans S t.q.
πA1,...,An(t) = πB1,...,Bn(t′)
I Supposons que l’on ait un ensemble de noms de relations et dedépendances d’inclusion (DIs) sur eux. Peut-on dériver toutesles DIs qui sont valides ?
I Formellement, soit G un ensemble de DIs et g une DI. On ditque G implique g , noté
G ` gsi tout ensemble de relations qui satisfait toutes les DIs dans Gsatisfait aussi g .
I La réponse est positive, comme pour les DFs.17 / 63
-
Bases de Données
Normalisation
Implication et dépendances d’inclusionIl existe un ensemble de règles simples :
1. R[A] ⊆ R[A]2.
si R[A1, . . . ,An] ⊆ R[B1, . . . ,Bn]
alors R[Ai1 , . . . ,Ain ] ⊆ R[Bi1 , . . . ,Bin ]
où {i1, . . . , in} est une permutation de {1, . . . , n}3.
si R[A1, . . . ,Am,Am+1, . . . ,An] ⊆ R[B1, . . . ,Bm,Bm+1, . . . ,Bn]
alors R[A1, . . . ,Am] ⊆ R[B1, . . . ,Bm]
4. si R[X ] ⊆ S [Y ] et S [Y ] ⊆ T [Z ] alors R[X ] ⊆ T [Z ](Attention, voir transparent précédent, ici les attributs sont ordonnés !)
18 / 63
-
Bases de Données
Normalisation
Implication et dépendances d’inclusion
I Une DI g est impliquée par G ssi elle peut être dérivée par desapplications répétées des quatre règles précédentes
I Donne immédiatement un algorithme coûteux : appliquertoutes les règles jusqu’à ce qu’il n’y en ait plus d’applicables
I Et en fait, le problème est vraiment dur : on ne peut pastrouver d’algorithme raisonnable pour le résoudre
Une restriction du problème :I DIs unaires : de la forme R[X ] ⊆ S [Y ]I L’implication G ` g peut être testée en temps polynomial pour
les DIs unaires.
19 / 63
-
Bases de Données
Normalisation
Dépendances fonctionnelles et d’inclusionI Pour la majorité des applications on a besoin de considérer
seulement deux types de dépendances : DFs et DIsI Le problème de l’implication peut être résolu pour les DFs et
les DIsI Est-ce qu’il peut être résolu pour les DFs et les DIs ensemble ?I I.e., est-ce que, étant donné un ensemble de DFs F , un
ensemble de DIs G , une DF f , une DI g , on peut déterminer si
F ∪ G ` f
F ∪ G ` g
i.e., si toute BD qui satisfait F et G doit aussi satisfaire f (ou g)I En fait, aucun algorithme ne peut résoudre ce problème
20 / 63
-
Bases de Données
Normalisation
Encore plus de restrictions
I Les relations sont typiquement déclarées avec juste des clefsprimaires et les dépendances d’inclusion occurrent dans lesdéclaration de clef étrangères.
I Est-ce que l’implication peut être décidée algorithmiquementjuste pour les clefs primaires et les clefs étrangères ?
I La réponse est toujours NONI Il est donc intrinsèquement dur de raisonner à propos des
classes de contraintes les plus basiques en BD relationnelles.
21 / 63
-
Bases de Données
Normalisation
Quand l’implication peut-elle être résolue pour les DFs et lesDIs ?
I Rappel : une DI unaire est de la forme R[X ] ⊆ S [Y ]I On peut tester l’implication pour les DIs unaires et les DFs
arbitrairesI De plus, on peut le faire en temps polynomialI Cependant, l’algorithme en question est plutôt complexe.
22 / 63
-
Bases de Données
Normalisation
Dépendances : résuméI DFs : X → YI Clefs : X → U, où U est l’ensemble de tous les attributs de la
relation.I Clef candidate : clef minimale
(tout sous ensemble de X est une clef)I Dépendance d’inclusion : R[A1, . . . ,An] ⊆ S [B1, . . . ,Bn]
(unaire si n=1)I Clef étrangère : R[A1, . . . ,An] ⊆ S [B1, . . . ,Bn] et {B1, . . . ,Bn} est
une clefI Problème de l’implication :
facile pour les DFs seulesdifficile mais décidable pour les DIs seulesdécidable par un algorithme complexe pour DFs + DIs unairesindécidable pour DFs + DIs, et mêmeindécidable pour les clefs primaires et les clefs étrangères
23 / 63
-
Bases de Données
Normalisation
La conception de bases de données
I Trouver des schémas de bases de données avec de bonnespropriétés
I Bonnes propriétés :I pas d’anomalie de mise à jourI pas de redondanceI pas de perte d’information
I Entrée : liste d’attributs et de contraintes (d’habitude, desdépendances fonctionnelles)
I Sortie : liste de relations et de contraintes
24 / 63
-
Bases de Données
Normalisation
Exemple : mauvaise conception
I Attributs :titre, réalisateur, cinéma, adresse, téléphone, heure, prix
I Contraintes :I DF1 cinéma → adresse, téléphoneI DF2 cinéma, heure, titre → prixI DF3 titre → réalisateur
I Mauvaise conception : tout mettre dans la même relationMAUVAIS[titre, réalisateur, cinéma, adresse, téléphone, heure, prix]
25 / 63
-
Bases de Données
Normalisation
Pourquoi Mauvais est-elle mauvaise ?I Redondance : beaucoup de faits sont répétés
I réalisateur est déterminé par titre
Pour toute séance, on liste à la fois le réalisateur et le titre.I adresse est déterminé par cinéma
Pour tout film joué, on répète l’adresse.
I Anomalies de mise à jour :I si adresse change dans un tuple, on obtient de l’incohérence,
car il faut la changer dans tous les tuples correspondant àchaque film et séance
I si un film cesse d’être joué, on perd l’association entre titre etréalisateur
I on ne peut pas ajouter un film avant qu’il commence à êtrejoué
26 / 63
-
Bases de Données
Normalisation
Bonne conception
Séparer Mauvais en 3 relations
I Schéma relationnel Bon :Table attributs contraintesT1 cinéma, adresse, téléphone DF1 : cinéma → adresse, téléphoneT2 cinéma, titre, heure, prix DF2 : cinéma, heure, titre → prixT3 titre, réalisateur DF3 : titre → réalisateur
27 / 63
-
Bases de Données
Normalisation
Pourquoi Bon est-il bon ?
I Pas d’anomalie de mise à jour : toute DF est une clefI Pas de perte d’information :
I T1 = πcinema,adresse,telephone(Mauvais)I T2 = πcinema,titre,heure,prix(Mauvais)I T3 = πtitre,realisateur (Mauvais)I Mauvais = T1 ./ T2 ./ T3
I Aucune contrainte n’est perdueDF1, DF2, DF3 apparaissent toutes comme contraintes de T1,T2, T3
Impact sur les requêtes (bémol) : le temps d’exécution peutmaintenant augmenter lorsqu’il y a des jointures à faire.
28 / 63
-
Bases de Données
Normalisation
Forme normale de Boyce-Codd (FNBC)
I Qu’est-ce qui cause les anomalies de mise à jour ?I Les dépendances fonctionnelles X → Y où X n’est pas une clefI Une relation est en forme normale de Boyce-Codd (FNBC) si
pour toute DF non triviale X → Y , X est une clefI Une base de données est en FNBC si toutes ses relations sont
en FNBC
29 / 63
-
Bases de Données
Normalisation
Décompositions : critères de bonnes conception
Etant donné un ensemble d’attributs U et un ensemble dedépendances fonctionnelles, une décomposition de (U,F ) est unensemble
(U1,F1), . . . , (Un,Fn)
où Ui ⊆ U et Fi est un ensemble de DFs sur les attributs Ui
Une décomposition est en FNBC si chaque (Ui ,Fi ) est en FNBC
30 / 63
-
Bases de Données
Normalisation
Décompositions : critères de bonnes conceptionI Sans perte d’information (SPI) si pour toute relation R sur
U qui satisfait toutes les DFs dans F,tout πUi (R) satisfait Fi et
R = πU1(R) ./ πU2(R) ./ . . . ./ πUn(R)
I Sans perte de dépendances (SPD) si
F et F ∗ =⋃i
Fi sont équivalents
i.e., pour toute DF f ,
F ` f ⇔ F ∗ ` f
ou∀X ⊆ U, CF (X ) = CF∗(X )
31 / 63
-
Bases de Données
Normalisation
Décomposition avec perte d’information
Une décomposition est sans perte d’information (SPI) si :
I pour toute relation R sur U qui satisfait toutes les DFs dans F,tout πUi (R) satisfait Fi et
R = πU1(R) ./ πU2(R) ./ . . . ./ πUn(R)
I La propriété de décomposition sans perte d’information dépenddonc des dépendances fonctionnelles.
32 / 63
-
Bases de Données
Normalisation
Un exemple de décomposition avec perte d’information
I R(Etudiant,Exam,Note) et F={Etudiant,Exam → Note}I décomposition : {R1(Etudiant,Exam),R2(Exam,Note)}I Il existe une instance R qui satisfait F mais qu’on ne peut pas
reconstruire à partir de ses projections :
R Etudiant Exam Note167 BD3 18434 BD3 7
33 / 63
-
Bases de Données
Normalisation
Un exemple de décomposition avec perte d’informationR Etudiant Exam Note
167 BD3 18434 BD3 7
πEtudiant,Exam(R) Etudiant Exam167 BD3434 BD3
πExam,Note(R) Exam NoteBD3 18BD3 7
πEtudiant,Exam(R) ./ πExam,Note(R) Etudiant Exam Note167 BD3 18434 BD3 7167 BD3 7434 BD3 18
Problème : les tuples en rouge représentent de l’informationparasite. En effet, F={Etudiant,Exam → Note}, i.e., un seul etmême étudiant ne peut avoir qu’une note à un seul et mêmeexamen.
34 / 63
-
Bases de Données
Normalisation
La préservation des DFsI Les DFs sur un schéma sont des contraintes d’intégritéI Le SGBD est censé vérifier que les contraintes ne sont pas
violées par les mises à jour
35 / 63
-
Bases de Données
Normalisation
La préservation des DFs
I Il est souhaitable de pouvoir vérifier les DFs localement(jointure couteuse)⇒ on cherche une décomposition sans perte de dépendancesfonctionnelles
36 / 63
-
Bases de Données
Normalisation
Décomposition sans perte de DFsI Ce n’est pas toujours aussi simple de vérifier que les DFs sont
préservées...
37 / 63
-
Bases de Données
Normalisation
Décomposition sans perte de DFs
I Un autre exemple
38 / 63
-
Bases de Données
Normalisation
Décomposition sans perte de DFs
39 / 63
-
Bases de Données
Normalisation
Décomposition sans perte de DFs
40 / 63
-
Bases de Données
Normalisation
Projection des DFsI Soit U un ensemble d’attributs et F un ensemble de DFsI Soit V ⊆ UI Alors on définit la projection des DFs de F locales à V
comme :
πV (F ) = {X → Y | X ,Y ⊆ V , Y ⊆ CF (X )}
I ce sont toutes les DFs sur V qui sont impliquées par F :
πV (F ) = {X → Y | X ,Y ⊆ V , F ` X → Y }
I Même si tel qu’on l’a définit πV (F ) pourrait être très grand,on peut souvent le représenter de manière compacte par unensemble F ′ de DFs sur V t.q. :
∀X ,Y ⊆ V : F ′ ` X → Y ⇔ F ` X → Y41 / 63
-
Bases de Données
Normalisation
Rappel : décomposition
I Objectif de la décomposition :Eliminer ou réduire les anomalies associées (i.e., obtenir unnouveau schéma en "forme normale")
I Mais on ne peut pas décomposer arbitrairementI Conditions pour une décomposition "raisonnable"
I décomposition sans perte d’informationI décomposition sans perte de dépendance
I Il reste à comprendre comment obtenir de bonnesdécompositions.
42 / 63
-
Bases de Données
Normalisation
Forme normale de Boyce-Codd (FNBC)
I Qu’est-ce qui cause les anomalies de mise à jour ?I Les dépendances fonctionnelles X → Y où X n’est pas une clefI Une relation est en forme normale de Boyce-Codd (FNBC) si
pour toute DF non triviale X → Y , X est une clefI Une base de données est en FNBC si toutes ses relations sont
en FNBCI Les seules DFs non triviales sont celles induites par des clefs.
43 / 63
-
Bases de Données
Normalisation
FNBC : exemples
44 / 63
-
Bases de Données
Normalisation
FNBC : Algorithme de décompositionEntrée : un ensemble d’attributs U et un ensemble de DFs FSortie : un schéma de BD S = {(U1,F1), . . . , (Un,Fn)}1. S := {(U,F )}2. Tant que S n’est pas en FNBC faire :
(a) Choisir (V ,F ′) ∈ S pas en FNBC(b) Choisir X ,Y ,Z disjoints non vides t.q. :
(i) X ∪ Y ∪ Z = V(ii) Y = CF ′(X )− X
(i.e., F ′ ` X → Y et F ′ 6` X → A pour tout A ∈ Z)(c) Remplacer (V ,F ′) par
(X ∪ Y , πX∪Y (F ′)) et (X ∪ Z , πX∪Z (F ′))
(d) S’il existe (V ′,F ′) et (V ′′,F ′′) dans S t.q. V ′ ⊆ V ′′ alorsretirer (V ′,F ′)
45 / 63
-
Bases de Données
Normalisation
Algorithme de décomposition : exempleConsidérons l’ensemble d’attributs et les contraintes suivants :Mauvais = {titre, realisateur , cinema, adresse, telephone, heure, prix}F = {DF1,DF2,DF3}
Initialisation : S = (Mauvais,DF1,DF2,DF3)
Boucle While :I Etape 1 : on sélectionne Mauvais ; qui n’est pas en FNBC car
cinema → adresse, telephonemais
cinema 6→ titre, réalisateur, heure, prixNos ensembles sont :X = {cinema}, Y = {adresse, telephone},Z = {titre, realisateur , heure, prix}
46 / 63
-
Bases de Données
Normalisation
Algorithme de décomposition : exemple
I Etape 1, suite :πX∪Y ({DF1,DF2,DF3}) = DF1πX∪Z ({DF1,DF2,DF3}) = {DF2,DF3}
Après l’étape 1, nous avons obtenu deux schémas :S1 = ({cinema, adresse, telephone},DF1),S ′1 = ({cinema, titre, realisateur , heure, prix},DF2,DF3)
I Etape 2 : S1 est en FNBC, rien à faire donc.S ′1 n’est en FNBC : titre n’est pas une clefSoit X = {titre}, Y = {realisateur},Z = {cinema, heure, prix}πX∪Y ({DF1,DF2,DF3}) = DF3πX∪Z ({DF1,DF2,DF3}) = {DF2}
47 / 63
-
Bases de Données
Normalisation
Algorithme de décomposition : exemple
I Après l’étape 2, nous avons :S1 = ({cinema, adresse, telephone},DF1),S2 = ({cinema, titre, heure, prix},DF2)S3 = ({titre, realisateur},DF3)
I S1,S2,S3 sont toutes en FNBC, fin.
48 / 63
-
Bases de Données
Normalisation
Algorithme de décomposition : autre exemple
I R = {C,T,H,S,E,N}, avec C = cours, T = enseignant, H =horaire, S = salle, E = étudiant, N = note
I F = {C → T, HS → C, HT → S, CE → N, HE → S}
I HE est la seule clef : CF (HE)=HESCTNI HE est minimale, donc candidate : H et E ne sont pas
déterminés par d’autres attributs et doivent donc être danstoutes les clefs candidates.
49 / 63
-
Bases de Données
Normalisation
Algorithme de décomposition : autre exemple
50 / 63
-
Bases de Données
Normalisation
Propriétés de l’algorithme de décomposition
I Pour tout schéma relationnel, l’algorithme de décompositiongénère un schéma relationnel qui est
I en FNBCI SPI (sans perte d’information)
I Cependant, la sortie n’est pas garantie SPD (sans perte dedépendance)
I Quelques astuces pour trouver des violations de la FNBC :I Tester uniquement les sous-ensembles d’attributs qui
contiennent la partie gauche d’une DFI pas besoin de vérifier les sous-ensembles formés en retirant
seulement un unique attribut à l’ensemble de départI pas besoin de tester les sous-ensembles composés seulement de
deux attributs
51 / 63
-
Bases de Données
Normalisation
La FNBC et la préservation des dépendances
I Schéma Adresse[(C )odePostal , (V )ille, (R)ue]I Ensemble de DFs F = {C → V ,VR → C}I (Adresse,F ) n’est pas en FNBC : C → V ∈ F , mais C n’est
pas une clef.I On applique l’algo de décomposition FNBC : X = {C},
Y = {V }, Z = {R}I Sortie : ({C ,V },C → V ), ({C ,R}, ∅)I On perd VR → C !I En fait, il n’existe pas de schéma relationnel équivalent à
Adresse qui soit à la fois en FNBC, SPI et SPD.I Preuve : il suffit de vérifier tous les schémas sur trois attributs.
52 / 63
-
Bases de Données
Normalisation
La FNBC et la préservation des dépendances
I La décomposition CEN CT CHS CHE obtenue tout à l’heuren’est pas sans perte de dépendance pourF = {C → T, HS → C, HT → S, CE → N, HE → S}
I Elle ne préserve pas HT → S : pour un même couple horaireenseignant on pourrait avoir plusieurs salles...
I La clôture locale de HT est HT :I Sur CEN, la clôture locale de HT est ∅I Sur CT, la clôture locale de HT est TI Sur CHS, la clôture locale de HT est HI Sur CHE, la clôture locale de HT est H
I HT → S serait perdue également si on avait HES à la place deCHE
53 / 63
-
Bases de Données
Normalisation
3ème forme normale (3FN)
I Si l’on veut une décomposition SPI et SPD, on ne peut pastoujours recourir à la FNBC
I Il nous faut une condition un peu plus faibleI Rappels :
I une clef candidate est une clef qui n’est incluse dans aucuneautre clef
I Un attribut est primaire s’il appartient à une clef candidateI (U,F ) est en FNBC si pour toute DF X → A, où A /∈ X est
un attribut, F ` X → A implique que X est une clefI (U,F ) est en 3FN si pour toute DF X → A où A /∈ X est un
attribut, F ` X → A implique que :I soit X est une clef,I ou bien A est primaire.
54 / 63
-
Bases de Données
Normalisation
3ème forme normale (3FN)I Différences principales entre FNBC et 3FN : en 3FN les DFs
non clefs sont OK, tant qu’elles n’impliquent que des attributsprimaires.
I {NomFournisseur ,Adresse,Produit,Prix} ;{NomFournisseur → Adresse;NomFournisseur ,Produit → Prix}nest pas en 3FN :
I NomFournisseur ,Produit est clef candidate ; mais Adressen’est pas primaire.
I Mais Adresse[C ,V ,R],F = {C → V ,VR → C} est en 3FN :I VR est clef candidate, donc V est un attribut primaire.
I Plus de redondance qu’avec la FNBC : chaque fois qu’un codepostal apparaît dans un tuple, le nom de la ville est répété.
I On tolère cette redondance parce qu’il n’existe pas dedécomposition FNBC.
55 / 63
-
Bases de Données
Normalisation
Décompositions 3FN : couvertures minimales
I Besoin pour l’algo d’un petit ensemble représentant toutes lesDFs d’un ensemble F
I On parle de couverture minimale. Formellement :I F ′ est une couverture de F ssi CF = CF ′ , i.e., pour tout f :
F ` f ⇔ F ′ ` f
I F ′ est une couverture minimale siI F ′ est une couvertureI aucun sous ensemble F ′′ ⊂ F ′ n’est une couverture de F ,I toute DF dans F ′ est de la forme X → A, où A est un attributI pour tout X → A ∈ F ′ t.q. X ′ ⊂ X , on a A /∈ CF (X ′)
56 / 63
-
Bases de Données
Normalisation
Décompositions 3FN : couvertures minimales
I Une couverture minimale est un petit ensemble de DFs quinous donne exactement la même information que F .
I Exemple :
F = {A→ AB,A→ AC ,A→ B,A→ C ,B → BC}
I Clôture :CF (A) = ABC ,CF (B) = BC ,CF (C ) = C , et donc
I Couverture minimale :
F ′ = {A→ B,B → C}
57 / 63
-
Bases de Données
Normalisation
Décompositions 3FN : algorithme
Entrée : un ensemble d’attributs U et un ensemble de DFs FSortie : un schéma de BD S = {(U1,F1), . . . , (Un,Fn)}
Etape 1 Trouver une couverture minimale F ′ de F
Etape 2 S’il existe X → A dans F ′ t.q. XA = U, alors sortie = (U,F ′).Sinon, choisir une clef K et sortir :(2a) (XA,X → A) pour tout X → A ∈ F ′, et(2b) (K , ∅)
58 / 63
-
Bases de Données
Normalisation
Décompositions 3FN : exempleI F = {A→ AB,A→ AC ,A→ B,A→ C ,B → BC}I F ′ = {A→ B,B → C}I A est une clef, donc sortie :
(A, ∅), (AB,A→ B) (BC ,B → C )I Simplification : si un des ensembles d’attributs produits en
(2a) est une clef, alors pas besoin de (2b)I Ce qui donne comme résultat :
(AB,A→ B) (BC ,B → C )
I Autre type de simplification possible :remplacer (XA1,X → A1), . . . , (XAk ,X → Ak) dans la sortie,par (XA1 . . .Ak ,X → A1 . . .Ak)
59 / 63
-
Bases de Données
Normalisation
Décompositions 3FN : autre exemple
I F = {A→ C ,BC → D,AD → E} = F ′ minimalI AB est une clef, donc sortie :
(AB, ∅), (AC ,A→ C ) (BCD,BC → D) (ADE ,AD → E )
I aucun des ensembles d’attributs produits en (2a) n’est uneclef, donc, ici, besoin de (2b)
60 / 63
-
Bases de Données
Normalisation
Décompositions 3FN
I L’algorithme de décomposition produit un schéma :I en 3FNI SPII SPD
I Complexité de l’algorithme ?I Etant donnée la couverture minimale F ′, en temps linéaire.I Mais à quel point est-ce dur de trouver une couverture
minimale ?I Approche naïve : essayer tous les ensembles F ′, vérifier s’ils
sont des couvertures minimales.I Trop coûteux (exponentiel), peut-on faire mieux ?I Il y a un algorithme en temps polynomial.
61 / 63
-
Bases de Données
Normalisation
Algorithme de calcul de couverture minimale
Entrée : un ensemble de DFs FSortie : une couverture minimale de F
1. Mettre F sous forme canonique, i.e., remplacer toute DFX → ABC par l’ensemble de DFsF = {X → A,X → B,X → C , . . .}
2. Répéter jusqu’à ce qu’il n’y ait plus de changement :s’il existe f t.q. F \ {f } ` f , alors remplacer F par F \ {f }
3. Répéter jusqu’à ce qu’il n’y ait plus de changement :s’il existe f = X → A ∈ F et Y ⊂ X t.q. A ∈ CF (Y ), alorsremplacer X → A par Y → A dans F .
62 / 63
-
Bases de Données
Normalisation
Conception de schéma : démarche
I Choisir un ensemble d’attributs UI Choisir l’ensemble de DFs FI Trouver un décomposition SPI et SPD qui soit :
I FNBC, s’il en existe uneI 3FN, s’il n’existe pas de décomposition FNBC
63 / 63
Normalisation