0% ont trouvé ce document utile (0 vote)
11 vues33 pages

Cour9 BDD

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1/ 33

Bases de données

Contraintes et dépendances fonctionnelles

Nadime Francis

Université Gustave Eiffel


LIGM - 4B130 Copernic
[email protected]

1 / 15
Que pensez-vous de cette table ?

num nom maison directeur cours prof note


1 Potter Gryffondor McGonagall potion Rogue 12
1 Potter Gryffondor McGonagall défense Lupin 18
2 Granger Gryffondor McGonagall défense Rogue 15
2 Granger Serdaigle Flitwick runes Babbling 20
3 Patil Serdaigle Flitwick sortilège Flitwick 17
botanique Chourave
Serpentard Rogue
4 Diggory Poufsouffle Chourave

2 / 15
Que pensez-vous de cette table ?

num nom maison directeur cours prof note


1 Potter Gryffondor McGonagall potion Rogue 12
1 Potter Gryffondor McGonagall défense Lupin 18
2 Granger Gryffondor McGonagall défense Rogue 15
2 Granger Serdaigle Flitwick runes Babbling 20
3 Patil Serdaigle Flitwick sortilège Flitwick 17
botanique Chourave
Serpentard Rogue
4 Diggory Poufsouffle Chourave

Le schéma proposé pour stocker ces données est horrible...

Redondances : perte d’espace de stockage, nécessité de synchroniser


les modifications, ralentissement des requêtes...

Incohérences : données conflictuelles, fiabilité douteuse

NULL : distinction entre valeurs manquantes et NULL bouche-trou ?

2 / 15
Comment réparer ce schéma ?
num nom maison directeur cours prof note
1 Potter Gryffondor McGonagall potion Rogue 12
1 Potter Gryffondor McGonagall défense Lupin 18
2 Granger Gryffondor McGonagall défense Rogue 15
2 Granger Serdaigle Flitwick runes Babbling 20
3 Patil Serdaigle Flitwick sortilège Flitwick 17
botanique Chourave
Serpentard Rogue
4 Diggory Poufsouffle Chourave

D’où viennent les redondances et les incohérences ?

3 / 15
Comment réparer ce schéma ?
num nom maison directeur cours prof note
1 Potter Gryffondor McGonagall potion Rogue 12
1 Potter Gryffondor McGonagall défense Lupin 18
2 Granger Gryffondor McGonagall défense Rogue 15
2 Granger Serdaigle Flitwick runes Babbling 20
3 Patil Serdaigle Flitwick sortilège Flitwick 17
botanique Chourave
Serpentard Rogue
4 Diggory Poufsouffle Chourave

D’où viennent les redondances et les incohérences ?


1. Chaque num représente un unique étudiant, qui a une unique maison.

3 / 15
Comment réparer ce schéma ?
num nom maison directeur cours prof note
1 Potter Gryffondor McGonagall potion Rogue 12
1 Potter Gryffondor McGonagall défense Lupin 18
2 Granger Gryffondor McGonagall défense Rogue 15
2 Granger Serdaigle Flitwick runes Babbling 20
3 Patil Serdaigle Flitwick sortilège Flitwick 17
botanique Chourave
Serpentard Rogue
4 Diggory Poufsouffle Chourave

D’où viennent les redondances et les incohérences ?


1. Chaque num représente un unique étudiant, qui a une unique maison.
etudiant(num, nom, maison)
num nom maison
1 Potter Gryffondor
2 Granger Gryffondor
3 Patil Serdaigle
4 Diggory Poufsouffle

3 / 15
Comment réparer ce schéma ?
num nom maison directeur cours prof note
1 Potter Gryffondor McGonagall potion Rogue 12
1 Potter Gryffondor McGonagall défense Lupin 18
2 Granger Gryffondor McGonagall défense Rogue 15
2 Granger Serdaigle Flitwick runes Babbling 20
3 Patil Serdaigle Flitwick sortilège Flitwick 17
botanique Chourave
Serpentard Rogue
4 Diggory Poufsouffle Chourave

D’où viennent les redondances et les incohérences ?


2. Chaque maison devrait avoir un unique directeur.
etudiant(num, nom, maison)
num nom maison
1 Potter Gryffondor
2 Granger Gryffondor
3 Patil Serdaigle
4 Diggory Poufsouffle

3 / 15
Comment réparer ce schéma ?
num nom maison directeur cours prof note
1 Potter Gryffondor McGonagall potion Rogue 12
1 Potter Gryffondor McGonagall défense Lupin 18
2 Granger Gryffondor McGonagall défense Rogue 15
2 Granger Serdaigle Flitwick runes Babbling 20
3 Patil Serdaigle Flitwick sortilège Flitwick 17
botanique Chourave
Serpentard Rogue
4 Diggory Poufsouffle Chourave

D’où viennent les redondances et les incohérences ?


2. Chaque maison devrait avoir un unique directeur.
etudiant(num, nom, maison) dirige(maison, directeur)
num nom maison maison directeur
1 Potter Gryffondor Gryffondor McGonagall
2 Granger Gryffondor Serpentard Rogue
3 Patil Serdaigle Serdaigle Flitwick
4 Diggory Poufsouffle Poufsouffle Chourave

3 / 15
Comment réparer ce schéma ?
num nom maison directeur cours prof note
1 Potter Gryffondor McGonagall potion Rogue 12
1 Potter Gryffondor McGonagall défense Lupin 18
2 Granger Gryffondor McGonagall défense Rogue 15
2 Granger Serdaigle Flitwick runes Babbling 20
3 Patil Serdaigle Flitwick sortilège Flitwick 17
botanique Chourave
Serpentard Rogue
4 Diggory Poufsouffle Chourave

D’où viennent les redondances et les incohérences ?


3. Chaque cours devrait avoir un unique professeur.
etudiant(num, nom, maison) dirige(maison, directeur)
num nom maison maison directeur
1 Potter Gryffondor Gryffondor McGonagall
2 Granger Gryffondor Serpentard Rogue
3 Patil Serdaigle Serdaigle Flitwick
4 Diggory Poufsouffle Poufsouffle Chourave

3 / 15
Comment réparer ce schéma ?
num nom maison directeur cours prof note
1 Potter Gryffondor McGonagall potion Rogue 12
1 Potter Gryffondor McGonagall défense Lupin 18
2 Granger Gryffondor McGonagall défense Rogue 15
2 Granger Serdaigle Flitwick runes Babbling 20
3 Patil Serdaigle Flitwick sortilège Flitwick 17
botanique Chourave
Serpentard Rogue
4 Diggory Poufsouffle Chourave

D’où viennent les redondances et les incohérences ?


3. Chaque cours devrait avoir un unique professeur.
etudiant(num, nom, maison) dirige(maison, directeur)
num nom maison maison directeur
1 Potter Gryffondor Gryffondor McGonagall
2 Granger Gryffondor Serpentard Rogue
3 Patil Serdaigle Serdaigle Flitwick
4 Diggory Poufsouffle Poufsouffle Chourave

enseigne(cours, prof)
cours prof
potion Rogue
défense Lupin
botanique Chourave
runes Babbling
sortilège Flitwick
3 / 15
Comment réparer ce schéma ?
num nom maison directeur cours prof note
1 Potter Gryffondor McGonagall potion Rogue 12
1 Potter Gryffondor McGonagall défense Lupin 18
2 Granger Gryffondor McGonagall défense Rogue 15
2 Granger Serdaigle Flitwick runes Babbling 20
3 Patil Serdaigle Flitwick sortilège Flitwick 17
botanique Chourave
Serpentard Rogue
4 Diggory Poufsouffle Chourave

D’où viennent les redondances et les incohérences ?


4. Chaque étudiant (num) a une unique note par cours.
etudiant(num, nom, maison) dirige(maison, directeur)
num nom maison maison directeur
1 Potter Gryffondor Gryffondor McGonagall
2 Granger Gryffondor Serpentard Rogue
3 Patil Serdaigle Serdaigle Flitwick
4 Diggory Poufsouffle Poufsouffle Chourave

enseigne(cours, prof)
cours prof
potion Rogue
défense Lupin
botanique Chourave
runes Babbling
sortilège Flitwick
3 / 15
Comment réparer ce schéma ?
num nom maison directeur cours prof note
1 Potter Gryffondor McGonagall potion Rogue 12
1 Potter Gryffondor McGonagall défense Lupin 18
2 Granger Gryffondor McGonagall défense Rogue 15
2 Granger Serdaigle Flitwick runes Babbling 20
3 Patil Serdaigle Flitwick sortilège Flitwick 17
botanique Chourave
Serpentard Rogue
4 Diggory Poufsouffle Chourave

D’où viennent les redondances et les incohérences ?


4. Chaque étudiant (num) a une unique note par cours.
etudiant(num, nom, maison) dirige(maison, directeur)
num nom maison maison directeur
1 Potter Gryffondor Gryffondor McGonagall
2 Granger Gryffondor Serpentard Rogue
3 Patil Serdaigle Serdaigle Flitwick
4 Diggory Poufsouffle Poufsouffle Chourave

enseigne(cours, prof) examen(num, cours, note)


cours prof num cours note
potion Rogue 1 potion 12
défense Lupin 1 défense 18
botanique Chourave 2 défense 15
runes Babbling 2 runes 20
sortilège Flitwick 3 sortilège 17
3 / 15
Comment construire un bon schéma ?

On connaît déjà une méthode pour construire un “bon” schéma :


1 Etablir ou analyser le cahier des charges

2 Construire le schéma entité-association

3 Traduire le schéma vers le modèle relationnel

4 / 15
Comment construire un bon schéma ?

On connaît déjà une méthode pour construire un “bon” schéma :


1 Etablir ou analyser le cahier des charges

2 Construire le schéma entité-association

3 Traduire le schéma vers le modèle relationnel

Cette méthode ne suffit pas toujours !


Erreur humaine, cahier des charges complexe

Très grand nombre d’entités, de contraintes

Ajout de contraintes ou modification du schéma a posteriori

Question : Comment être sûr que le schéma est (toujours) bon ?

4 / 15
Objectifs du cours

Contraintes et dépendances fonctionnelles


Définition formelle des contraintes

Analyse théorique des dépendances fonctionnelles

Normalisation
Évaluation de la qualité d’un schéma vis à vis des contraintes

Raffinement d’un schéma quelconque en un schéma de qualité

5 / 15
Contraintes et dépendances fonctionnelles

6 / 15
Dépendances fonctionnelles (DF)

Soient R une relation et X , Y deux ensembles d’attributs de R


On dit que X détermine Y dans R (et on note X → Y ) si, pour tous
enregistrements t1 et t2 de R, on a :
Si πX (t1 ) = πX (t2 ), alors πY (t1 ) = πY (t2 )
Autrement dit, fixer les valeurs de X dans R fixe aussi les valeurs de Y

7 / 15
Dépendances fonctionnelles (DF)

Soient R une relation et X , Y deux ensembles d’attributs de R


On dit que X détermine Y dans R (et on note X → Y ) si, pour tous
enregistrements t1 et t2 de R, on a :
Si πX (t1 ) = πX (t2 ), alors πY (t1 ) = πY (t2 )
Autrement dit, fixer les valeurs de X dans R fixe aussi les valeurs de Y

Vocabulaire équivalent :
R satisfait / est munie de la dépendance fonctionnelle X → Y
Dans R, Y peut être exprimé comme une fonction de X
(d’où le terme de dépendance fonctionnelle)

Exemples :
numEtud → nom les numéros étudiants sont uniques
numEtud, cours → note les étudiants ont une seule note par cours

7 / 15
Clefs candidates ou minimales

Soit R(a1 , . . . , an ) une relation munie d’un ensemble de dépendances


fonctionnelles F. On dit qu’un sous-ensemble X d’attributs de R est une
clef candidate (ou clef minimale) si :
X est une clef : X → a1 , . . . , an dans R

X est minimale : il n’existe pas d’ensemble Y ( X tel que


Y → a1 , . . . , an dans R

8 / 15
Clefs candidates ou minimales

Soit R(a1 , . . . , an ) une relation munie d’un ensemble de dépendances


fonctionnelles F. On dit qu’un sous-ensemble X d’attributs de R est une
clef candidate (ou clef minimale) si :
X est une clef : X → a1 , . . . , an dans R

X est minimale : il n’existe pas d’ensemble Y ( X tel que


Y → a1 , . . . , an dans R

Attention : la minimalité est au sens de l’inclusion !


n o
code → titre, année
Ex : avec cours(code, titre, année) munie de titre, année → code

{code} et {titre, année} sont toutes les deux des clefs candidates
{code, titre} n’est pas minimale

{titre} n’est pas une clef

8 / 15
♣ Dépendances d’inclusion (DI)

Soient R et R 0 deux relations, et u et u 0 des listes d’attributs de R et R 0 .


On dit que R(u) est inclus dans R 0 (u 0 ) (et on note R(u) ⊆ R 0 (u 0 )) si,
pour tout enregistrement t dans R, il existe t 0 dans R 0 tel que :

πu (t) = πu0 (t 0 )

9 / 15
♣ Dépendances d’inclusion (DI)

Soient R et R 0 deux relations, et u et u 0 des listes d’attributs de R et R 0 .


On dit que R(u) est inclus dans R 0 (u 0 ) (et on note R(u) ⊆ R 0 (u 0 )) si,
pour tout enregistrement t dans R, il existe t 0 dans R 0 tel que :

πu (t) = πu0 (t 0 )

Remarques :
Les clefs étrangères (ou contraintes d’intégrité référentielle) sont la
combinaison d’une DF et d’une DI
Ex : examen(numEtud) fait référence à étudiant(numEtud)
1. numEtud est une clef de la relation étudiant
2. examen(numEtud) ⊆ étudiant(numEtud)

Les raisonnements combinant DF et DI sont complexes


Dans ce cours, on ne raisonnera que sur les DF

9 / 15
Inférence de dépendances fonctionnelles

Soit F un ensemble de dépendances fonctionnelles, et f une DF


On dit que F implique f (et on note F |= f ) si toute relation qui satisfait
F satisfait nécessairement aussi f

10 / 15
Inférence de dépendances fonctionnelles

Soit F un ensemble de dépendances fonctionnelles, et f une DF


On dit que F implique f (et on note F |= f ) si toute relation qui satisfait
F satisfait nécessairement aussi f
Objectifs :
Compléter la liste des contraintes issues du cahier des charges
(qui est rarement exhaustive, et souvent inconnue du client)

Vérifier la cohérence des contraintes présumées


(des DFs d’apparence anodine peuvent impliquer une DF indésirable)

10 / 15
Inférence de dépendances fonctionnelles

Soit F un ensemble de dépendances fonctionnelles, et f une DF


On dit que F implique f (et on note F |= f ) si toute relation qui satisfait
F satisfait nécessairement aussi f
Objectifs :
Compléter la liste des contraintes issues du cahier des charges
(qui est rarement exhaustive, et souvent inconnue du client)

Vérifier la cohérence des contraintes présumées


(des DFs d’apparence anodine peuvent impliquer une DF indésirable)

Questions reliées :
Implication : est-ce que F |= f ?
Équivalence : est-ce que F et G impliquent les mêmes contraintes ?
Redondance : existe-t-il f ∈ F tel que F − {f } |= f ?
Clôture : calculer l’ensemble F + de toutes les DF impliquées par F

10 / 15
Axiomes de Armstrong

Les dépendances fonctionnelles respectent les règles d’inférence suivantes,


pour des ensembles d’attributs X , Y et Z quelconques :

Axiomes d’Armstrong :
Réflexivité : Ø |= XY → X (en particulier, Ø |= X → X )

Augmentation : X → Y |= XZ → YZ
Transitivité : X → Y , Y → Z |= X → Z

11 / 15
Axiomes de Armstrong

Les dépendances fonctionnelles respectent les règles d’inférence suivantes,


pour des ensembles d’attributs X , Y et Z quelconques :

Axiomes d’Armstrong :
Réflexivité : Ø |= XY → X (en particulier, Ø |= X → X )

Augmentation : X → Y |= XZ → YZ
Transitivité : X → Y , Y → Z |= X → Z

Règles dérivées : (on peut les retrouver à partir des autres)


Union : X → Y , X → Z |= X → YZ
Décomposition : X → YZ |= X → Z
Pseudo-transitivité : X → Y , WY → Z |= WX → Z

11 / 15
Exercice : inférence et clefs

On pose F = {A → B, B → C , AB → D}
Les affirmations suivantes sont-elles vraies ? Justifiez vos réponses.

1 F |= A → C 4 F |= A → ABC

2 F |= AB → C 5 F |= A → D

3 F |= AB → CD 6 F |= B → D

7 AB est une clef pour la relation R(A, B, C , D) munie de F

8 AB est une clef candidate pour la relation R(A, B, C , D) munie de F

9 A est une clef candidate pour la relation R(A, B, C , D) munie de F

10 A est une clef pour la relation R(B, C ) munie de F

12 / 15
Fermeture d’un ensemble de DFs

Soit F un ensemble de DFs.


On appelle fermeture de F (noté F + ) l’ensemble de toutes les
dépendances fonctionnelles impliquées par F :

F+ =

DF f F |= f

13 / 15
Fermeture d’un ensemble de DFs

Soit F un ensemble de DFs.


On appelle fermeture de F (noté F + ) l’ensemble de toutes les
dépendances fonctionnelles impliquées par F :

F+ =

DF f F |= f

Remarques :
On dit aussi clôture par analogie avec l’anglais closure

On limite implicitement F + aux attributs mentionnés par F


Inutile d’ajouter XYZ → X pour tous les attributs du schéma...

F et G sont dits équivalents si F + = G +


Il suffit en fait que F |= g et G |= f pour tout f ∈ F et g ∈ G
Inutile de calculer entièrement les clôtures

13 / 15
Fermeture d’un ensemble d’attributs

Soit F un ensemble de DFs et X un ensemble d’attributs.


On appelle fermeture de X par rapport à F (noté [X ]+ F ) l’ensemble des
attributs déterminés par X dans toute relation satisfaisant F :

[X ]+

F = attribut y F |= X → y

Autrement dit, [X ]+
F est le plus grand ensemble Y tel que F |= X → Y

14 / 15
Fermeture d’un ensemble d’attributs

Soit F un ensemble de DFs et X un ensemble d’attributs.


On appelle fermeture de X par rapport à F (noté [X ]+ F ) l’ensemble des
attributs déterminés par X dans toute relation satisfaisant F :

[X ]+

F = attribut y F |= X → y

Autrement dit, [X ]+
F est le plus grand ensemble Y tel que F |= X → Y

Remarques :
On écrira simplement X + quand il est clair à quel F on se rapporte

X est une clef de R munie de F si et seulement si :


X est un attribut de R
[X ]+
F contient tous les attributs de R

14 / 15
Exercice : fermetures

On pose F = {A → B, B → C , AB → D}

1 Calculez A+ , B + , C + et [AB]+

2 Calculez F +

Les ensembles suivants sont-ils équivalents à F ?


Justifiez vos réponses soit par une preuve, soit par un contre-exemple.

1 F1 = {A → C , A → B, B → C , AB → D}

2 F2 = {A → B, B → C , C → D}

3 F3 = {A → B, A → C , AB → D}

4 F4 = {A → B, B → C , B → D}

5 F5 = {A → B, B → C , A → D}

15 / 15

Vous aimerez peut-être aussi