Vous êtes sur la page 1sur 24

CALCUL RELATIONEL

Table des matières


INTRODUCTION................................................................................................................................. 2
I. CALCUL RELATIONNEL A VARIABLE N-UPLET ............................................................. 2
1. Définition et Expression générale ............................................................................................ 2
2. Notion d’atome, de formule et exemples liés aux variables de tuple .................................... 4
II. CALCUL RELATIONNEL A VARIABLE DOMAINE........................................................... 8
1. Expression des jointures en calcul relationnel (variables de domaine) ............................. 10
a. JOINTURES SIMPLES ..................................................................................................... 10
b. DOUBLE JOINTURE ........................................................................................................ 11
c. Quantificateur Universel .................................................................................................... 11
2. Exemple de requête en calcul relationnel de domaine ........................................................ 12
III. COMPARAISON ENTRE LE TRC ET RDC...................................................................... 14
1. Du calcul relationnel a variable tuple au calcul relationnel a variable domaine .............. 14
2. Passage du calcul a domaine au calcul a tuple ........................................................................ 15
IV. ALGEBRE RELATIONNELLE CONTRE CALCUL RELATIONNEL ......................... 16
1. Définition des concepts ........................................................................................................... 17
2. Limites du calcul et de l’algèbre relationnelle ...................................................................... 17
3. Correspondance entre les opérations de l’algèbre relationnelle et celles du calcul
relationnel ........................................................................................................................................ 18
4. Avantages et inconvénients .................................................................................................... 19
APPLICATION................................................................................................................................... 21
CONCLUSION ................................................................................................................................... 23

Tableau 1: Comparaison enre les variantes de calculs relationnels ..................................................... 14


Tableau 2: Comparqison entre l'algèbre et le calcul relationnel .......................................................... 19
Tableau 3: Tableau récapitulatif de comparaison ................................................................................ 20

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

INTRODUCTION

Depuis le début de ce cours, nous essayons d’en savoir plus sur le fonctionnement
des bases de données. Jusqu’ici nous avons acquis des connaissances sur le
recueillement, le rassemblement, le traitement des données et la conception, à
partir de ces données-là des différentes tables d’une base de données. Ainsi il
s’agit de manipuler les données de ces différentes tables. Pour ce faire plusieurs
langages ont été mis sur pieds pour atteindre cet objectif. Nous avons entre autre
l’algèbre relationnel présenté dans le chapitre précédent, et le calcul relationnel
qui fera l’objet de notre expose. En effet avec l’algèbre relationnelle, une requête
est exprimée comme une séquence d’opérations à réaliser à partir des relations de
la base de données différemment du calcul relationnel qui est beaucoup plus
déclaratif. Ainsi il repose sur le calcul des prédicats (propositions qui peuvent
être vraie ou fausse dans un certain contexte) à l’interrogation de la base de
données. Il existe deux types de calcul relationnel entre autres le calcul relationnel
à variable n-uplets (tuples) et le calcul relationnel à variable domaine que nous
expliciterons. Nous établirons par la suite une claire différence entre le calcul
relationnel et l’algèbre relationnel.

I. CALCUL RELATIONNEL A VARIABLE N-


UPLET

1. Définition et Expression générale

Ici, il existe deux types de variante du calcul relationnel :

• Le calcul relationnel à variable domaine


• Le calcul relationnel à variable n-uplets.

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

L’expression suivante est une expression générale du calcul relationnel à variable


n-uplets : {t1[A1], t2[A2], ... , tN[AN] | COND (t1,t2,…, tN, tN+ 1,…,tN+M) }.

Dans cette expression, les ti représentent des variables n-uplets c’est-à-dire les
tuples; les Ai sont des attributs de relation associés aux ti et COND est une
formule du calcul relationnel à variable n-uplets. Une expression de la forme ti
[Ai] exprime la valeur du n-uplet ti suivant l’attribut de nom Ai.

Une expression générale simplifiée du calcul relationnel à variable n-uplet est de


la forme {t | P(t)} : c’est l’ensemble des n-uplets tels que le prédicat P(t) est vrai
pour t.

• t est une variable n-uplet et t[A] désigne la valeur de l’attribut A dans t.


•t ϵ R signifie que t est un n-uplets de R où R est une relation.
• P est une formule de la logique de premier ordre.

Exemple : Considérons la relation suivante :

REPAS(date, invite)

Exp1 : { r[invite] | REPAS(r) ꓥ r[date]= ‘01/05/97’ }

Ici, r représente la variable n-uplet de la relation REPAS, invite est le nom d’un
des attributs de la relation REPAS.

Il est également possible d’écrire les requêtes de la forme suivante :

r ϵ REPAS
Exp2 : { r[invite] | r[date]=’01/05/97’ }

Ou encore de la manière suivante :


r ϵ REPAS
Exp3 : { r.invite | r.date=’01/05/97’ }

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

2. Notion d’atome, de formule et exemples liés aux variables de


tuple

Dans notre expression générale où COND est une formule du calcul relationnelle
à variable n-uplets, il sera donc question pour nous dans cette partie de construire
une formule liée à cette expression à partir de prédicats atomiques (atomes) qui
sont d'une des formes suivantes :

Un atome de la forme R(ti) où R est un nom de relation et ti est une variable


n-uplet. Cet atome identifie le domaine de la variable ti comme celui de la
relation de nom R.

Exemple : Considérons la relation suivante : Menu(date, plat)


m ϵ Menu: est une variable n-uplet de la relation Menu

Menu(m) : est un atome de la forme R(ti)

Cet atome identifie le domaine de la variable m.

Un atome de la forme ti[A] op tj[B] où op est un opérateur de


comparaison classique, ti et tj des variables n-uplets, et A, B des attributs
des relations associées.
Exemple : considérons les relations suivantes :
• REPAS ( date , invité )
• MENU ( date , plat ).

{ r,m | r[date]=m[date]}

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

Où r et m sont des variables n-uplets telsque r ϵ REPAS m ϵ MENU. Cet atome


montre que la date du repas est égale (op) à la date de menu.

Un atome de la forme ti[A] op c ou c op tj[B], où c est une constante.


Exemple : Considérons la relation suivante : Employe (nomEmploye, salaire)

Soit e la variable n-uplet tel que e appartient à Employe et c une constante tel que
c=50000. On aura donc l’atome suivant :

{e[nomEmploye] |e[salaire] !=50000}

ou

{e[nomEmploye] | 50000 != e[salaire] }

Dès lors nous pouvons donc établir des formules qui sont constituées
d'atomes connectés par les opérateurs logiques et, ou, négation se définissant de
la manière suivante :

➢ Tout atome est une formule.

Par exemple : tout atome de la forme R(ti) sera considéré comme


une formule.

➢ Si F1 et F2 sont des formules, alors (F1 et F2), (F1 ou F2), négation(F1)


sont des formules.
➢ Si F est une formule, alors (il existe t) (F) est une formule avec t
une variable n-uplet.
➢ Si F est une formule, alors (quel que soit t) (F) est une formule avec
t une variable n-uplet.

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

Parlant des valeurs décrites par des formules, nous pouvons dire qu’à toute
formule, on peut faire correspondre les valeurs pour les variables libres qui
rendent cette formule vraie. Une formule peut être utilisée pour décrire les valeurs
recherchées c’est-à-dire qu’il est possible d’utiliser une formule pour spécifier
une requête dans une base de données.

Remarque :
❖ Une variable est dite libre si elle n'est pas introduite par un
quantificateur, liée sinon (c’est-à-dire introduite par un quantificateur).
Par contre si une variable est introduite par un quantificateur, elle peut
apparaitre que dans la formule sous ce quantificateur. Exp : A ∧ (∀x B) ∧
C, x peut être dans B mais pas dans A ni C (Pour tout x, la formule B doit
être vraie).
❖ Les opérateurs et, ou, négation, implication logique, quel que soit et il
existe sont respectivement notés : ∧, ∨, ┐, →, ∀ et ∃. Ils existent parmi ces
operateurs ceux qui sont plus prioritaire que les autres :(+prioritaire)
{┐} ; {∧, ∨} ; {→} ; {∀, ∃} (-prioritaire).

Exemple de formule avec gestion de priorités :

P (x, y) ∧ Q (x, a)

∀x ∀y (┐ (P (x, y) ∧Q (x, a)))

┐ (P (x, y) ∧Q (x, a)) ∀x ∀y (┐ (P (x, y) ∧Q (x, a)))

P (z, f(a)) →∀x ∃y (┐ (P (x, y) ∧Q (x, a)))


∀y (¬ (P (x, y) ∧Q (x, a)))

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

Exemples : Considérons les relations suivantes :

▪ REPAS ( date , invité ).


▪ MENU ( date , plat ).
▪ PREFERENCES (personne , plat ).
Considérons la requête ci-dessous :

{ r[invite] | REPAS(r) ∧ r[date]=‘01/05/97’ }

Cette requête en calcul relationnel à variable n-uplets permet de récupérer la liste


des invités du repas du 01/05/97.

{ r[invite] | ∃m,p (REPAS(r) ∧ MENU(m) ∧ PREFERENCES(p) ∧ m[date]=r[date]


∧ m[plat]=p[plat] ∧ r[invite]=p[personne]) }

Cette requête en calcul relationnel à variable n-uplets permet de récupérer la liste


des invités qui, lors d’un repas, ont eu au moins un de leur plat préféré.

{ m[plat] | ∃r (REPAS(r) ∧ MENU(m) ∧ m[date]=r[date] ∧ r[invité]=‘Alice’) }

Cette requête en calcul relationnel à variable n-uplets permet d’avoir la liste des
plats servis à l’invitéé Alice.

{ r,p | REPAS(r) ∧ PREFERENCES(p) }

Cette requête en calcul relationnel à variable n-uplets permet de réaliser le produit


cartésien entre REPAS et PEREFERENCES.

{ p[personne] | ∀r (PREFERENCES(p) ∧ REPAS(r) ∧ r[invité]!=p[personne])


}

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

Cette requête en calcul relationnel à variable n-uplets permet d’avoir la liste des
personnes qui n’ont jamais été invités.

{ R[date] | REPAS(r) } → EDATE


{ r[invité] | ∀e (REPAS(r) ∧ EDATE(e) ∧ r[date]=e[date]) }}

Cette requête en calcul relationnel à variable n-uplets permet d’avoir la liste des
invités qui sont venus à tous les repas.

II. CALCUL RELATIONNEL A VARIABLE


DOMAINE

Le calcul relationnel à variable domaine est un langage de requête dont la


puissance est équivalente au calcul relationnel à variable tuple. Mais il se
comporte différemment. En particulier, il est plus facile de récupérer un sous-
ensemble de colonnes avec ce formalisme.

Une expression générale du calcul relationnel à variable domaine est de la


forme:
{< x1, x2,..., xn >| P (x1, x2, ..., xn )}

Où :

• x1,x2,..., xn représentent les variables de domaine.


• P est un prédicat.

Cela se lit de la manière suivante : l’ensemble des valeurs x1, x2, ..., xn vérifiant

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

le prédicat P.
Les formules valides sont construites à partir des quatre règles suivantes :
Une condition de la forme x.A op a ou x.A op y.B est une formule valide
(op désigne l’un des opérateurs de comparaison =, !=, <, =<, >, >= , et a
une constance. )
Si F, F1 et F2 sont des formules valides alors : (F), ¬ F, F1 ^ F2, F1 v F2
sont aussi des formules valides.

Remarque :
➢le symbole ┐ représente la négation (NOT).
➢Le symbole ∧ représente la conjonction (AND).
➢Le symbole ∨ représente la disjonction (OR).

Priorité des symbolises : {┐}, {∧, ∨ }, {=>} , {∃ , ∀}


Si Fx est une formule valide où x est une variable libre, alors :
∃ x (Fx) et ∀x (Fx) sont des formules valides où x est une variable
liée .

Remarque:

➢∃ x signifie « il existe un x tel que »


➢∀x signifie « quelques soit x »
Rien d’autre n’est une formule valide.

Définition: une variable est dite liée (quantifiée) dans une formule si elle est
associée au quantificateur existentiel ∃ ou au quantificateur ∀. Elle est dite libre
si non.

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

1. Expression des jointures en calcul relationnel


(variables de domaine)

Avec calcul relationnel de domaine il est possible d’exprimer des jointures.

a. JOINTURES SIMPLES

Soit les relations suivantes :

Recherchons les noms et prix des articles de type burger. L’expression est
donnée par :

La jointure en calcul relationnel de domaine est beaucoup plus implicite


contrairement à celle du calcul relationnel de tuple qui a une condition de jointure
explicite venant du fait que l’on utilise le même nom de variables dans des
relations différentes (indiquant ainsi que les valeurs sont égales). La même
requête en calcul relationnel à variable n-uplet donnera :

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

b. DOUBLE JOINTURE

Soit les relations suivantes :

L’expression en calcul relationnel de domaine en utilisant les doubles jointures


qui affiche le nom et le prix des voitures grises :

c. Quantificateur Universel

Pour terminer la partie du calcul relationnel de domaine il nous reste à voir le


quantificateur universel, pour ce faire nous reprenons nos relations suivantes :

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

Nous voulons rechercher les noms et prix des voitures qui sont de toutes les
couleurs.
L’expression est la suivante :

2. Exemple de requête en calcul relationnel de domaine

Considérons les relations suivantes :


• REPAS ( date , invité ).
• MENU ( date , plat ).
• PREFERENCES ( personne , plat ).

{ i | ∃d (REPAS(invité:i,date:d) ∧ d=‘01/05/97’) }

Cette requête en calcul relationnel à variable domaine permet de récupérer la


liste des invités du repas du 01/05/97.

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

{ p | ∃r (REPAS(invité:i,date:d) ∧ MENU(date:d,plat:p) ∧ i=‘Alice’) }

Cette requête en calcul relationnel à variable domaine permet d’avoir la liste des
plats servis à l’invité Alice. Ceci bien évidement seulement dans le cas où la
date du repas est la même que celle du menu; cet exemple illustre le fait que
lorsque deux variables de deux relations différentes domaine ont le même nom
traduit le fait que dans les tuples concernés, les valeurs de ces attributs
seront égales.

{ i | ∃d,p (REPAS(invité:i,date:d) ∧ MENU(date:d,plat:p) ∧ PREFERENCES(plat:p,personne:i)) }

Cette requête en calcul relationnel à variable domaine permet de récupérer la


liste des invités qui, lors d’un repas, ont eu au moins un de leur plat préféré.

{ d,i,pe,p | REPAS(invité:i,date:d) ∧ PREFERENCES(plat:p,personne:pe) }

Cette requête en calcul relationnel à variable domaine permet de réaliser le


produit cartésien entre REPAS et PEREFERENCES.

{ pe | ∃p ∀i (REPAS(invité:i) ∧ PREFERENCES(plat:p,personne:pe) ∧ i!=pe) }

Cette requête en calcul relationnel à variable domaine permet d’avoir la liste des
personnes qui n’ont jamais été invités.

{ i | ∀d (REPAS(invité:i,date:d) }

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

Cette requête en calcul relationnel à variable domaine permet d’avoir la liste des
invités qui sont venus à tous les repas.

III. COMPARAISON ENTRE LE TRC ET RDC

Calcul relationnel tuple Calcul relationnel de domaine

Ici , les variables représentent les tuples Ici, les variables représentent les
de la relation spécifiée valeurs tirées du domaine spécifié

Un domaine équivaut au type de


données et de colonnes et à toutes les
Un tuple est un élément unique de
relation contraintes sur des valeurs des
données
Dans cette variable de filtrage utilise Le filtrage est effectuer en fonction
un tuple de relation du domaine des attributs
Notation : {a1,a2,…an|
Notation : {t| p (t)} ou {t| Etat (t)}
p(a1,a2,…an)}
Exemple {T| Employé(T) ET
Exemple {|<Employé> Dept_Id=10}
T.Dept_Id=10}
Tableau 1: Comparaison enre les variantes de calculs relationnels

1. Du calcul relationnel a variable tuple au calcul relationnel a variable


domaine

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

Les deux formes de calcul relationnel sont ´equivalentes en termes


d’expressivité.
Passage du calcul de “tuple” au calcul de domaine :
Remplacer ∃x[A1 ,...,An] par ∃ A1 . . . ∃An
1 1 n

où les Ai sont des variables du calcul de domaine.


i

Procéder similairement pour les ∀.


Remplacer R[A 1, ... ,A n] par R(A1 : xA1 , . . . , An : xA n).
1 n 1 n

Remplacer x.A par A.


Ajouter ∃xA au début de la formule pour tous les attributs A
des variables x tel que x apparaıt dans la partie résultat mais
pas x.A.
Exemple
Calcul de tuple :

{x.Nom, y.Revenu | Employe(x) ∧ Salaire(y) ∧ ∃z(Nom,DateN) NeLe(z)


∧ x.Nom = y.Nom ∧ x.Nom = z.Nom ∧ z.DateN > ’31/12/1965’}

Traduction en calcul a varaible domaine :

{xNom, yRevenu | ∃yNom Employe(Nom : xNom)∧ Salaire(Nom : yNom,


Revenu : yRevenu) ∧ ∃zNom ∃zDateN NeLe(Nom : zNom, DateN : zDateN) ∧ xNom
= yNom ∧ xNom = zNom ∧ zDateN > ’31/12/1965’}

2. Passage du calcul a domaine au calcul a tuple

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

Dans le résultat de la requête et dans les comparaisons,

Remplacer x par x[A] ou x.A, où A est le premier attribut correspondant à x


dans les prédicats.
Remplacer existe x par ∃x[A], où A est le premier attribut correspondant à x
dans les prédicats.
Procéder similairement pour ∀.
Transformer R(A1 : x1, . . . , AN : xn) en (∃R [A1,...,An]

Exemple :
Calcul à variable domaine :

{x, y | Employe(Nom : x) ∧ Salaire(Nom : x, Revenu : y) ∧ ∃z NeLe(Nom : x,


DateN : z) ∧ z > ’31/12/1965’}

Correspondance du calcul a variable tuple

{ x(Nom).Nom, y (Revenu).Revenu | (∃u1 (Nom) Employe(u1) ∧ u1.Nom = x.Nom) ∧


(∃u2 (Nom,Revenu) Salaire(u2) ∧ u2.Nom = x.Nom ∧ u2.Revenu = y.Revenu) ∧

∃z(DateN) (∃u3 (Nom,DateN) NeLe(u3) ∧ u3.Nom = x.Nom ∧ u3.DateN = z.DateN) ∧


z.DateN > ’31/12/1965’}

IV. ALGEBRE RELATIONNELLE CONTRE


CALCUL RELATIONNEL

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

1. Définition des concepts

Les langages de requête relationnels utilisent deux approches : le calcul


relationnel et l’algèbre relationnelle. Ces derniers ont une puissance d'expression
équivalente (complétude relationnelle). Autrement dit, toutes les requêtes
exprimées en algèbre relationnelle (sélection, projection, jointure, ...) peuvent
être exprimées dans le calcul relationnel et vice-versa. Ceci fut vérifié en premier
par EDGAR F. CODD en 1972 en se fondant sur un algorithme appelé «
Algorithme de réduction de CODD » basé sur deux théorèmes.

Tous deux des langages formels, il coexiste néanmoins des différences


fondamentales dont la plus frappante est le fait que l’algèbre relationnel est un
langage procédural indiquant comment obtenir les résultats contrairement au
calcul relationnel qui lui, fait fi de la procédure d’obtention des résultats et ne se
préoccupe que des résultats escomptés.

2. Limites du calcul et de l’algèbre relationnelle

La plus grande limitation du calcul (l’algèbre) relationnelle est qu’il


est abstraite. Autrement dit, il est impossible de l’exécuter sur un serveur
de base de données et obtenir un résultat.
Le calcul (l’algèbre) relationnelle ne peut pas faire d’arithmétique
c’est à dire que si l’on souhaite connaitre par exemple le prix de 10 L
d’essence, en supposant une augmentation de 10% du prix, cela n’est pas
possible en utilisant le calcul (l’algèbre) relationnelle.
Le calcul (l’algèbre) relationnelle ne peut pas trier et/ou imprimer les
différents formats. Par exemple si l’on souhaite organiser le nom des

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

produits dans l’ordre croissant de leurs prix, cela n’est pas possible avec
calcul (l’algèbre) relationnelle.
Le calcul (l’algèbre) relationnelle ne peut pas effectuer d’agrégats. Par
exemple il nous ait impossible de savoir combien d’employées travail dans
chaque département.

3. Correspondance entre les opérations de l’algèbre


relationnelle et celles du calcul relationnel

L’on distingue cinq opérations de base pour effectuer des requêtes :

➢ Opérations unaires :
• Sélection : On peut insérer les conditions des sélections directement
dans les formules (en les combinant en général avec ∧).
• Projection : La projection correspond à ajouter des ∃ devant les
variables n-uplets dont aucun attribut n’est projeté.

➢ Opérations binaires :
• Union : L’union se traduit par un ∨
• Différence : La différence A - B se traduit par FA ∧ (¬ FB) où FA et
FB ont les mêmes variables libres.

• produit cartésien : Le produit A × B se traduit par un FA ∧ FB avec


les variables libres de FA et FB disjointes.

Autres opérations qui s’expriment en fonction des 5 opérations de


base :
• Jointure (naturelle, -jointure) : La jointure naturelle se traduit par
l’ajout d’égalités entre les attributs communs aux relations constituant
la jointure. On peut utiliser une jointure naturelle lorsque les attributs
communs à plusieurs relations sont liées par des variables.
UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

• L’intersection, division : elles s’expriment en fonction de autres


opérateurs.
• Le renommage peut, lorsque cela est nécessaire, se traduire
via l’introduction d’une nouvelle variable n-uplet combinée
avec des égalités. On peut aussi utiliser le renommage en cas de conflit
sur les attributs.
• Une comparaison se traduit par une sélection

Le tableau récapitulatif de comparaison d’opérateurs est celui-ci :

Opérations Algèbre Relationnelle Calcul Relationnel


Sélection σ Elle s’insère avec ∧ et
les opérateurs(au
choix) :
= , !=,< ,>,>=,<=
Projection Π ∃
Union U ∨
Différence - ∧¬
Produit Cartésien × ∧
Tableau 2: Comparqison entre l'algèbre et le calcul relationnel

4. Avantages et inconvénients

Flexibilité :
Les différentes tables à partir desquelles les informations doivent être
liées et extraites peuvent être facilement manipulées par des opérateurs
tels que la projection et la sélection pour donner des informations sous

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

la forme souhaitée dans l’algèbre relationnel ; ce qui n’est pas explicite


avec le calcul relationnel.
Précision :
L’utilisation de l’algèbre relationnelle et du calcul relationnel dans la
manipulation des relations entre les tables garantit qu’il n’y a pas
d’ambiguïté qui pourrait autrement survenir lors de l’établissement des
liens dans une base de données de type réseau complexe. De plus, la
raison d’être du calcul relationnel est la formalisation de l’optimisation
des requêtes consistant à déterminer à partir d’une requêtes la/ les
manière(s) la/les plus efficace(s) de l’exécuter.

Remarque: Le calcul relationnel est supérieur et plus générique que l’algèbre


relationnelle sur trois points:

Tableau 3: Tableau récapitulatif de comparaison ❖ Facilité d’augmentation d’autres


aspects aux formules ou requêtes car il est
non procédurale.
❖ L’optimisation des recherches
❖ Proximité du langage nature

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

APPLICATION

Base de Algèbre Calcul relationnel


comparaison relationnelle
De base Langage procédurale Langage déclaratif

Etats Il indique comment Il indique le résultat que


obtenir le résultat l’on doit obtenir
Ordre Il décrit l’ordre dans Il ne spécifie pas l’ordre
lesquelles opérations des opérations
doivent être effectuées
Domaine Il ne dépend pas du Il peut dépendre du
domaine domaine
En rapport Il est proche d’un Il est proche d’un
langage de langage naturel
programmation
Supposons que nous disposons d’une base de données composée des trois
relations suivantes :

• FREQUENTE (Buveur; Bar)

• SERT (Bar; Biere)

• AIME (Buveur; Biere)

La relation FREQUENTE indique les bars que chaque buveur fréquent.

La relation SERT indique les bières servies dans chaque bar.

Et la relation AIME nous donne les bières préférées de chaque buveur.

Exprimons en (1) calcul relationnel de tuple et en (2) calcul relationnel domaine


les requêtes suivantes :

1. Trouver les bars qui servent une bière que Charles aime

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

Correction:
• Soit s ∈ SERT, a ∈ AIME.
{ s[Bar] | ∃ s, a, SERT ∧ AIME ∧ s.Bierre = a.Bierre ∧
a.Buveur = ‘Charles’ }

• {ba | ∃ bu AIME (Buveur :bu, Bierre :bi) ∧ SERT(Bar :ba, Bierre :


bi) ∧ bu=’Charles’ }

2. Trouver les buveurs qui fréquentent au moins un bar qui sert une
bierre qu’ils aiment.
Correction :

• Soit s ∈ SERT, a ∈ AIME, f ∈ FREQUENTE .


{ a[Buveur] | ∃ s, a, SERT ∧ AIME ∧ FREQUENTE ∧ s.Bierre
= a.Bierre ∧ a.Buveur = f.Buveur s.Bar = f.Bar }

• {bu | ∃ bu AIME(Buveur :bu, Bierre :bi) ∧ SERT(Bar :ba, Bierre :


bi) ∧ FREQUENTE(Buveur :bu, Bar :ba) }

3. Trouver les buveurs qui fréquentent uniquement les bars qui servent
les bières qu'ils aiment (On supposera que chaque buveur aime au
moins une bière et fréquente au moins un bar)

Correction

• Soit s ∈ SERT, a ∈ AIME, f ∈ FREQUENTE.


{ f[Buveur] |∀ f ∃ a ∃ s ( SERT ∧ AIME ∧ FREQUENTE ∧ s.Bierre =
a.Bierre ∧ a.Buveur = f.Buveur s.Bar = f.Bar) }

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

• {bu | ∀ ba, ∀ bu, ∀ bi AIME(Buveur :bu, Bierre :bi) ∧


SERT(Bar :ba, Bierre : bi) ∧ FREQUENTE(Buveur :bu, Bar :ba) }

4. Trouver les buveurs qui ne fréquentent aucun bar qui sert une bière
qu’ils aiment.

Correction :

• Soit s ∈ SERT, a ∈ AIME, f,ft ∈ FREQUENTE .


{ a[Buveur] |ft ∧ ┐ (∃ s, a, SERT ∧ AIME ∧ FREQUENTE ∧
s.Bierre = a.Bierre ∧ a.Buveur = f.Buveur s.Bar = f.Bar ) }

• {bu |FREQUENTE(Buveur :bu,Bar :ba1) ∧ ┐ (∃ bu


AIME(Buveur :bu, Biere :bi) ∧ SERT(Bar :ba, Biere : bi) ∧
FREQUENTE(Buveur :bu, Bar :ba) }

CONCLUSION

Le calcul relationnel est un langage plus abstrait que l’algebre relationnel et est
composé de deux grandes variantes que sont le calcul relationnel à variable tuple
(Tuple Realtionnal Calculus) et le calcul relationnel à variable domaine (Domain
Relationnal Calculus). En Calcul relationnel à variable tuple, on travaille sur des
enregistrements tandis que sur le calcul relationnel à variable domaine, on

UNIVERSITE DE DSCHANG
CALCUL RELATIONEL

travaille sur des attributs de relation. Le calcul relationnel est la logique


mathématique implémentée derrière le langage de requête de bases de données.

UNIVERSITE DE DSCHANG

Vous aimerez peut-être aussi