Calcul Relationnel

publicité
Calcul Relationnel
Chapitre 4, Section 4.3
1
Calcul Relationnel

Deux variantes:
 Calcul relationnel des tuples(TRC)
 Calcul relationnel des domaines (DRC).

Contient des variables, constantes, ops de comparaison,
opérateurs logiques, et quantificateurs.




TRC: Le domaine des variables est l’ensemble des tuples.
DRC: Le domaine des variables est le domaine des attributs.
TRC et DRC: souslangages de la logique du premier ordre.
Les expressions du calcul sont appelées des formules.
Une réponse est un assignement de constantes aux
variables qui rend la formule vraie.
2
Calcul Relationnel des Tuples

Forme de la requête:










t| p(t)

La réponse inclut tous les tuples t qui rendent
la formule p(t) vraie.

La formule est définie récursivement, en partant
des formules atomiques et en construisant des
formules de plus en plus grandes au moyen des
opérateurs (connecteurs) logiques.
3
Formules TRC

Formules atomiques:

RRname, R.a op S.b, R.a op constante

op =
, , , ,, 
Formule:
 Formule atomique, ou
  p, p  q, p  q , p et q étant des formules, ou
 R( p(R)), avec la variable R libre dans p(R), ou
 R( p(R)) , avec la variable R libre dans p(R)
 Les quantificateurs R et R lient R.


Une variable non liées est dite libre.
4
Variables Liées vs. Libres

Une restriction importante s’impose sur la
définition d’une requête t| p(t) :




 La variable t qui apparaît à la gauche de `|’ doit être la
seule variable libre dans la formule p(...).
5
Calcul Relationnel des Domaines

Forme de la requête:









x1, x2,..., xn | p x1, x2,..., xn


 
 
 La réponse inclut
tous les tuples x1, x2,..., xn qui rendent


la formule

p x1, x2,..., xn






vraie.
la formule de DRC est définie récursivement
de manière analogue au TRC
6
Formules DRC

Formules atomiques:


x1, x2,..., xn  Rname , X op Y, X op constante
op = , , , ,, 
Formule:
 Formule atomique, ou
  p, p  q, p  q , p et q étant des formules, ou

X ( p( X )) , avec la variable X libre dans p(X), ou

 X ( p( X)) , avec la variable X libre dans p(X)
 Les quantificateurs  X et  X lient X.


Une variable non liée est libre.
7
Variables Libres vs Liées

Reconsidérez la définition de la requête:










x1, x2,..., xn | p x1, x2,..., xn


 
 
Restriction importante: les variables x1, ..., xn
qui apparaissent à la gauche de `|’ doivent être
les seules variables libres dans la formule p(...).
8
Trouver tous les navigateurs avec un
niveau au dessus de 7





I, N,T, A | I, N,T, A  Sailors  T  7





La condition I, N,T, A  Sailors garantit que les
variables I, N, T et A sont liées aux attributs du
même tuple de Sailors.
 Le terme à gauche de `|’ (à lire «tel que») signifie
que chaque tuple de ce terme qui satisfait la
condition T>7 est dans la réponse.
 Comment modifier la requête ci haut afin de
répondre à:


Trouver les navigateurs qui soit sont plus âgés que 18
ans ou ont un niveau en dessous de 9 et qui s’appellent
‘Joe’.
9
Trouver les navigateurs avec niveau au
dessus de 7 qui ont réservé le bateau #103





I, N,T, A | I, N,T, A  Sailors  T  7 
 Ir, Br, D Ir, Br, D  Re serves  Ir  I  Br  103















Nous utilisons  Ir , Br , D . . . comme
abréviation pour  Ir  Br   D . . . 


Notez l’utilisation de  afin de trouver un tuple
dans Reserves qui joint le tuple de Sailors sous
considération.
10
Trouver les navigateurs avec niveau au
dessus de 7 qui ont réservé un bateau rouge





I, N,T, A | I, N,T, A  Sailors  T  7 
 Ir, Br, D Ir, Br, D  Re serves  Ir  I 




 B, BN,C B, BN,C  Boats  B  Br  C  ' red '






  
  
Notez bien comment les parenthèses contrôlent la
porté de chaque quantificateur.
 Ceci peut paraître ennuyeux. Cependant, avec une
bonne interface d’utilisateur, cette méthode est
fortement intuitive. (MS Access, QBE)

11
Trouver les navigateurs qui ont réservé
TOUS les bateaux





I, N,T, A | I, N,T, A  Sailors 
 B, BN,C  B, BN,C  Boats 


















 Ir, Br, D Ir, Br, D  Re serves  I  Ir  Br  B




 
 
   
 

Trouver tous les navigateurs I tels que, pour chaque
triplet B, BN,C , soit que ce dernier n’est pas un
tuple dans Boats ou il y a un tuple dans Reserves
montrant que le navigateur I l’a réservé.
12
Trouver les navigateurs qui ont
réservé TOUS les bateaux (Suite)





I, N,T, A | I, N,T, A  Sailors 
 B, BN, C  Boats




 Ir, Br, D  Re serves I  Ir  Br  B




 
 
 
 

Notation plus simple et plus claire pour la même
requête.
 Que veut dire la requête suivante?
..... C  ' red '   Ir, Br, D  Re serves I  Ir  Br  B









  
 

 

13
Requêtes Non Sûres, Pouvoir Expressif

Il est possible d’écrire une requête syntaxiquement
correcte en calcul relationnel qui aura un nombre
infini de réponses. De telles requêtes sont dites non
sûres (« unsafe »).

e.g.,





S |  S  Sailors













Un théorème célèbre dit que chaque requête
exprimable en algèbre relationnelle l’est aussi en
DRC/TRC sûre et vice-versa.
 Complétude relationnelle: Un langage de requêtes est
complet (p.ex. SQL) s’il peut exprimer tout ce qui
est exprimable en algèbre relationnelle

14
Résumé



Le calcul relationnel est non-opérationnel et les
utilisateurs définissent des requêtes en termes de ce
qu’ils veulent et non en termes de comment le
système doit le calculer. Il est déclaratif !
L’algèbre et le calcul relationnel sûr ont le même
pouvoir expressif (notion de complétude
relationnelle).
Note: les exemples donnés sont en DRC; ils sont
adaptables en TRC.
15
Téléchargement