Vous êtes sur la page 1sur 35

Chapitre 3:

Langages Relationnels: Algébrique , SQL


et Calcul Relationnel

3ème Année Ingénieur

Semestre: S5

Ecole Supérieure
Département en Informatique
d’Informatique
Plan
I. Langage Algébrique
- Concepts de Manipulation
- Opérateurs Algébrique

II. Introduction au Langage SQL


III. Calculs Relationnels
Concepts de manipulation

 DML (langage de manipulation des données)


expressions (requêtes)
pour extraire, modifier, effacer, insérer des tuples

 Manipulation ensembliste

Algèbre relationnelle procédurale

Calcul relationnel déclaratif

SQL: standard pour les SGBD relationnelle


Expressions SQL (calcul) -> Plan dʼexécution (algèbre)
Concepts de manipulation: lʼalgèbre
 Un ensemble dʼopérations formelles (algèbre relationnelle), permettant
dʼexprimer les requêtes sous forme algébrique

Ces opérations sont utiles pour lʼoptimisation des requêtes

Opérations algébriques :

Unaires : O(Relation)  Relation


Binaires : Relation X Relation  Relation
 Opérations ensemblistes
UNION notée ∪
INTERSECTION notée ∩
DIFFERENCE notée —
Algèbre relationnelle

 Cinq opérateurs de base :

Projection π
Restriction σ
Produit cartésien X
Deux opérateurs ensemblistes :
Union ∪
Intersection ∩

 + opérateur de renommage ρ

 + opérateurs composés :
 Jointure
Division ÷
 Différence -
Projection
 Opération unaire consistant à supprimer colonnes (attributs) de la table
et en éliminant les tuples doubles (si un attribut de la clé primaire a été
supprimé)

 la projection d’une table R de schéma (X1, X2…Xp, Xp+1…Xn) selon la


direction (X1, X2…Xp) est une table S de schéma (X1, X2…Xp) dont les
tuples sont ceux de R auxquels sont supprimés les attributs n’appartenant
pas à la direction de projection et en éliminant les tuples doubles :

R’

X1, X2…Xp π X1, X2, … Xp


R

R
Ligne Commande
ID-Comde ID-Prod PU Date Quantité
1001 C14 200 01/02 1000
1001 C20 148 01/02 2000
1001 C34 350 01/02 500
1002 C14 200 15/03 2000
1002 C20 148 15/03 500
1003 C34 350 05/04 1000
1003 C50 444 05/04 500

ID-Prod PU
C14 200

Ligne Produit =
π ID-Prod, PU
LigneCommande
C20
C34
148
350
C14 200
C20 148
C34 350
C50 444
Sélection/Restriction
 Opération unaire, la restriction (ou sélection) d’une table R selon un
critère de restriction ou qualification Q (pouvant porter sur un ou plusieurs
attributs de R) est une table R’ de même schéma que R dont les tuples sont
des tuples de R vérifiant la qualification Q

 Obtention des tuples de R satisfaisant un critère Q.


 Opérateur unaire, notée :
R’

Q
σQ(R).
R

Q est le critère de qualification de la forme :


Ai θ Valeur, θ ∈ { =, <, >=, >, <=, ≠}
 Il est possible de réaliser des "ou" (union) et des "et"
(intersection) de critères simples
Exemple:

Etudiant

ID-Etud Nom Anné-N Ville Cycle Niveau


0101 Mohamed 1995 SBA prep 1
0053 Ahmed 1996 Oran sup 1
0201 Ali 1996 Alger sup 2
0202 Said 1995 Annaba sup 2
0303 Kadour 1994 SBA sup 3
0304 Abdelkader 1994 Constantine sup 3

Sélection des étudiants du 3ème cycle supérieur:

Etudiant 5 = σcycle=sup et niveau=3 (Etudiant) :

ID-Etud Nom Anné-N Ville Cycle Niveau


0303 Kadour 1994 SBA sup 3
0304 Abdelkader 1994 Constantine sup 3
Renommage ρ

• Changer le nom d’attribut, sans changer le domaine ou la


sémantique. S(Y) = b/aR(X)
(1) Y = X où l’attribut a est nommé b
(2) S(Y) = R(X)

Exemple :

S = PI/PIECER(X) PI FOURNISS
R
PIECE FOURNISS
écrou Ali
écrou Ali
écrou Sofiane
écrou Sofiane
boulon Omar
boulon Omar
Produit Cartésien
 Opération binaire, le produit cartésien de 2 tables R et S de schémas
quelconques est une table T ayant pour attributs la concaténation de ceux
de R et S et dont les tuples sont toutes les concaténations d'un tuple de R à
un tuple de S.

 Pour des relations, qui sont des ensembles de tuples, la paire créée a
partir d'un tuple tR = (a1; : : : ; an) de R et d'un tuple tS = (b1; : : : ; bp) de
S est le tuple (a1; : : : ; an; b1; : : : ; bp) (on choisit arbitrairement de placer
d'abord les éléments de tR).
Exemple
Jointure naturelle

 La jointure naturelle de deux relations R et S consiste a ne sélectionner


dans le produit cartésien de R et de S que les tuples tels que les attributs
communs (portent le même nom) à R et S aient la même valeur.

 La jointure naturelle de 2 tables R et S est une table T dont les attributs


sont l’union des attributs de R et de S et dont les tuples sont obtenus en
concaténant un tuple de R et un tuple de S ayant mêmes valeurs pour les
attributs de même nom :
Exemple :

Considérons les deux relations suivantes :


Jointure

 La jointure naturelle nous permet de « fusionner » deux relations


possédant des attributs communs. Il peut être également intéresser de
grouper deux relations n'ayant pas d'attributs communs en utilisant une
propriété a vérifier par les tuples. Pour cela, on utilise une θ-jointure.

 La jointure (ou θ-Jointure) est une Opération binaire, la jointure de 2


table R et S selon une condition θ consiste à rapprocher les tuples de 2
tables R et S afin de former une troisième table T qui contient l’ensemble
de tous le tuples obtenus en concaténant un tuple de R et un tuple de S
vérifiant la condition θ.

 La condition de rapprochement θ est du type :


<attribut1> <opérateur> <attribut2>
avec attribut1 appartient à R et attribut2 appartient à S
 On distingue selon l’opérateur :
•opérateur = : équi-jointure
• opérateur {<, >, ≤, ≥, ≠} : inéqui-jointure ou théta-jointure
Exemple de Equi-Jointure

R PIECE FOURNISS R ⋈PI=PIECE S


écrou Ali
PI FOURNISS PIECE PROJET
écrou Sofiane
écrou Ali écrou a
boulon Omar
écrou Ali écrou b
écrou Sofiane écrou a
écrou Sofiane écrou b
S PI PROJET
écrou a boulon Omar boulon a

écrou b
boulon a
Exemple de Inéqui-jointure

R ⋈B≤D S :
R A B C D E A B C D E
S
9 8 7 3 2 1 3 4
3 4
6 5 4 3 2 1 5 6
5 6
3 2 1 6 5 4 5 6
Opérations Ensemblistes: Union, Intersection et
Différence
 Opérations binaires (tables = ensembles de tuples) :
• Correspondant aux opérations habituelles de la théorie des
ensembles
• Ne peuvent être appliquées que sur des tables de même schéma
et donnent une nouvelle table de même schéma :
DIVISION
 Le résultat est une relation dont les attributs sont ces qui sont unique en
D et les tuples sont ce pour lesquels tous les combinaisons avec les tuples
de d sont présents en R.

 le quotient de la division d'une table D (a1, a2…ap,ap+1…an) par la


sous table d(ap …an) est la table Q(a1, a2…ap-1) dont les tuples sont ceux
qui concaténés à tout tuple de d donnent un tuple de D :

 Intérêts de la division :
• Elle permet de rechercher dans une table les sous-tables qui sont complétées
par tous ceux d’une autre table.
• Elle permet ainsi de répondre à des requêtes de la forme « quel que soit x,
trouver y »
Exemple :

R PIECE FOURNISS
vis Ali
boulon Omar
écrou Sofiane
boulon Ali
vis omar FOURNISS
RS Ali
S Omar
PIECE
vis
boulon
Exemple de Requêtes Algébrique :

Soit le Schéma relationnel de la BDD suivante:

EMPLOYE(Id-Emp, Nom, Age, Salaire)


SUPERVISEUR(Id-chef, Employe)

1. Trouvez les numéros, les noms et l'âge des employés qui ont un salaire
au-dessus de 40 mille.

 Nid-Emp,Nom,Age (Salaire40(EMPLOYE))

2. Trouver les chefs qui ont des subordonnés qui ont grand salaires ( au
dessus de 40)

 id-Chef(SUPRVISEUREmploye=id-Emp(Salaire40(EMPLOYE)))
II. Introduction au SQL
 Acronyme de Structured Query Langage:
• dérivé de SEQUEL, interface de consultation pour System R (Astr IBM 81)
• standard ANSI en 86, standard ISO en 87, amélioré en 1989 (SQL 1)
• norme la plus courante (ANSI/ISO) en 92 (SQL2)
• nouvelle norme 1999 (SQL3)

 La structure de base d'une expression SQL comporte 3 clauses :


• SELECT: projection de l'algèbre relationnelle désigne la liste des attributs
désirés
• FROM: désigne la liste des tables à considérer
• WHERE: désigne le prédicat à vérifier sur des attributs de table de la
clause From

SELECT a1, a2,…, an FROM R1, R2 … Rm WHERE P

Soit :

πa1, a2,..., an σP (R1 X R2 X…X Rm)


II. Introduction au SQL(1)
Soit le schéma relationnel de la BDD suivante:
PRODUIT (npro, nomp, qtes, couleur)
VENTE (nvente, nomc, nprv, qtev)
ACHAT (nachat, npra, qtea, nomf)

 Projection:
• SELECT npro, couleur FROM PRODUIT (avec doubles)
• SELECT UNIQUE npro, couleur FROM PRODUIT (sans doubles)

 Sélection:
• SELECT * FROM PRODUIT WHERE couleur = rouge AND qtes > 35
• SELECT npro, qtes FROM PRODUIT WHERE couleur = rouge AND qtes >35
• SELECT npro, qtes FROM PRODUIT WHERE couleur = rouge AND qtes >
35 ORDER BY qtes ASC, couleur DESC
II. Introduction au SQL(2)
 Produit cartésien:
SELECT * FROM PRODUIT, VENTE
 Jointures:
SELECT * FROM PRODUIT, VENTE WHERE PRODUIT.npro = VENTE.nprv
SELECT nompro FROM PRODUITS WHERE npro IN
(SELECT nprv FROM VENTE)
 Union:
SELECT nprv FROM VENTE WHERE qtev > 15 UNION
SELECT nprv FROM VENTE WHERE nomc = Cvital
sur une même table ou requêtes sur tables différentes avec même select
 Intersection:
SELECT nprv FROM VENTE WHERE qtev > 15 INTERSECT
SELECT nopro FROM PRODUIT WHERE nompro = chaise
sur une même table ou requêtes sur tables différentes avec même select
 Différence:
SELECT nopro FROM PRODUIT WHERE qtes > 50 MINUS
SELECT nopro FROM PRODUIT WHERE couleur = rouge
sur une même table ou requêtes sur tables différentes avec même select
II. Introduction au SQL(3)
 Connecteurs logiques dans SQL : AND, OR, NOT, IN, NOT IN
SELECT nompro FROM PRODUIT WHERE npro NOT IN
(SELECT nprv FROM VENTE WHERE qtev > 10 AND nomc = CVital)

 Fonctions de calculs : COUNT: Nb de valeurs ; SUM : somme de valeurs ;


AVG : moyenne de valeurs ; MAX : valeur maxi ; MIN : valeur mini
SELECT AVG (qtes) FROM PRODUIT WHERE couleur = rouge

 Insertion de tuples :
INSERT INTO VENTES VALUES couleur = "rouge" AND qtes < 5

Suppression et modification :
DELETE PRODUIT WHERE couleur = "rouge" AND qtes < 5
UPDATE VENTE SET Qtev = 0 WHERE nomc = « Zitouni")
III. Calculs Relationnels
 Différentes langages ont été proposé pour manipuler des données
relationnel;

 Deux modèle principaux: algébrique et prédicatif;

 L’algèbre relationnelle permet de spécifier quelles sont les opérations à


exécuter pour calculer le résultat de la requête.

 Exemple:
π [code-j] ( σ [adresse = « SBA »] Dépôt Livraison)

 SQL est une version orientée utilisateur de l’algèbre relationnelle


SELECT CODE-J FROM DEPOT, LIVRAISON
WHERE DEPOT.NO-DEPOT = LIVRAISON.NO
Langage Prédicatif

 Un langage prédicatif permet de ne spécifier que le résultat cherché (pas


comment le calculer)
spécification des prédicats qui doivent être vérifiés par les données pour
former le résultat.

 Ces langages sont dits prédicatifs car il sont basés sur le calcul de prédicats
(logique 1er ordre)

 Un langage prédicatif est donc plus simple qu’une algèbre

 Il existe deux types de langages prédicatifs Relationnels :


 Calcul de tuples : les variables dans les expressions logiques
portent sur les tuples des relations (QUEL) (SGBD INGRES) :
variables = tuples , EXAMPLE: x ∈ Etudiant
 Calcul de domaines : les variables dans les expressions
logiques portent sur les valeurs des attributs des tuples (QBE):
variables = valeurs prises sur un domaine
EXAMPLE: x ∈ Etudiant.nom
Notions : Logique prédicative de 1ère Ordre

 Prédicats du 1°ordre = système formel de la logique.


 les principaux langages de manipulation de données relationnels permettant le
calcul relationnel sont basés sur cette logique.

Syntaxe :
() parenthèses
⊃ implication
¬ non
a,b constante
x,y variables
P,Q predicat à argument
f,g,h fonction à argument

Exemple de formule bien formées :


¬P (a, g (a,b,a))
P (a,b) ⊃ (¬Q(c))
¬P (a) ⊃ Q (f(a))

En base de données on se sert en général de : ∀, ∃, et (∧), ou (v), ¬


Calcul Relationnel de Tuples

 Langage d'interrogation de données formel permettant d'exprimer des


questions à partir de formules dont les variables sont interprétées comme
variant sur les tuples d'une table.
Base de données exemple « fourniture »:
PRODUIT (npro, nomp, qtes, couleur)
VENTE (nvente, nomc, nprv, qtev)
ACHAT (nachat, npra, qtea, nomf)
Exemple de requêtes en calcul relationnel de tuples :
P  Produit
 {P.NOMP, P.COULEUR / PRODUIT (P)}
liste des noms et des couleurs de tous les produits

Spécification du format du résultat (Déclaration de variable) : P.NOMP, P.COULEUR

Prédicat à satisfaire par les tuples désignés par P: PRODUIT (P)


 [nomp, couleur] Produit
 {P.NOMP, P.QTES / PRODUIT (P) (P.COULEUR = "rouge")}
nom et quantités en stock des produits de couleur rouge

 {P.NOMP, A.NOMF, V.NOMC / PRODUIT (P) ∧ ACHAT (A) ∧ VENTE (V)


(P.QTES >100) ∧ (P.COULEUR = "rouge") ∧ (P.NPRO = V.NPRV) ∧
(P.NPRO = A.NPRA) }
donner pour chaque produit en stock en quantité supérieure à
100 et de couleur rouge, les triplets nom de fournisseur ayant
vendu ce produit, et nom de client ayant acheté ce produit.
Quantificateur "il existe"

Etudiant (n°, nom, prénom, année)


Inscription (n°ét, nomC, note1, note2)

Requête : nom, prénom des étudiants ayant réussi brillamment un cours:

e  Etudiant, i  Inscription

{ e.nom, e.prénom |  i (e.no = i.noét  i.note1 = 15  i.note2 = 15) }


Quantificateur "pour tous"

Requête : nom, prénom des étudiants ayant réussi brillamment tous les cours

e Etudiant , i  Inscription
{ e.nom, e.prénom | (e.no = i.noét  (i.note1 = 15  i.note2 = 15)) }
Calcul Relationnel de Domaines
 Langage d'interrogation de données formel permettant d'exprimer des
questions à partir de formules bien formées dont chaque variable est
interprétée comme variant sur le domaine d'un attribut d'une table.
Base de données exemple « fourniture »:
PRODUIT (npro, nomp, qtes, couleur)
VENTE (nvente, nomc, nprv, qtev)
ACHAT (nachat, npra, qtea, nomf)
Exemple de requêtes en calcul relationnel de domaines :
 {x, y / PRODUIT(nomp:x, couleur:y)}
liste des noms et des couleurs de tous les produits
 {x, y / PRODUIT(nomp: x, qtes: y, couleur: "rouge")}
nom et quantités en stock des produits de couleur rouge
 {x, y, z / PRODUIT(npro: t, nom: x, qtes: u, couleur: "rouge") ∧
ACHAT(npra: t, nomf: y) ∧VENTE(nprv: t, nomc: z) ∧ (u>100)}
donner pour chaque produit en stock en quantité supérieure à 100 et
de couleur rouge, les triplets nom de fournisseur ayant vendu ce produit,
et nom de client ayant acheté ce produit.
Equivalence algèbre / calcul

 Toute expression d'algèbre peut s'écrire en calcul


 chaque opérateur peut se traduire

 Toute requête de calcul peut s'écrire en algèbre :


R (A, B, C)
S (D, E, F)
 X  R, Y  S
 { X.A, X.B } [A, B]R
 { X.A, Y.E } [A, E] (RxS)
 { x.A |y (y.E=x.B)} } [A] (R*[B=E]S)
Exercice d’application
Soit le schéma relationnel suivant:
Employé (Nom, Prénom, DateNaissance, Adresse, Matricule, Salaire, N°Dep,
Supérieur)
Département (NomD, N°Dep, Directeur)
Projet (NomP, N°Pro, Lieu, N°Dep)
Travaille (Matricule, N°Pro, Heures)

Précisions: L’attribut "Supérieur" dans la relation "Employé" contient le


Matricule du supérieur direct de l’employé. Chaque employé appartient à un
département et travaille sur zéro, un ou plusieurs projets. Chaque projet est
rattaché à un département qui – attention – peut être différent de celui des
employés travaillant sur ce projet.
Exprimer dans les différents langages relationnels les requêtes suivantes :
•Date de naissance et adresse de Makhlouf Ali.
•Nom et adresse des employés qui travaillent au département de recherche.
•Nom et prénom des employés dont le supérieur est Makhlouf ALI.
•Nom des employés qui travaillent plus de 10 heures sur un projet à Oran.

Vous aimerez peut-être aussi