Calculs relationnels
BDA 8.2
LMD prdicatifs
n
BDA 8.3
Calcul de tuples
Exemple de requte
n
n
Requte multi-relation
Etudiant (n, nom, prnom, anne)
Inscription (not, nomC, note1, note2)
n
Algbre / calcul
[no, prnom, note1, note2] (( [nom = "Rochat"] Etudiant)
*[no = not] ( [nomC ="BD"] Inscription))
ou
[no, prnom, note1, note2]
[nom = "Rochat" nomC = "BD"]
( Etudiant *[no = not] Inscription )
e Etudiant , i Inscription
{ e.no, e.prnom, i.note1, i.note2 |
e.nom = "Rochat" i.nomC = "BD" e.no = i.not }
Formule valide
n
Formule lmentaire :
x.A oper-comparaison constante
u x.A oper-comparaison y.B
oper-comparaison : =, ? , <, >, =, =
u x et y sont des variables libres
u
Exemples
u
u
x.nom="Rochat"
x.nom = y.nom
BDA 8.10
Formule valide :
uformule
lmentaire
uformule formule
uformule formule
u formule
u (formule)
u Si fx est une formule valide o x est une variable libre,
alors :
x fx est une formule valide o x est lie
"il existe au moins un tuple x tel que fx soit vrai"
x fx est une formule valide o x est lie
"pour tous les tuples x, fx est vrai"
BDA 8.11
x.nom = "Rochat"
u
x (x.nom="Rochat")
est vrai s'il y a un Rochat dans Etudiant
u
???
x (x.anne>1980)
est vrai si tous les tudiants sont ns aprs 1980
u
BDA 8.13
Inscription
e
x ( A B) x (A B)
BDA 8.14
x fx
est quivalent :
x (fx )
Soit xR
si R est vide , alors
u x fx = Vrai
u x fx = Faux
BDA 8.15
Rappels (suite)
n
xR, yS, zT
{ x.A, y.B | fx,y,z }
Faire le produit des relations variables libres
RxS
BDA 8.17
xR, yS, zT
{ x.A, y.B | fx,y,z }
Pour tout tuple, x, de R faire :
Pour tout tuple, y, de S faire :
Si fx,y,z est vrai alors ajouter <x.A,y.B> au
rsultat
fin pour tout y de S
fin pour tout x de R
[A, B]R
[A, E] (RxS)
[A] (R*[B=E]S)
BDA 8.19
BDA 8.20
Exemples (1)
n
u Abu
{ u.bar / u.buveur="Philippe" u.mois=12
u.anne=2003 }
n
u Abu , i Bire
{ u.bar, u.bire, i.pays / u.buveur="Philippe"
u.mois=12 u.anne=2003 u.bire=i.bire }
BDA 8.21
Exemples (2)
n
p Personne , u Abu
{ p.nom, p.age, p.quartier / u (p.nom=u.buveur)}
n
BDA 8.22
Exemples (3)
n
p Personne , u Abu
{ p.nom / u (p.nom=u.buveur) }
Exemples (4)
n
BDA 8.24
Exemples (5)
n
BDA 8.25