Sunteți pe pagina 1din 88

L'Algèbre Relationnelle

Une algèbre est un ensemble avec des opérations


fermées sur cet ensemble.
Une algèbre relationnelle est un ensemble d’opérations agissant
sur des relations et produisant des relations
4 opérations ensemblistes (union, intersection,
différence, produit cartésien)
3 opérations spécifiques des BD relationnelles
(sélection, projection, jointure)
Remarques sur l'algèbre relationnelle

L'algèbre relationnelle permet l‘étude des opérateurs entre eux


(commutativité, associativité, groupe d'opérateurs minimaux,...)
équivalence de certaines expressions
programmes d'optimisation qui transforment toute requête en sa forme
équivalente la plus efficace
L'opération de jointure est très coûteuse : proportionnelle au
nombre de n-uplets (m*n pour deux relations jointes)
toujours préférable de faire les restrictions le plus tôt possible afin de
manipuler des tables les plus réduites possibles.
Pourquoi une requête est-elle meilleure qu'une autre ?

Une requête n'est pas l'unique solution d'un problème.


efficacités différentes
Exemple :
Fournisseur (N°fno, Nom, Adresse, Ville)
Produit (N°prod, Designation, Prix, Poids, Couleur)
Commande (N°comm, N°fno, N°prod, , Quantité)
Produit = 8 lignes * 5 colonnes * 10 char = 400 char
Commande = 10 lignes * 4 colonnes * 10 char = 400 char

Références, prix et quantités des produits commandés en plus de 10


exemplaires par commande ?
L'Algèbre Relationnelle

Nature :
L'algèbre relationnelle permet le calcul sur les relations à
l'aide d'opérateurs pour obtenir de nouvelles relations.

Motivation :
On peut extraire les informations que l'on souhaite à
partir de la base de données les décrivant à l'aide
d'une expression algébrique relationnelle.
L'Algèbre Relationnelle

Utilité :
l Formaliser des requêtes sur des bases de données
l Permet d’avoir un schéma de requête avant de
programmer « physiquement » cette requête
l Automatiser la création de requêtes
l Preuves de résultats ou d'égalité entre questions

... Ce qu'il y a derrière les langages comme SQL !


Les opérateurs de l'algèbre relationnelle

l Les opérateurs unaires (1 opérande relation)


– Projection 
– Sélection 
l Les opérateurs binaires (2 opérandes relation)
– Produit Cartésien 
– Jointure
– Différence -
– Union 
– Intersection 
– Division 
La projection 

l Signature : Relation  Liste d'attributs  Relation


l Notation : PROJY(R) ou Y(R)
l Elle ne conserve que les types d'attributs (colonnes) Y de la
relation et supprime les doublons

COMMANDE
Objet Client Nb
 Objet, Client(R)
Objet Client
table Klein 4
table Klein
table Klein 2 placard Blériot
placard Blériot 3
La Sélection 
l Signature : Relation  Expression Logique  Relation
l Notation : SELECT C(R) ou  C (R)
l La sélection ne conserve de la relation que les tuples (lignes) qui
vérifient l'expression logique sur noms d'attributs (construite avec
les opérateurs logiques , ,  et les comparaisons =, <, >, , , ).
l Le schéma relationnel est conservé.

R Chauffeur Départ Destination


Chauffeur Départ Destination
Karl Paris Le Havre
Bébert Paris Bordeaux Tonio Paris Le Havre
Karl Paris Le Havre
Tonio Paris Le Havre
Dédé Lyon Marseille
 Départ="Paris"Destination="Le Havre" (R)
Le Produit Cartésien 
l Signature : Relation  Relation  Relation

l Notation : PROD(R1, R2) ou R1  R 2

l On renomme les types d'attributs que R1 et R2 ont en commun, puis


on concatène chaque tuple de la relation R1 avec chaque tuple de la
relation R2 pour former l'extension.

Remarques : On doit renommer les types d'attributs en double.


On obtient toutes les combinaisons possibles !
Le Produit Cartésien (exemple)
Stock1 Fabrication
Pièce Nb-P Fournisseur Pièce Nb Objet

vis 2000 Germond vis 8 table


écrou
charnière
4000
500
Martin
André
 écrou
charnière
8
4
table
placard
poignée 200 André vis 16 placard

Pièce1 Nb-P Fournisseur Pièce2 Nb Objet

vis 2000 Germond vis 8 table


vis 2000 Germond écrou 8 table
vis 2000 Germond charnière 4 placard
vis 2000 Germond vis 16 placard
écrou 4000 Martin vis 8 table
écrou 4000 Martin écrou 8 table
… … ... ... ... ...
La -Jointure

l Signature : Relation  Relation  -Expression  Relation


l Notation : JOIN -Expression (R,S) ou R -Expression S
l La jointure est la superposition de tout enregistrement de R
avec un enregistrement de S dans laquelle on ne garde que
les tuples qui vérifient la -Expression.

Remarque : Comme pour le produit cartésien, on


renommera les types d'attributs communs
à R et à S.
La -Jointure (exemple)
Stock1 Fabrication
Pièce Nb-P Fournisseur Pièce Nb Objet

vis 2000 Germond vis 8 table


écrou 4000 Martin Stock.pièce = écrou 8 table
charnière 500 André Fabrication.pièce charnière 4 placard
poignée 200 André vis 16 placard

Pièce1 Nb-P Fournisseur Pièce2 Nb Objet

vis 2000 Germond vis 8 table


vis 2000 Germond vis 16 placard
écrou 4000 Martin écrou 8 table
charnière 500 André charnière 4 placard

 -Expression vérifiée
Décomposition de la -Jointure

La -Jointure est composée à partir de la


sélection et du produit cartésien.

R  S =  (S  R)
Equi-jointure et Jointure naturelle

l Dans l'équi-jointure, la -expression est omise. On ne garde


que les tuples pour lesquels les valeurs des colonnes
communes à R et S sont égales.
l La jointure naturelle notée R*S ou R S est une équi-
jointure dans laquelle on ne garde qu'une seule des
colonnes communes.

Remarque : La jointure naturelle peut également s'exprimer


à l'aide d'une sélection, d'un produit cartésien
et d'une projection.
La Jointure naturelle (exemple)
Stock1 Fabrication
Pièce Nb-P Fournisseur Pièce Nb Objet

vis 2000 Germond vis 8 table


écrou 4000 Martin écrou 8 table
charnière 500 André charnière 4 placard
poignée 200 André vis 16 placard

Pièce Nb-P Fournisseur Nb Objet

vis 2000 Germond 8 table


vis 2000 Germond 16 placard
écrou 4000 Martin 8 table
charnière 500 André 4 placard
L'union  et l'intersection 

Union
l Signature : Relation  Relation  Relation
l Notation : RS
l Pour deux tables R et S de même schéma relationnel, l'union retourne les tuples qui
sont dans R, dans S ou dans R et dans S.

Intersection
l Signature : Relation  Relation  Relation
l Notation : RS
l Pour deux tables R et S de même schéma relationnel, l'intersection retourne les
tuples qui sont à la fois dans R et dans S.
La différence -

Signature : Relation  Relation  Relation


l Notation : R-S
l Pour deux tables R et S de même schéma relationnel, l'union retourne les
tuples qui sont dans R à l'exception de ceux qui sont également dans S.
Stock1  Stock2
Les exemples Pièce Nb-P Fournisseur

vis 2000 Germond


écrou 4000 Martin
Stock1
charnière 500 André
Pièce Nb-P Fournisseur
poignée 200 André
vis 2000 Germond
vis 5000 Dupont
écrou 4000 Martin
axe 200 Gauthier
charnière 500 André
poignée 200 André

Stock1  Stock2
Pièce Nb-P Fournisseur
Stock2
Pièce Nb-P Fournisseur écrou 4000 Martin

vis 5000 Dupont


écrou 4000 Martin
Stock2 - Stock1
Pièce Nb-P Fournisseur
axe 200 Gauthier
vis 5000 Dupont
axe 200 Gauthier
La division 

l Signature : Relation  Relation  Relation


l Notation : RS
l La division de la relation R(X,Y) par la relation S(Y) est une relation T(X)
dont l'extension est composée de la projection de R sur X... (rien de tel
qu'un bon exemple)

Remarque : La division est pratique, mais elle n'est quasiment jamais


implantée...
Exemple de division 

Compétition
Discipline Participant
surf Alex
ski Fred

ski Alex Qui fait du surf et du ski ?


luge Damien
luge Luc
  Compétition  Quelle_discipline
Participant
Quelle_discipline Alex
Genre

ski

surf
Requêtes en Algèbre Relationnelle (1)

Sur tous les stocks, quels sont les noms des


pièces avec un nombre inférieur à 500?

Pièce(NB-P<500(STOCK1  STOCK2))

Pièce
Pièce
NB-P<500
poignée

 axe

STOCK1 STOCK2
Requêtes en Algèbre Relationnelle (2)

Quels sont les noms de toutes les pièces avec leurs fournisseurs qui entrent
dans la fabrication d'une table ?

 Fournisseur, Pièce (Objet = Table ((STOCK1  STOCK2) FABRICATION))

 Fournisseur, Pièce ((STOCK1  STOCK2) ( Objet = Table (FABRICATION)))

Fournisseur, Pièce
Pièce Fournisseur

vis Germond
écrou Martin
 Objet = Table vis Dupont

STOCK1 STOCK2 FABRICATION


Requêtes en Algèbre Relationnelle (3)

Quels sont les clients qui ont commandé des


meubles à charnières ?

 Client ( (Pièce = Charnière(FABRICATION)) COMMANDE)

Client
Client

Blériot

Pièce = Charnière COMMANDE

FABRICATION
Normalisation d’un schéma
relationnel
Mises à jour et cohérence

l But d'un schéma logique : décrire une bd qui


va effectivement être utilisée
– chargée , accédée , mise à jour (maj)
l 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
l 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
Exemple d'anomalies de maj

LivraisonTot ( N°f , adrF , N°p , typeP , qté )


3 Casa 52 meuble 12
22 Rabat 10 ordinateur 6
22 Rabat 25 papier 210
3 Casa 25 papier 560
3 Fes 10 ordinateur 15
l 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.
l Si un fournisseur change d’adresse et qu’un seul
tuple est mis à jour  incohérence
l Si un nouveau tuple est inséré pour un fournisseur
connu, avec une adresse différente 
incohérence
l Impossibilité d'enregistrer un nouveau fournisseur
sans livraison
Qu’est-ce qu’une BD relationnelle
‘incorrecte’ ?

Une relation n’est pas correcte si :


l elle implique des répétitions au niveau de sa
population
l elle pose des problèmes lors des maj (insertions,
modifications et suppressions)
l Les conditions pour qu'une relation soit correcte
peuvent être définies formellement :
=> règles de normalisation
Exemple (suite)

LivraisonTot ( N°f , adrF , N°p , typeP , qté )


3 Casa 52 meuble 12
22 Rabat 10 ordinateur 6
22 Rabat 25 papier 210
3 Casa 25 papier 560
3 Fes 10 ordinateur 15
l L’adresse du fournisseur ne dépend que du
fournisseur et pas du produit.
l Le type du produit ne dépend que du produit et pas du
fournisseur
 REDONDANCES
 Anomalies de mise à jour
l Cette relation n'est pas correcte. Il faut la normaliser.
Normalisation d'un schéma logique

l 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
l maj simple :
– un changement élémentaire dans le monde réel se traduit
par une mise à jour d'un tuple
l 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.
Normalisation d'une relation

l Processus de décomposition d'une relation à


maj complexes en plusieurs relations à maj
simples
l Processus sur le schéma relationnel formel
l Exemple :
La relation
LivraisonTot (N°f, adrF, N°p, typeP, qté)
sera décomposée en :
l LivraisonTot’ (N°f, N°p, qté)
Fournisseur (N°f, adrF)
Produit (N°p, typeP)
Normalisation

l On mesure la qualité d'une relation par son


degré de normalisation :
l 1FN (première forme normale), 2FN, 3FN,
FNBC (forme normale de Boyce Codd), 4FN,
etc.

4FN FNBC 3FN 2FN 1FN


Normalisation ou traduction EA
Schéma EA

Niveau conceptuel (EA) VALIDATION


Règles

Schéma EA valide

Niveau logique
(Relationnel) Schéma Relationnel
TRADUCTION
EA - R

NORMALISATION

Schéma relationnel normalisé


Exemple
Fournisseur Livraison Produit
0-n 0-n
Nom Adr. Date Qté Tel Nom Type
Fournisseur (NF, Nom, Adr)
Produit (NP, Nom, Type) Livraison (NP, VALIDATION
NF, Date, Qté, Tél) Règles

Fournisseur Livraison Produit


Décomposition 0-n 0-n
des relations NORMALI-
incorrectes Nom Adr. Tel Qté Date Nom Type
SATION

TRADUCTION

Produit (NP, Nom, Type)


Fournisseur’ (NF, Nom, Adr, Tél)
Livraison’ (NP, NF, Date, Qté)
Dépendance fonctionnelle

l L’adresse d’un fournisseur ne dépend que du


fournisseur, ..…
 DÉPENDANCE FONCTIONNELLE (DF)
l Notation :
– A, B, C … attributs
– X, Y, Z … ensembles d'attributs
l 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
Dépendance fonctionnelle (suite)
R: X Y Z
x1 y1 z1
..........................
x1 y1 z2
..........................

l XY: X détermine Y Y dépend de X


l X : source de la DF, Y : cible de la DF

l La source peut être un ensemble d’attributs :


(nom, prénom)  adresse
Propriétés des DF

l Transitivité :
si X  Y et Y  Z alors X  Z
(DF déduite)
l Augmentation :
si X  Y alors (A, X)  Y quelque soit A
(DF non élémentaire)
l 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
Graphe des DF

l Pour chaque relation il faut recenser toutes ses DF


élémentaires et non déduites.
l On les représente sous forme d'un graphe orienté
graphe minimum des DF de la relation
l Une relation peut avoir plusieurs graphes minimum.
Ils sont alors équivalents
l 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
Utilité du graphe des DF

l Vérifier que le graphe est bien minimum


l Trouver les identifiants de la relation
l Tester si la relation est bonne (bien
normalisée)
l Sinon trouver les décompositions
Exemple de graphe non minimum
E
ED est déduite de EC et CD
X Il faut supprimer ED du graphe
A B C D
Vérifier qu'un graphe est minimum
l DF déduite X
XD est déduite s'il existe un autre chemin X
XA1… ...AnD D

l DF non élémentaire
XD est non élémentaire s'il existe une DF
YD telle Y est un sous-ensemble des A B C
attributs de X
(A,B,C)D est non élémentaire
X
D
Exemple de graphe des DF

LivraisonTot (N°f, adrF, N°p, typeP, qté)


l N°f  adrF
– l’adresse d’un fournisseur ne dépend que du fournisseur
l N°p  typeP
– le type d’un produit ne dépend que du produit
l (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


Un autre exemple

l RU (N°E, nom, prénom, adr, dateN, nomC,


année, nbCrédits, prof, note)
l 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).
l Faire le graphe minimum des DF
Graphe des DF de RU
nom
prénom
N°E
adr
dateN
note

nomC nbCrédits
année prof
DFs et identifiants
l Le graphe minimum des DF permet de trouver les identifiants de la relation
l 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)
l 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.
l Exemple : R (A, B, C, D, E)

A B CD

E est l'identifiant de R
DFs et identifiants - Exemple

l Autre exemple : R (A, B, C, D, E, F, G)

F G

A B C E

(F, G) est l'identifiant de R


Propriétés des dépendances fonctionnelles
(ou axiomes d'Amstrong)

l DF1 : réflexivité Y inclus-ou-egal X => X -> Y


l DF2 : augmentation X -> Y => X,Z -> Y,Z
l DF3 : transitivité X -> Y ET Y -> Z => X -> Z
l DF4 : pseudo-transitivité X -> Y ET Y,W -> Z => X,W ->
Z
l DF5 : union X -> Y ET X -> Z => X -> Y,Z
l DF6 : décomposition X -> Y ET Y Z => X -> Z
Normalisation par décomposition

l Soit une relation R qui contient des redondances et


pose des problèmes lors des maj
"Elle n'est pas normalisée"
l Il faut la décomposer en plusieurs relations meilleures
("normalisées") …
l par projection …
l en suivant les DF
– cela assure d'obtenir des relations normalisées.
l Il faut s'assurer de conserver le même contenu
La jointure des nouvelles relations = R
Normalisation par décomposition (2)
R1 = p[A1, A2,… Ai] R
R2 = p[Ai, Ai+1,… Aj] R
R (A1, A2, … , An)
….
Rk = p[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
Théorème de Heath

l THEOREME :
R (X, Y, Z) est décomposable sans perte
d’information en
R1 = p[X,Y]R
R2 = p[X,Z]R
si la DF XY existe
l R1 est alors nécessairement normalisée (en
3FN).
Elle décrit le fait élémentaire XY
l Les requêtes posées sur R et celles posées
sur R1*R2 donnent le même résultat
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) R2 (NomEmp, age)


Zoé Lausanne secrétaire Zoé 27
Armand Genève secrétaire Armand 32
Marie Bienne directeur Marie 38

R = R1*R2
NB Cette décomposition est sans perte d'information,
mais inutile
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é Lausanne secrétaire 32
Armand Genève secrétaire 27 R
Armand Genève secrétaire 32
Marie Bienne directeur 38

Cette décomposition ne suit pas Heath


Application de Heath
LivraisonTot (N°f, adrF, N°p, typeP, qté)
N°f N°p

adrF qté typeP

l N°f  adrF => R1 (N°f, adrF) ok


LivraisonTot' (N°f, N°p, typeP, qté)
l N°p  typeP => R2 (N°p, typeP) ok
LivraisonTot'' (N°p, N°f, qté)
l (N°p, N°f)  qté =>
LivraisonTot'' (N°p, N°f, qté) ok
Qualité d’une décomposition
l 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)

l 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
Vérification des DF par le SGBD

l 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

l 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é
Formes normales : 1FN

l 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).
l Exemple :
LivraisonTot (N°f, adrF, N°p, typeP, qté)
est en 1FN
l Pratiquement, en relationnel on ne travaille
que sur des relations en 1FN
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)
2ème forme normale : définition
LivraisonTot (N°f, adrF, N°p, typeP, qté)

N°f N°p

adrF qté typeP


l Des DF partent de composants de
l’identifiant => Livraison n’est pas en 2FN
l 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
Décomposition selon les DF
l Pour chaque source de DF créer une relation comprenant :
– la source
– et tous les attributs cibles de DF ayant cette source

N°f N°p
R1 (N°f, adrF)
R1 R2 (N°p, typeP)
R2
R3 (N°f, N°p, qté)
adrF qté typeP
R3
3FN : 3ème forme normale
l Permet d’éliminer des sous-relations incluses
dans
une relation
l Exemple : Fournisseur (N°fourn, ville, pays)

N°fourn

ville pays
N°fourn
doit être décomposée en :
F (N°fourn, ville)
G (ville, pays) ville pays
3ème forme normale : définition
 Fournisseur (N°fourn, ville, pays)
N°fourn

ville pays

l Profondeur de l’arbre des DF > 1 =>


Fournisseur n'est pas en 3FN
l 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
Importance de la 3FN

l Toute relation peut toujours être décomposée


en relations en 3FN sans aucune perte
– sans perte de DF, et
– sans perte d'information
l Ce n'est pas vrai pour les formes supérieures
l Il faut donc toujours faire des schémas au
moins en 3FN
Forme normale de Boyce-Codd

l Généralise la 3FN aux relations à plusieurs identifiants


l 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
l Définition : Une relation est en FNBC si :
- elle est en 1FN, et
- si toute source complète de DF est un identifiant entier
FNBC - exemple : Fournisseur
l Fournisseur (N°fourn, nom-fourn, N°produit, prix)

N°fourn nom-fourn
prix (2 graphes possibles)
N°produit
• Identifiants : (N°fourn + N°produit)
(nomfourn + N°produit)
• Fournisseur est en 3FN mais pas en FNBC
l On doit décomposer pour obtenir des relations en FNBC
l Attention : Ce passage en FNBC n’est pas toujours possible
sans perte de dépendances
Décompostion de Fournisseur
l Fournisseur (N°fourn, nom-fourn, N°produit, prix)

N°fourn nom-fourn F1
prix
N°produit
F2

 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)
FNBC - exemple : Place
l Place (N°Etud, Matière, Rang)
rang sans ex aequo

N°Etud Matière

Rang

l 2 identifiants : (N°Etud + Matière)


(Rang + Matière)
l Place est en 3FN et est en FNBC
FNBC contre-exemple

l Enseignement (N°Etud, Matière, Prof)

N°Etud Matière

Prof

l 2 identifiants : (N°Etud + Matière)


(N°Etud + Prof)
l Enseignement est en 3FN mais n’est pas en FNBC
Décomposition de Enseignement

l Enseignement (N°Etud, Matière, Prof)


l 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
l 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)
Enseignement : 2 solutions

l Solution 1
– Enseignement (N°Etud, Prof, Matière)
– avec la CI : un prof n'enseigne qu'une seule matière
l 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
l 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
Algorithmes de décomposition / DF

l Plusieurs algorithmes pour décomposer


selon les DF
l 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
Algorithme 1
F G R1 (F, A, B) R1 (F, A, B)
R2 (G, E) R2 (G, E)
A B C E R3 (C, D, H) R3' (F, G, C)
R4 (F, G, C) R4' (F, G , D, H)

D H CI : CD,H

l Avantages
– relations en FNBC
l Inconvénients
– dépend de l'ordre selon lequel les DF sont traitées
– peut perdre des DF
– peut trop décomposer
Méthode pragmatique

l 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


Algorithme 2
F G R1 (F, A, B)
R2 (G, E)
A B C E R3 (C, D, H)
R4 (F, G, C)

D H

l Avantages
– relations en FN3
– ne perd pas de DF
– ne perd pas d'information (grâce à R0)
l Inconvénients
– peut trop décomposer (cf. Enseignement)
Algorithme de décomposition :
l entrée : un schéma relationnel (ensemble d'attributs) et un ensemble
E de DF entre ses attributs
l sortie : une ou plusieurs relations en 3FN dont la jointure redonne la
relation initiale (par contre des DF de E ont pu être perdues)
l principe : l'algorithme peut se voir comme la construction d'un arbre
binaire. La racine de cet arbre est la relation à décomposer. L'arbre
se construit récursivement de la manière suivante :

 on choisit une DF dfi dans l'ensemble E des DF


 le fils gauche du noeud racine est une relation composé de
tous les attributs de dfi
 dfi est retirée de l'ensemble E
 le fils droit du noeud racine est une relation composée de
tous les attibuts de la racine excepté ceux présents en partie
droite de dfi
Un autre type de dépendance

l Certaines relations en FNBC peuvent encore


contenir des redondances, et poser des
problèmes lors des maj
l 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.

nomC prof livr e


Relation en Pro ramm
g tion
a Duv a l Alg rith
o m
es
non 1FN S cmid
h t Pro r.1
g
BD J o u v e Dat e
Roc h a t Ullma n n
Ga rarind
Un autre type de dépendance (2)
Cours (nomC, prof, livre) en 1FN

nomC prof livr e


Pro ramm
g tion
a Duv a l Alg rith
o m es
Pro ramm
g tion
a Duv a l Pro r.1
g
Pro ramm
g tion
a S cmid
h t Alg rith
o m es
Pro ramm
g tion
a S cmid
h t Pro r.1
g
BD J o u v e Dat e
BD J o u v e Ullma n n
BD J o u v e Ga rarind
BD Roc h a t Dat e
BD Roc h a t Ullma n n
BD Roc h a t Ga rarind

Cours contient beaucoup de redondances


Un autre type de dépendance (3)

l Cours pose des problèmes de maj


– ajouter un nouveau professeur, Alex, au cours de BD
– corriger le nom d'un livre
– …
l Cependant Cours est déja bien normalisée
Cours est en FNBC
– parce qu'il n'y a pas de DF
l En EA, Cours aurait deux attributs
multivalués
– profs
– livres
indépendants l'un de l'autre
Dépendance multivaluée (DM)

l 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
l Propriété :
S'il y a la DM X-->>Y alors il y a aussi X-->>Z
On note : X-->>Y|Z

l Remarque : DF est un cas particulier de DM


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)


4ème forme normale (4FN)

l Sémantique : La 4FN permet de séparer des


faits multivalués indépendants qui auraient
été réunis dans une même relation
l 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
l Autre définition : R est en 4FN si elle est en
FNBC et ne contient pas de DM
Décomposition selon une DM
l Théorème de Heath n°2
Si R(X, Y, Z) contient la DM X-->>Y|Z
alors la décomposition en : nomC
R1 = p[X,Y]R et
R2 = p[X,Z]R
est sans perte d'information.
prof livre

l Exemple : Cours (nomc, prof, livre) FNBC


est décomposé en :

CoursProf (nomc, prof) 4FN


CoursLivre (nomC, livre) 4FN
– Ces deux relations ne contiennent ni DF ni DM
Conclusion

Conception d'une bd relationnelle


l 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
Conception d’une BD relationnelle

l Méthode 1 : par normalisation


l Décomposition sans perte d’information
et sans perte de dépendances
l Outils :
- dépendances
– fonctionnelles
– multivaluées
- règles de normalisation
Limites de la méthode 1

l OK si le choix des relations initiales est bon


– décomposition de chaque relation indépendamment des
autres
l Solution théorique : partir de la relation
universelle
– relation qui contient tous les attributs
– gros schéma => nombre de dépendances énorme
l 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é)
Conception d’une BD relationnelle
l Méthode 2 : par l'entité association
l Conception d’un schéma entité-association
l puis traduction de celui-ci en schéma relationnel
l Si la traduction n'a pas pris en compte les dépendances, vérifier
la FN de chaque relation

Employé
avec la DF :
AVS nom service nomSadresse

nomS adresse
Les accès concurrents à un SGBD

Navigateur
WEB
Youssef

Navigateur Serveur Module


WEB Web d'accès
Zineb

Programme SGBD
Samir

Outil
d'administration
Sanae
Les problèmes de l'accès concurrent

l A quel moment les modifications effectuées par un


utilisateur sont-elles visibles par les autres ?
l Comment faire lorsque plusieurs utilisateurs modifient
les mêmes données ?
l Comment garantir la validité de la base en cas
d'anomalie ?
Transactions
Une transaction est un ensemble indivisible de modifications de la base
de données.
l Démarrage : implicitement lors d'une requête, d'une connexion ou
explicitement dans un bloc (begin tran – end tran)
l Déroulement : on utilise souvent un verrou qui bloque les tables
modifiées
l Terminaison de la transaction en cours :
– Validation par la commande COMMIT : Les modifications deviennent définitives et
visibles à tous les utilisateurs.
– Annulation par la commande ROLLBACK : Les modifications sont annulées depuis le
début de la transaction.
– En cas d'anomalie : il y a automatiquement ROLLBACK des transactions non
terminées.
Attention, les transactions ne sont pas toujours implantées !
Les propriétés essentielles - ACID

But: Garantir l'intégrité des données en environnement multi-


utilisateurs
l Atomicité : une transaction doit avoir un comportement indivisible
– soit toutes les modifications sur les données effectuées dans la
transaction sont effectives,
– soit aucune n'est réalisée.
l La Cohérence des données d'un SGBD transactionnel doit être
donc permanente, même en cas de mise à jour de la base ou
d'accès concurrents. Une transaction fait passer la base d'un état
cohérent à un autre.
l Isolation : les modifications effectuées au cours d'une transaction
ne sont visibles que par l'utilisateur qui effectue cette transaction.
Les autres utilisateurs ne verront les modifications qu'à la fin de la
transaction si elle est correcte.
l Durabilité : Les effets d'une transaction doivent être garantis dans
le temps, même en cas de problèmes graves (perte d'un disque,
etc.)  Journaux

S-ar putea să vă placă și