Vous êtes sur la page 1sur 40

Bases de Donnes Relationnelles

Lalgbre
relationnelle

Langages de manipulation
n

Langages formels : base thorique solide

Langages utilisateurs : version plus ergonomique

Langages procduraux : dfinissent comment


driver le rsultat souhait
Langages assertionnels (ou dclaratifs) :
dfinissent le rsultat souhait
BDA.6.2

LMD classiques
n

Langages formels
u
u

langages algbriques : dfinissent un ensemble


doprateurs de manipulation
langages prdicatifs (calcul) : dfinissent le rsultat
souhait en utilisant des expressions de logique

Langages utilisateurs
u
u

inspirs principalement des langages algbriques : SQL


inspirs des langage prdicatifs : QBE, QUEL

BDA.6.3

Lapproche algbrique
n

Une algbre est un ensemble doprateurs de base,


formellement dfinis, qui peuvent tre combins
souhait pour construire des expressions algbriques
Proprit des algbres : fermeture
Le rsultat de tout oprateur est du mme type que les
oprandes (ce qui est indispensable pour construire des
expressions)

Proprit souhaite : compltude


Toute manipulation pouvant tre souhaite par les
utilisateurs devrait pouvoir tre exprimable par une
expression algbrique
BDA.6.4

Lalgbre relationnelle
n
n

Oprandes : relations du modle relationnel (1NF)


Fermeture : le rsultat de toute opration est une
nouvelle relation
Compltude : permet toute opration sauf les
fermetures transitives et les fonctions d'agrgation
(min, max, count)
Oprations unaires (un seul oprande) :
slection (), projection (), renommage ()
Oprations binaires (deux oprandes):
produit cartsien (), jointures (*), union (),
intersection (), diffrence (), division (/)
BDA.6.5

Prambule
n

Pour chacune de ces 9 oprations, on donne :


u lopration
u la

syntaxe (notation)
u la smantique (rsultat attendu)
u le schma
u dventuelles remarques
u un exemple

BDA.6.6

Slection
n

But : ne retenir que certains tuples dans une relation


Pays

nom
Autriche
UK
Suisse

capitale
Vienne
Londres
Berne

population surface
8
83
56
244
7
41

On ne veut que les pays dont la surface est infrieure 100 :


Petit-pays = [surface < 100] Pays
Petit-pays nom
Autriche
Suisse

capitale
Vienne
Berne

population surface
8
83
7
41
BDA.6.7

Slection
n
n

Petit-pays = [surface < 100] Pays


Syntaxe : [c] R
c : condition de slection
condition-lmentaire :
attribut oprateur-de-comparaison constante-ou-attribut
u attribut est un attribut de la relation R
u oprateur-de-comparaison : =, ? , <, >, =, =

condition :
u condition-lmentaire
u condition
u NON

ET/OU condition

condition
u ( condition )

ET

OU

NON
BDA.6.8

Condition de slection - Exemples


n

[ nom=capitale ] Pays
Pays dont le nom est le mme que celui de sa capitale
[ (surface>100 surface<500) (population>30
population<300) ] Pays
Pays dont la surface est comprise entre 100 et 500 ou
dont la population est comprise entre 30 et 300

BDA.6.9

Slection
n

n
n

smantique : cre une nouvelle relation de population


lensemble des tuples de R qui satisfont la condition
schma (rsultat) = schma (oprande)
population (rsultat) population (oprande)

BDA.6.10

Projection
n

But : ne retenir que certains attributs dans une relation


Pays

nom
Autriche
UK
Suisse

capitale
Vienne
Londres
Berne

population surface
8
83
56
244
7
41

On ne veut que les attributs nom et capitale :


Capitales = [nom, capitale] Pays
Capitales

nom
Autriche
UK
Suisse

capitale
Vienne
Londres
Berne
BDA.6.11

Projection

opration unaire

syntaxe : [attributs] R
u attributs

: liste des attributs de R conserver dans le rsultat

smantique : cre une nouvelle relation de population


lensemble des tuples de R rduits aux seuls attributs
de la liste spcifie
schma (rsultat) schma (oprande)
nb tuples (rsultat) = nb tuples (oprande)

BDA.6.12

Effet de bord de la projection


n

Cration et limination de tuples en double


u Une

projection qui ne conserve aucun identifiant de la relation


peut gnrer dans le rsultat des tuples identiques ( partir de
tuples diffrents de loprande)
u le rsultat ne gardera que les tuples diffrents (fermeture)

R ( B , C, D)
b c d
a a b
a a c
trois tuples

[ B , C] R
b c
a a

deux tuples
BDA.6.13

Expressions
n

On veut les capitales des petits pays:


u

Petit-pays = [surface < 100] Pays

Capitale-petit-pays = [nom, capitale] Petit-pays

Capitale-petit-pays =

[nom, capitale] [surface < 100] Pays


nom

capitale

population

surface

Irlande
Autriche
UK
Suisse

Dublin
Vienne
Londres
Berne

3
8
56
7

70
83
244
41

(Parties grise et beige enlever)

BDA.6.14

Expressions - exemples
Surface-petit-pays =

[nom, surface] [surface < 100] Pays


OU

[surface < 100] [nom, surface] Pays

Capitale-petit-pays =

[nom, capitale] [surface < 100] Pays


MAIS [surface < 100] [nom, capitale] Pays

ERREUR !

[nom, capitale] [surface < 100]


[nom, capitale, surface] Pays

OK
BDA.6.15

Renommage
n

n
n
n

n
n

but : rsoudre des problmes de compatibilit entre noms


dattributs de deux relations oprandes dune opration binaire
opration unaire
syntaxe : [nom_attribut1 -> nouveau_nom1, ] R
smantique : les tuples de R avec un (des) nouveau nom
d'attribut
schma de [n1>m1, , ni>mi] R : le mme schma que R
avec les attributs n1, ni renomms en m1, mi
prcondition : les nouveaux noms nexistent pas dj dans R
exemple :
R2 = [B>C] R1
R1

A B
a b
y z
b b

R2

A C
a b
y z
b b

BDA.6.16

Produit cartsien
n

but : construire toutes les combinaisons de tuples de


deux relations (en gnral, en vue dune slection)

syntaxe : R S

exemple :
R

A B
a b
b c
c b
n tuples

RS
S C
c
b
a

D
d
a
a

E
e
b
c

m tuples

A B
a b
a b
a b
b c
b c
b c
c b
c b
c b

C
c
b
a
c
b
a
c
b
a

D
d
a
a
d
a
a
d
a
a

E
e
b
c
e
b
c
e
b
c

n x m tuples
BDA.6.17

Produit cartsien
n
n

n
n

opration binaire
smantique : chaque tuple de R est combin avec
chaque tuple de S
schma : schma (R S) = schma(R) schma(S)
prcondition : R et S nont pas dattributs de mme
nom
(sinon, renommage des attributs avant de faire le
produit)

BDA.6.18

Jointure naturelle
n

but : crer toutes les combinaisons significatives entre


tuples de deux relations
u

ou *

significatif = ont la mme valeur pour tous les attributs de


mme nom

prcondition : les deux relations ont au moins un


attribut de mme nom
exemple :
R

A B
a b
b c
c b

S B
b
a
d

C
c
a
a

D
d
b
c

R*S A
a
c

B C D
b c d
b c d
BDA.6.19

Jointure naturelle

ou *

opration binaire

syntaxe : R * S

smantique : combine certains tuples

schma : schma (R * S) = schma (R) schma (S)


u

les attributs de mme nom napparaissent quune seule fois

la combinaison exige lgalit des valeurs de tous les


attributs de mme nom de R et de S
u

si R et S nont pas dattributs de mme nom la jointure peut


tre dynamiquement remplace par un produit cartsien

BDA.6.20

Jointure naturelle - Exemple


n

Pays (nom, capitale, population, surface, continent)


LangueParle (langue, pays, %population)

Pour chaque langue, dans quels continents est-elle


parle ?
[langue, continent]
( LangueParle * [nom > pays] Pays )

BDA.6.21

Theta jointure
n

ou

*[c]

but : crer toutes les combinaisons significatives entre


tuples de deux relations
u

[c]

significatif = selon un critre de combinaison explicitement


dfini en paramtre de lopration (c)

prcondition : les deux relations nont pas dattribut de


mme nom
exemple : R * [B ? C] S
R

A B
a b
b c
c b

S C
b
b
c

D
c
a
a

R * [B ? C ] S
E
d
b
c

A
a
b
b
c

B
b
c
c
b

C
c
b
b
c

D
a
c
a
a

E
c
d
b
c
BDA.6.22

Theta-jointure
n

opration binaire

syntaxe : R *[c] S
u

c : condition de jointure

condition-lmentaire :
attribut1 oprateur-de-comparaison attribut2
u attribut1 est un attribut de la relation R
u attribut2 est un attribut de la relation S (ou vice-versa)
u oprateur-de-comparaison : =, ? , <, >, =, =

condition :
u

condition-lmentaire
condition ET/OU condition

ET

NON condition

NON

( condition )

OU

BDA.6.23

Theta-jointure (suite)
n

smantique : combine les tuples qui satisfont la condition

schma (R *[c] S) = schma (R) schma (S)

Exemple :
Pays (nom, capitale, population, surface, continent)
LangueParle (langue, pays, %population)

Pour chaque langue, dans quels continents est-elle parle ?


[langue, continent]
( LangueParle *[nom = pays] Pays )

BDA.6.24

Jointures : oprateurs drivs


n

R ( A, B, C )

S (C, D, E )

R*S = [A, B, C, D, E] [CC=C] (( [C>CC] R) x S)

Mme chose pour la theta-jointure

BDA.6.25

Union
n

opration binaire

syntaxe : R S

smantique : runit dans une mme relation les tuples


de R et ceux de S

schma(R S) = schma(R) = schma(S)

prcondition : schma(R) = schma(S)

Exemple :
R1

A B
a b
b b
y z

R2

A B
u v
y z

R1 R2

A B
a b
b b
y z
u v

BDA.6.26

Union

(suite)

Effet de bord : des tuples en double peuvent tre crs.

Ils sont automatiquement supprims du rsultat.

BDA.6.27

Intersection
n

opration binaire

syntaxe : R S

smantique : slectionne les tuples qui sont la fois


dans R et S

schma (R S) = schma (R) = schma (S)

prcondition : schma (R) = schma (S)

Exemple :
R1

A B
a b
y z
b b

R2

A B
u v
y z

R1 R2

A B
y z
BDA.6.28

Diffrence n

opration binaire

syntaxe : R S

smantique : slectionne les tuples de R qui ne sont


pas dans S

schma (R S) = schma (R) = schma (S)

prcondition : schma (R) = schma (S)

Exemple :
R1

A B
a b
y z
b b

R2

A B
u v
y z

R1 R2

A B
a b
b b
BDA.6.29

Intersection : oprateur driv


n

R S = R - (R - S)
R

populations

R-S
RS

BDA.6.30

La division
n

But : traiter les requtes du genre les tels que


TOUS les
Soient R(A1, , An) et V(A1, , Am)
avec n>m et A1, , Am des attributs de mme nom
dans R et V
R/V = les tuples de R
rduits aux attributs Am+1, , An
tels qu'ils existent dans R concatns tous les
tuples de V
R/V = { <am+1, am+2, , an> /
<a1, a2, , am> V
<a1, a2, , am ,am+1, am+2, , an> R }
BDA.6.31

La division - exemples
R A
1
1
1
1
2
2
3
3
3
V B C
3 5

B
1
2
2
3
1
3
1
2
2

C
1
0
1
0
1
3
1
0
1

V B C
1 1
2 0

R/V A
1
3

V B C
1 1

R/V A
1
2
3

R/V A
/
BDA.6.32

Exemple de division
R : Obtenu

V : Prrequis

R/V

ETUDIANT

COURS

COURS

ETUDIANT

Francois

BD

Prog

Francois

Franois

SI

Pierre

Francois

Prog

BD

Annie

BD

Annie

SI

Annie

Math

Pierre

Prog

Pierre

BD

R/V : Etudiants ayant tous les prrequis

BDA.6.33

Division - oprateur driv


n

R(A1, , An) et
avec n>m

V(A1, , Am)

R/V=
[Am+1, , An)] R
[Am+1, , An)] ( ( ([A1, , Am)]R) x V ) - R )

BDA.6.34

Proprits des oprateurs


n

RS=SR

R*S=S*R

(commutativit)

[p1] ( [p2] R) = [p2] ( [p1] R) = [p2 p1] R


[p] ( [a] R) = [a] ( [p] R)

si attributs(p) a

Utilit : optimisation des expressions


u faire

les slections et projections le plus tt possible


pour rduire le volume des relations oprandes
BDA.6.35

Optimiseur de requtes
SELECT
FROM
WHERE ...

1) Traduction en
expression algbrique
S
G
B
D

2) Optimisation de
l'expression algbrique
3) Excution des
oprations de l'algbre
Base de
donnes
BDA.6.36

Exemples de requtes algbriques


n

Soient les relations suivantes :

Journal (code-j, titre, prix, type, priodicit)


Dpt (no-dpt, nom-dpt, adresse)
Livraison (no-dpt, code-j, date-liv, quantit-livre)

BDA.6.37

Rpondre aux requtes suivantes :


n

Quel est le prix des journaux ?


[titre, prix] Journal

Donnez tous les renseignements connus sur les journaux


hebdomadaires
[priodicit = "hebdomadaire"] Journal

BDA.6.38

Rpondre aux requtes suivantes (2)


n

Donnez les codes des journaux livrs aux dpots de


Bienne
Bienne
Dpt (no-dpt, nom-dpt, adresse)
Livraison (no-dpt , code-j, date-liv, quantit-livre)

?
[code-j] ( [adresse = "Bienne"] Dpt * Livraison)
BDA.6.39

Rpondre aux requtes suivantes (3)


n

Donnez les numros des dpots qui reoivent plusieurs journaux

Livraison (no-dpt , code-j, date-liv, quantit-livre)

Livraison (no-dpt , code-j, date-liv, quantit-livre)

[no-dpt] (
[ no-dpt -> dpt2 , code-j -> code2] Livraison
* [code-j code2 no-dpt=dpt2]
[no-dpt, code-j] Livraison )

BDA.6.40