You are on page 1of 10

Langages pour la manipulation d'une base de

donnes relationnelle
Algbre & Calculs relationnels
Bernard ESPINASSE Langages formels pour les bases de donnes :
Professeur Aix Marseille Universit (AMU)
Ecole Polytechnique Universitaire de Marseille
algbre relationnelle (Codd 70): langages algbriques dfinissant une
collection d'oprations formelles sur les relations
Fvrier 2016 calcul relationnel (Codd 72): langages prdicats (prdicatifs) dfinissant le
rsultat souhait en utilisant des expressions de logique
Algbre relationnelle
Les oprations de lalgbre relationnelle Langages utilisateurs pour les bases de donnes :
Introduction au langage SQL inspirs de lalgbre relationnelle : l'utilisateur spcifie une suite d'oprations
effectuer :
Calculs relationnels
Calcul relationnel de tuples langage SQL
Introduction au langage QUEL inspirs du calcul relationnel : l'utilisateur donne une dfinition du rsultat
Calcul relationnel de domaine cherch :
Introduction au langage QBE
langages QUEL et QBE

Bernard ESPINASSE - Algbre et calculs relationnels 1 Bernard ESPINASSE - Algbre et calculs relationnels 2

Algbre
algbre = ensemble doprateurs de base, formellement dfinis, peuvant tre
combins souhait pour construire des expressions algbriques

1 - Algbre relationnelle algbre ferme : si le rsultat de tout oprateur est du mme type que les
oprandes (ce qui est indispensable pour construire des expressions)

Compltude: toute manipulation pouvant tre souhaite par les utilisateurs devrait
pouvoir tre exprimable par une expression algbrique
Les oprations de lalgbre relationnelle
Algbre relationnelle
Equivalences algbriques
Oprandes : relations tables - du modle relationnel (1NF)
Arbres algbriques
Fermeture : le rsultat de toute opration est une nouvelle table
Exemples de requtes algbriques
Compltude : permet toute opration sauf les fermetures transitives
Introduction au langage SQL
Oprations unaires (1 oprande)
Oprations binaires (2 oprandes)

Bernard ESPINASSE - Algbre et calculs relationnels 3 Bernard ESPINASSE - Algbre et calculs relationnels 4
Les oprations de lalgbre relationnelle Alg bre re lationne lle : S le ction / Re striction
Oprations de base : Opration unaire, la restriction (ou slection) dune table R selon un critre de restriction
Oprations ensemblistes : ou qualification Q (pouvant porter sur un ou plusieurs attributs de R) est une table R de
union mme schma que R dont les tuples sont des tuples de R vrifiant la qualification Q :
intersection
R'
diffrence
Q RESTRICT (R, Q)
produit cartsien Q (R)
Oprations spcifiques : R

slection/restriction Exemple :
CLIENT nocli nom ville
projection 121 BERTRAND PARIS
256 PAGNOL MARSEILLE
542 LANDRY QUEBEC
jointures 652 DUPOND PARIS
renommage Slection des clients o ville = PARIS :
Oprations drives (obtenues par combinaison des oprations de base) :
CLIENT-1 = ville = PARIS (CLIENT) :
division
CLIENT-1 nocli nom ville
121 BERTRAND PARIS
652 DUPOND PARIS
jointure externe
complment
fermeture transitive
Bernard ESPINASSE - Algbre et calculs relationnels 5 Bernard ESPINASSE - Algbre et calculs relationnels 6

A
A ll g
g b
b rr ee rr ee ll aa tt ii o
onnn
n ee ll ll ee : Projection A
A ll g
g b
b rr ee rr ee ll aa tt ii o
onnn
n ee ll ll ee : Produit cartsien
Opration unaire consistant supprimer colonnes (attributs) de la table et en liminant Opration binaire, le produit cartsien de 2 tables R et S de schmas quelconques est
les tuples doubles (si un attribut de la cl primaire a t supprim) une table T ayant pour attributs la concatnation de ceux de R et S et dont les tuples
sont toutes les concatnations d'un tuple de R un tuple de S :
la projection dune table R de schma (a1, a2ap,ap+1an) selon la direction T
(a1, a2ap) est une table S de schma (a1, a2ap) dont les tuples sont ceux de R
T=RXS PRODUCT (R, S)
auxquels sont supprims les attributs nappartenant pas la direction de projection
et en liminant les tuples doubles : X
R S
R' PROJECT (R, a1, a2...ap)
Ai1, Ai2,..., Aip
a1, a2...ap R Exemple :
R VINS n cru mills. deg.
110 corbire 1974 13
Exemple : 120 macon 1976 14
LIGNE_DE_COMMANDE noCommande noArticle date quantit
10 121 A 5/5 10
VITICULTEUR nom ville rgion
10 253 Z 5/5 1
10 712 H 5/5 3 S
12 253 Z 5/5 5 nicolas poully bougogne
13 712 H 6/5 2 martin bordeaux bordelais
VINVIT = VINS X VITICULTEURS
LIGNE = noArticle, date LIGNE_DE_COMMANDE : VINVIT n cru mills. deg. nom ville rgion
LIGNE noArticle date 110 corbire 1974 13 nicolas poully bougogne
121 A 5/5 120 macon 1976 14 martin bordeaux bordelais
253 Z 5/5 110 corbire 1974 13 martin bordeaux bordelais
712 H 5/5 120 macon 1976 14 nicolas poully bougogne
712 H 6/5

Bernard ESPINASSE - Algbre et calculs relationnels 7 Bernard ESPINASSE - Algbre et calculs relationnels 8
A
A ll g
g b
b rr ee rr ee ll aa tt ii o
onnn
n ee ll ll ee : Re nommage A
A ll g
g b
b rr ee rr ee ll aa tt ii o
onnn
n ee ll ll ee : Jointure
Opration unaire, le renommage dune table R permet dobtenir une table R dont les Opration binaire, la jointure de 2 tables R et S est une table T obtenue ainsi :
tuples sont ceux de R et dont le schma est celui de R dans lequel un attribut a t
renomm : 1. raliser le produit cartsien des 2 tables R et S
2. effectuer une opration de slection (ou qualification) entre un attribut de
la table R et un attribut de la table S appels "attributs de jointure"
R = [nom_attribut : nouveau_nom] R 3. effectuer ou non une opration de projection pour rduire le schma de la
table rsultante

le schma de R = ( [n, m] R) est le mme que le schma (R) avec n renomm en m Remarques :

prcondition : le nouveau nom dattribut nest pas dj le nom dun attribut de R 1. elle ralise une concatnation de tables limite des occurrences de tables
prsentant des valeurs communes sur des attributs de jointure
intrt : permet de rsoudre des problmes de compatibilit entre noms dattributs de 2
tables oprandes dune opration binaire : 2. elle matrialise le lien entre plusieurs tables ou la fusion de plusieurs tables

3. la slection-qualification ou "oprateur de jointure" est gnralement l'galit, mais


Exemple : peut tre tendu des oprateurs logiques quelconques.
R2 = [B: C] R1
4. elle peut s'effectuer sur tout attribut, sans prjuger de la pertinence smantique du
rsultat obtenu, seules les jointures en galit construites sur les attributs cls
primaires traduisent des relations (conceptuelles).

Bernard ESPINASSE - Algbre et calculs relationnels 9 Bernard ESPINASSE - Algbre et calculs relationnels 10

A
A ll g
g b
b rr ee rr ee ll aa tt ii o
onnn
n ee ll ll ee : Jointure A
A ll g
g b
b rr ee rr ee ll aa tt ii o
onnn
n ee ll ll ee : Equi-jointure
Opration binaire, la jointure de 2 table R et S selon une condition consiste Exemple dqui-jointure :
rapprocher les tuples de 2 tables R et S afin de former une troisime table T qui contient
VINS n cru millsime deg.
lensemble de tous le tuples obtenus en concatnant un tuple de R et un tuple de S
120 bordeaux 1975 14
vrifiant la condition : 200 macon 1978 12
T 210 macon 1977 12
R S VITICULTEUR nom ville rgion
JOIN (R, S, C)
Condition C nicolas bordeaux bordelais
C bernard saumur loire
R S pierre macon bourgogne

5. la condition de rapprochement est du type :


<attribut1> <oprateur> <attribut2> VINVITI = VINS VITICULTEUR

avec attribut1 appartient R et attribut2 appartient S cru = ville


VINVITI n cru millsime deg. nom ville rgion


6. on distingue selon loprateur : 120 bordeaux 1975 14 nicolas bordeaux bordelais
200 macon 1978 12 pierre macon bourgogne
oprateur = : qui-jointure 210 macon 1977 12 pierre macon bourgogne

oprateur {<, >, , , } : inqui-jointure ou thta-jointure


Bernard ESPINASSE - Algbre et calculs relationnels 11 Bernard ESPINASSE - Algbre et calculs relationnels 12
Jointure naturelle Nonqui-jointure ou Thta-jointure
la jointure naturelle de 2 tables R et S est une table T dont les attributs sont lunion des Linqui-jointure ou thta-jointure de 2 tables R et S selon une condition de
attributs de R et de S et dont les tuples sont obtenus en concatnant un tuple de R et un rapprochement C, ingalit portant entre un attribut de R et un attribut de S est une
tuple de S ayant mmes valeurs pour les attributs de mme nom : table T dont les attributs sont lunion des attributs de R et de S et dont les tuples sont
obtenus en concatnant un tuple de R et un tuple de S qui respectent la condition C :
T Exemple :
JOIN (R, S)
R S VINS Cru Millsime Qualit LIEU Cru Rgion QualMoy
R S Volnay 1983 A Volnay Bourgogne A
Volnay 1979 B Chablis Bourgogne A
Exemple : Chablis 1983 A Chablis Californie B
Julienas 1986 C
CLIENT noCli nom COMMANDE noCde noCli date
121 DUVAL 10 121 5/5
253 LEROY 11 260 5/5
260 LANDRY 12 121 5/5 VINLIEU = VINS [QualitQualMoy] LIEU = JOIN (VINS, LIEU, QualitQualMoy)
293 SANCHEZ 15 253 6/5
VINLIEU Cru Millsime Qualit Cru Rgion QualMoy
Jointure naturelle de CLIENT et COMMANDE (noCli de CLIENT = noCli de COMMANDE) :
Volnay 1983 A Chablis Californie B
Volnay 1979 B Volnay Bourgogne A
Volnay 1979 B Chablis Bourgogne A
CLICDE = CLIENT COMMANDE = JOIN (CLIENT, COMMANDE) Volnay 1983 A Chablis Californie B
CLICDE noCli nom noCde date Julienas 1986 C Volnay Bourgogne A
121 DUVAL 10 5/5 Julienas 1986 C Chablis Bourgogne A
253 LEROY 15 6/5 Julienas 1986 C Chablis Californie B
121 DUVAL 12 5/5
260 LANDRY 11 5/5

Bernard ESPINASSE - Algbre et calculs relationnels 13 Bernard ESPINASSE - Algbre et calculs relationnels 14

A
A ll g
g b
b rr ee rr ee ll aa tt ii o
onnn
n ee ll ll ee : Jointure Externe A
A ll g
g b
b rr ee rr ee ll aa tt ii o
onnn
n ee ll ll ee : Jointure Externe
la jointure externe de 2 tables R et S est une table T obtenue par jointure de R et S et Exemple :
ajout des tuples de R et de S ne participant pas la jointure avec des valeurs nulles VINS Cru Millsime Qualit
pour les attributs de lautre table : Volnay 1983 A
Volnay 1979 B
T Julienas 1986 C

EXT-JOIN (R, S) LIEU Cru Rgion QualMoy


Volnay Bourgogne A
R S
R S Chablis Bourgogne A
Chablis Californie B
Intrt : composer des vues sans perte dinformation

On distingue :
VINS-LIEU = VINS LIEU = EXT-JOIN (VINS, LIEU) :
la jointure externe droite (REXT-JOINT ): elle garde seulement les tuples
sans correspondant de la table de droite VINS-LIEU Cru Millsime Qualit Rgion QualMoy
Volnay 1983 A Bourgogne A
Volnay 1979 B Bourgogne A
la jointure externe gauche (LEXT-JOINT ): elle garde seulement les Chablis - - Bourgogne A
tuples sans correspondant de la table de gauche Chablis - - Californie B
Julienas 1986 C - -

Bernard ESPINASSE - Algbre et calculs relationnels 15 Bernard ESPINASSE - Algbre et calculs relationnels 16
A
A ll g
g b
b rr ee rr ee ll aa tt ii o
onnn
n ee ll ll ee -- o
opp rr aa tt ii o
onn ss ee n
n ss ee m
mbb ll ii ss tt ee ss :: Union, A
A ll g
g b
b rr ee rr ee ll aa tt ii o
onnn
n ee ll ll ee : Division
Intersection et Diffrence le quotient de la division d'une table D (a1, a2ap,ap+1an) par la sous table d(ap
Oprations binaires (tables = ensembles de tuples) : an) est la table Q(a1, a2ap) dont les tuples sont ceux qui concatns tout tuple de d
donnent un tuple de D :
correspondant aux oprations habituelles de la thorie des ensembles
ne peuvent tre appliques que sur des tables de mme schma et donnent
une nouvelle table de mme schma : Q
union intersection diffrence Dd DIVISION (D, d)
R1 R1 R1

D d
R2 R2 R2

S S S
Intrts de la division :
U
U
-
elle permet de rechercher dans une table les sous-tables qui sont compltes par
R1 R2 R1 R2 R1 R2 tous ceux dune autre table

R1 R2 R1 R2 R1 - R2 elle permet ainsi de rpondre des requtes de la forme quel que soit x,
UNION (R1, R2) INTERSECT (R1, R2) MINUS (R1, R2) trouver y
Remarque : lintersection est une opration drive car R1 R2 = R1 (R1 R2)

Bernard ESPINASSE - Algbre et calculs relationnels 17 Bernard ESPINASSE - Algbre et calculs relationnels 18

A : Division Equivalences algbriques


A ll g
g b
b rr ee rr ee ll aa tt ii o
onnn
n ee ll ll ee

Exemple de division : Quelques quivalences :


PIECE
tuple 1
nom
clou
couleur
rouge
poids
14
ville
Londres Commutativit de la slection : e1 (e2 (T)) = e2 (e1 (T))
tuple 2 boulon vert 17 Paris
tuple 3 vis bleu 12 Rome Commutativits des intersections : RS=SR
tuple 4 vis rouge 14 Londres
tuple 5 rivet bleu 12 Paris Commutativit de la jointure : R S=S R
tuple 6 clou bleu 12 Rome
Eclatement d'une slection conjonctive : e1 et e2 (T) = e1 (e2 (T))
liste1 (liste2 (T)) = liste1 (T)
NATURE nom
tuple 1 vis Elimination des projections en cascades :
tuple 2 clou
Associativit de la jointure : R (S T) = (R S) T

Division de la table PIECE par la table NATURE :
PIECE_NATURE = PIECE NATURE : Do formulations quivalentes
PIECE_NATURE couleur poids ville dune mme requte :
tuple 1 bleu 12 Rome
tuple 2 rouge 14 Londres

Les tuples de la table PIECE_NATURE, concatns chacun des tuples de la table liste1 (e1 (R S T V )) ! liste1 (e1 (((R S) T) V))
NATURE donnent un tuple de la table PIECE.
! liste1 (e1 (((R T) S) V))

Bernard ESPINASSE - Algbre et calculs relationnels 19 Bernard ESPINASSE - Algbre et calculs relationnels 20
Exemples de requtes algbriques Conventions dexpression des oprateurs algbriques
Soit la base de donnes suivante :

JOURNAL (code-j, titre, prix, type, priodicit) projection a1, a2...ap R union
R S
DEPOT (no-dpt, nom-dpt, adresse)
LIVRAISON (no-dpt, code-j, date-liv, quantit-livre)

slection- intersection
Requtes algbriques : R S
restriction
Q (R)
Quel est le prix des journaux ?

[prix] JOURNAL
Informations sur les journaux hebdomadaires ? jointure diffrence T=RS
R S
[priodicit = hebdomadaire] JOURNAL
Quels sont les codes des journaux livrs Marseille ?
produit T=RXS division Q=Dd
[code-j] ( [adresse = Marseille]DEPOT LIVRAISON) cartsien

renomage de la colonne a2 en a2 : R = [a2 : a2 ] R

Bernard ESPINASSE - Algbre et calculs relationnels 21 Bernard ESPINASSE - Algbre et calculs relationnels 22

Arbre algbrique Introduction au langage SQL (1)


exprimer une suite d'opration d'algbre relationnelle associe une requte: acronyme de Structured Query Langage
driv de SEQUEL, interface de consultation pour System R (Astr IBM 81)
Requte : ( Q7 ( Q5 ( Q1 (R) [Q3] Q2 (S) )) [Q6] Z)
W
standard ANSI en 86, standard ISO en 87, amlior en 1989 (SQL 1)
projection norme la plus courante (ANSI/ISO) en 92 (SQL2)
Q7

nouvelle norme 1999 (SQL3)


V
La structure de base d'une expression SQL comporte 3 clauses :
jointure
Q6
U SELECT: projection de l'algbre relationnelle dsigne la liste des attributs
Z
dsirs
projection Q5
FROM: dsigne la liste des tables considrer
T WHERE: dsigne le prdicat vrifier sur des attributs de table de la clause From
jointure
Q3
slection
S'
slection SELECT a1, a2,, an FROM R1, R2 Rm WHERE P
R'
Q1 Q2 Soit :
R S
a1, a2,..., an P (R1 X R2 XX Rm)

Bernard ESPINASSE - Algbre et calculs relationnels 23 Bernard ESPINASSE - Algbre et calculs relationnels 24
BD relationnelle fourniture Introduction au langage SQL (2)
PRODUIT (npro: no produit, nomp: nom produit, qtes: qt stock, couleur : couleur produit) PRODUIT (npro, nomp, qtes, couleur)
VENTE (nvente, nomc, nprv, qtev)
VENTE (nvente: no vente, nomc: nom client, nprv: no produit vendu, qtev: qt vendue) ACHAT (nachat, npra, qtea, nomf)
ACHAT (nachat: no achat, npra : no produit achet, qtea: qt achet, nomf: nom fournisseur)
" projection

PRODUIT npro nompro qtes. couleur SELECT npro, couleur FROM PRODUIT (avec doubles)
1 chaise 60 rouge
2 bureau 18 gris
3 armoire 35 blanche SELECT UNIQUE npro, couleur FROM PRODUIT (sans doubles)
4 lampe 51 jaune
5 fauteuil 31 rouge
" Slection
6 chaise 20 verte
7 lampe 3 rouge
SELECT * FROM PRODUIT WHERE couleur = rouge AND qtes > 35
VENTE nvente nomc nprv qtev ACHAT nachat date npra qtea nomf
10 Duval 1 10 10 4/9/02 5 10 Ribart SELECT npro, qtes FROM PRODUIT WHERE couleur = rouge AND qtes >
11 Landry 5 20 11 5/9/02 4 20 Tellier 35
12 Smith 4 10 12 8/9/02 3 10 Dupond
13 Duval 3 15 13 12/9/02 2 15 Dupond SELECT npro, qtes FROM PRODUIT WHERE couleur = rouge AND qtes >
15 Durant 1 20 15 16/9/02 1 20 Buvard
35 ORDER BY qtes ASC, couleur DESC

Bernard ESPINASSE - Algbre et calculs relationnels 25 Bernard ESPINASSE - Algbre et calculs relationnels 26

Introduction au langage SQL (3) Introduction au langage SQL (4)


" produit cartsien " connecteurs logiques dans SQL : AND, OR, NOT, IN, NOT IN
SELECT * FROM PRODUIT, VENTE
SELECT nompro FROM PRODUIT WHERE npro NOT IN
" jointures
SELECT * FROM PRODUIT, VENTE WHERE PRODUIT.npro = VENTE.nprv (SELECT nprv FROM VENTE WHERE qtev > 10 AND nomc = Duval)
SELECT nompro FROM PRODUITS WHERE npro IN
(SELECT nprv FROM VENTE) " fonctions de calculs : COUNT: Nb de valeurs ; SUM : somme de valeurs ; AVG :
" union moyenne de valeurs ; MAX : valeur maxi ; MIN : valeur mini
SELECT nprv FROM VENTE WHERE qtev > 15 UNION
SELECT nprv FROM VENTE WHERE nomc = Duval SELECT AVG (qtes) FROM PRODUIT WHERE couleur = rouge
sur une mme table ou requtes sur tables diffrentes avec mme select !
" insertion de tuples :
" intersection
SELECT nprv FROM VENTE WHERE qtev > 15 INTERSECT INSERT INTO VENTES VALUES couleur = "rouge" AND qtes < 5
SELECT nopro FROM PRODUIT WHERE nompro = chaise
sur une mme table ou requtes sur tables diffrentes avec mme select !
" suppression et modification :
" diffrence DELETE PRODUIT WHERE couleur = "rouge" AND qtes < 5
SELECT nopro FROM PRODUIT WHERE qtes > 50 MINUS
SELECT nopro FROM PRODUIT WHERE couleur = rouge UPDATE VENTE SET Qtev = 0 WHERE nomc = "Bergman")
sur une mme table ou requtes sur tables diffrentes avec mme select !

Bernard ESPINASSE - Algbre et calculs relationnels 27 Bernard ESPINASSE - Algbre et calculs relationnels 28
Introduction au calcul Re lationne l
Algbre relationnelle :
langage procdural permettant d'expliciter une squence d'oprations qui
conduiront un rsultat dsir.

2 - Calculs relationnels Calcul relationnel :


langage non-procdural permettant d'expliciter le rsultat que l'on dsire sans
Rappel sur le calcul des prdicats du 1 ordre spcifier la squence des oprations effectuer.
Calcul relationnel de tuples 2 types de calcul relationnel:
Introduction au langage QUEL " Calcul relationnel de Tuples :
Calcul relationnel de domaine variables = tuples

Introduction au langage QBE langage QUEL (SGBD INGRES)


" Calcul relationnel de domaines :
variables = valeurs prises sur un domaine

langage QBE

Bernard ESPINASSE - Algbre et calculs relationnels 29 Bernard ESPINASSE - Algbre et calculs relationnels 30

Rappe l sur le calcul de s pr dicats du 1 ordre Calcul relationnel de Tuples


prdicats du 1ordre = systme formel de la logique langage d'interrogation de donnes formel permettant d'exprimer des questions partir
les principaux langages de manipulation de donnes relationnels permettant le calcul de formules dont les variables sont interprtes comme variant sur les tuples d'une table
relationnel sont bass sur cette logique Base de donnes exemple fourniture :
Syntaxe : PRODUIT (npro, nomp, qtes, couleur)
() parenthses VENTE (nvente, nomc, nprv, qtev)
implication ACHAT (nachat, npra, qtea, nomf)
non Exemple de requtes en calcul relationnel de tuples :
a,b constante
{P.NOMP, P.COULEUR / PRODUIT (P)}
x,y variables
P,Q predicat argument liste des noms et des couleurs de tous les produits
f,g,h fonction argument
{P.NOMP, P.QTES / PRODUIT (P) (P.COULEUR = "rouge")}
Exemple de formule bien formes (NILSSON 71) : nom et quantits en stock des produits de couleur rouge
P (a, g (a,b,a))
{P.NOMP, A.NOMF, V.NOMC / PRODUIT (P) ACHAT (A) VENTE (V) (P.QTES >
P (a,b) (Q(c))
100) (P.COULEUR = "rouge") (P.NPRO = V.NPRV) (P.NPRO = A.NPRA) }
P (a) Q (f(a))
donner pour chaque produit en stock en quantit suprieure 100 et de couleur
en base de donnes on se sert en gnral de : rouge, les triplets nom de fournisseur ayant vendu ce produit, et nom de client ayant
, , et () , ou (v), achet ce produit.

Bernard ESPINASSE - Algbre et calculs relationnels 31 Bernard ESPINASSE - Algbre et calculs relationnels 32
Introduction au langage QUEL (Ingres) Langage QUEL (Ingres)
langage QUEL (Zook 77), Ingres (Stonebraker 76) Recherche en QUEL :
driv du calcul relationnel de tuples RETRIEVE [[INTO] nom_table] (liste_rsultat)[WHERE qualification]
pas de quantificateur (, ) explicites Ex: RANGE p IS produit, a IS chat, v IS vente)
+ fonctions de calcul (moyenne, compteur, somme, min, max, ...) RETRIEVE (p.nomp, p.couleur)
+ fonctions de mises jour sophistiques RETRIEVE (p.nomp, p.qts) WHERE p.couleur="rouge"
vues RETRIEVE (p.nomp, a.nomf) WHERE p.couleur="rouge"
... RETRIEVE (p.nomp, a.nomf, v.nomc) WHERE (p.qtes>100)
dclaration des variables dans QUEL : (p.couleur="rouge") (p.npro=v.nprv) (p.npro=a.npra)
sparation de la dfinition des variables de l'expression de la requte : Tri : RETRIEVE ... WHERE ... SORT BY ...
RANGE OF variable IS nom_de_relation RANGE e IS employ, d IS dpartement
RANGE OF p IS produit ; RANGE OF a, b, c IS r1, r2, r3 RETRIEVE (e.nom, e.salaire, e.num_departement) WHERE
e.salaire>300000 SORT BY nom
structure de base d'une expression QUEL :
Mises jour en QUEL : REPLACE, APPEND TO, DELETE
RANGE OF t IS r : o t = variable de tuple dont la valorisation est
REPLACE employ(salaire=180000) [WHERE employ.nom="Durant"]
restreinte aux tuples de la table r
APPEND TO dpartement (dname="ventes", tage=3, batiment="A",
RETRIEVE : (extraire) quivalent la clause SELECT de SQL division="D1")
WHERE : prdicat suivant lequel s'effectue l'extraction DELETE d WHERE d.nom="ventes"

Bernard ESPINASSE - Algbre et calculs relationnels 33 Bernard ESPINASSE - Algbre et calculs relationnels 34

Calcul relationnel de domaine le langage QBE


langage d'interrogation de donnes formel permettant d'exprimer des questions partir QBE : Query By Example (Zloff 77, IBM Yorktown Heights 78
de formules bien formes dont chaque variable est interprte comme variant sur le
domaine d'un attribut d'une table mise en oeuvre visuelle (tableaux affichs) du calcul relationnel de domaine : QMF
Base de donnes exemple fourniture : (SQL/DS et DB2)
PRODUIT (npro, nomp, qtes, couleur) ide de base : faire formuler une requte l'utilisateur par un exemple d'une rponse
VENTE (nvente, nomc, nprv, qtev) possible la question :
ACHAT (nachat, npra, qtea, nomf)
1- affichage de schmas relationnels vides l'cran
Exemple de requtes en calcul relationnel de domaines :
2- expression des requtes par remplissage des schmas
{x, y / PRODUIT(nomp:x, couleur:y)}
PRODUIT npro nomp qtes couleur
liste des noms et des couleurs de tous les produits
P. P. rouge
{x, y / PRODUIT(nomp: x, qtes: y, couleur: "rouge")}
nom et quantits en stock des produits de couleur rouge
nom et quantits en stock des produits de couleur rouge
{x, y, z / PRODUIT(npro: t, nom: x, qtes: u, couleur: "rouge") ACHAT(npra: t, nomf: y) conventions :
VENTE(nprv: t, nomc: z) (u>100)} P. : attributs projeter
constantes tapres directement, prcdes d'un comparateur ((= par dfaut), >, <, , , , ..)
donner pour chaque produit en stock en quantit suprieure 100 et de couleur
variables : soulignes
rouge, les triplets nom de fournisseur ayant vendu ce produit, et nom de client ayant
: all
achet ce produit.
(ou) : 2 lignes superposes (formules normale disjonctives)

Bernard ESPINASSE - Algbre et calculs relationnels 35 Bernard ESPINASSE - Algbre et calculs relationnels 36
le langage QBE le langage QBE
Requtes multi-tables : fermeture transitive de tables :
noms des clients ayant achet au moins un produit de couleur verte ? NOMENCLATURE COMPOSE COMPOSANT
voiture chassis
PRODUIT npro nomp qtes couleur
voiture moteur
X verte voiture batterie
moteur piston
moteur bielle
VENTE nvente nomc nprv qtes
moteur carter
P. X piston boulon
piston crou
avec non limination des doublons : ALL
VENTE nvente nomc nprv qtes
recherche des composants de 2 niveau
NOMENCLATURE COMPOSE COMPOSANT
P.ALL.X
voiture x
Tri (DO : descendant; AO: ascendant) : x P. y
PRODUIT npro nomp qtes couleur
recherche des composants de 3 niveau ( 3L = level 3):
P.DO.X >100 NOMENCLATURE COMPOSE COMPOSANT

voiture P. y (3L)

Bernard ESPINASSE - Algbre et calculs relationnels 37 Bernard ESPINASSE - Algbre et calculs relationnels 38

Le langage QBE: Mises jour


Insertions (Insert):
PRODUIT npro nomp qtes couleur

I. 8 tableau 100 verte


insertion du tuple <8, tableau, 100, verte>
Mise jour (Update) :
PRODUIT npro nomp qtes couleur

U. x y rouge
x y+100
mise jour des quantits en stock des produits rouges
Suppression (Delete) :
PRODUIT npro nomp qtes couleur

D. rouge
suppression des produits de couleur rouge
_______

Bernard ESPINASSE - Algbre et calculs relationnels 39

You might also like