160 likes | 417 Views
Calcul Relationnel. Chapitre 4, Section 4.3. 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 .
E N D
Calcul Relationnel Chapitre 4, Section 4.3
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.
Calcul Relationnel des Tuples • Forme de la requête: • 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.
Formules TRC • Formules atomiques: • , R.a op S.b, R.a op constante • op = • Formule: • Formule atomique, ou • , p et q étant des formules, ou • , avec la variable Rlibredans p(R), ou • , avec la variable Rlibre dans p(R) • Les quantificateurs et lientR. • Une variable non liées est dite libre.
Variables Liées vs. Libres • Une restriction importante s’impose sur la définition d’une requête : • La variable t qui apparaît à la gauche de `|’ doit être la seule variable libre dans la formule p(...).
Calcul Relationnel des Domaines • Forme de la requête: • La réponse inclut tous les tuples qui rendent • la formulevraie. • la formule de DRC est définie récursivement de manière analogue au TRC
Formules DRC • Formules atomiques: • , X op Y, X op constante • op = • Formule: • Formule atomique, ou • , p et q étant des formules, ou • , avec la variable X libredans p(X), ou • , avec la variable X libre dans p(X) • Les quantificateurs et lient X. • Une variable non liée est libre.
Variables Libres vs Liées • Reconsidérez la définition de la requête: • Restriction importante: les variables x1, ..., xn qui apparaissent à la gauche de `|’ doivent être les seules variables libres dans la formule p(...).
Trouver tous les navigateurs avec un niveau au dessus de 7 • La condition 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’.
Trouver les navigateurs avec niveau au dessus de 7 qui ont réservé le bateau #103 • Nous utilisons comme abréviation pour • Notez l’utilisation de afin de trouver un tuple dans Reserves qui joint le tuple de Sailors sous considération.
Trouver les navigateurs avec niveau au dessus de 7 qui ont réservé un bateau rouge • 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)
Trouver les navigateurs qui ont réservé TOUS les bateaux • Trouver tous les navigateurs I tels que, pour chaque triplet , 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é.
Trouver les navigateurs qui ont réservé TOUS les bateaux (Suite) • Notation plus simple et plus claire pour la même requête. • Que veut dire la requête suivante? .....
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., • 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
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.