Bases de Données Relationnelles
L’algèbre
relationnelle
Langages de manipulation
◼ Langages formels : base théorique solide
◼ Langages utilisateurs : version plus ergonomique
◼ Langages procéduraux : définissent comment dériver le
résultat souhaité
◼ Langages assertionnels (ou déclaratifs) : définissent
le résultat souhaité
LMD classiques
• Langages formels
• langages algébriques : définissent un ensemble d’opérateurs
de manipulation
• langages prédicatifs (calcul) : définissent le résultat souhaité en
utilisant des expressions de logique
• Langages utilisateurs
• inspirés principalement des langages algébriques : SQL
• inspirés des langage prédicatifs : QBE, QUEL
L’approche algèbrique
◼ Une algèbre est un ensemble d’opérateurs de base, formellement
définis, qui peuvent être combinés à souhait pour construire des
expressions algébriques
◼ Propriété des algèbres : fermeture
• Le résultat de tout opérateur est du même type que les opérandes (ce
qui est indispensable pour construire des expressions)
◼ Propriété souhaitée : complétude
• Toute manipulation pouvant être souhaitée par les utilisateurs
devrait pouvoir être exprimable par une expression algébrique
L’algèbre relationnelle
◼ Opérandes : relations du modèle relationnel (1NF)
◼ Fermeture : le résultat de toute opération est une nouvelle
relation
◼ Complétude : permet toute opération sauf les fermetures
transitives et les fonctions d'agrégation (min, max, count, …)
◼ Opérations unaires (un seul opérande) : sélection (𝜎),
projection (𝜋), renommage (𝝆)
◼ Opérations binaires (deux opérandes): produit cartésien
(×), jointures (⋈), union (∪), intersection (∩), différence
(−), division (÷)
Préambule
◼ Pour chacune de ces 9 opérations, on donne :
– l’opération
– la syntaxe (notation)
– la sémantique (résultat attendu)
– le schéma
– d’éventuelles remarques
– un exemple
Sélection
◼ sémantique : crée une nouvelle relation de population
l’ensemble des tuples de R qui satisfont la condition
◼ schéma (résultat) = schéma (opérande)
◼ population (résultat) population (opérande)
Projection
◼ sémantique : crée une nouvelle relation de population
l’ensemble des tuples de R réduits aux seuls attributs de la
liste spécifiée
◼ schéma (résultat) schéma (opérande)
◼ nb tuples (résultat) = nb tuples (opérande)
Produit cartésien ×
◼ opération binaire
◼ sémantique : chaque tuple de R est combiné avec chaque
tuple de S
◼ schéma : schéma (R S) = schéma(R) schéma(S)
Jointure ⋈
◼ opération binaire
◼ syntaxe : R ⋈ S
◼ sémantique : combine certains tuples
◼ schéma : schéma (R ⋈ S) = schéma (R) schéma (S)
• les attributs de même nom n’apparaissent qu’une seule fois
◼ la combinaison exige l’égalité des valeurs de tous les
attributs de même nom de R et de S
• si R et S n’ont pas d’attributs de même nom la jointure
peut être dynamiquement remplacée par un produit
cartésien
Union ∪
◼ opération binaire
◼ syntaxe : R S
◼ sémantique : réunit dans une même relation les tuples de R et
ceux de S
◼ schéma(R S) = schéma(R) = schéma(S)
◼ précondition : schéma(R) = schéma(S)
Intersection ∩
◼ opération binaire
◼ syntaxe : R S
◼ sémantique : sélectionne les tuples qui sont à la fois dans R et
S
◼ schéma (R S) = schéma (R) = schéma (S)
◼ précondition : schéma (R) = schéma (S)
Différence -
◼ opération binaire
◼ syntaxe : R − S
◼ sémantique : sélectionne les tuples de R qui ne sont pas dans
S
◼ schéma (R − S) = schéma (R) = schéma (S)
◼ précondition : schéma (R) = schéma (S)
Optimiseur de requêtes
SELECT ...
FROM ...
WHERE ...
S
G
B
D
Base de
Données
Algèbre relationnelle
Sélection : prédicat (R ) (,, )
Projection : exp1,exp 2,...(R )
Produit cartésien : R1 R2
Algèbre relationnelle
Opérations ensemblistes : (même schéma)
Union : R1 R2
Intersecti on : R1 R2
Différence : R1 − R2
Division : R1 R2
Algèbre relationnelle
Jointures :
Θ jointure : R1 R2
A1 = A2
jointure naturelle : R1 R2
jointure externe :
gauche : R1
_ R2
droite : R1
_ R2
pleine : R1
__ R2
Exercice 1
Soit le schéma relationnel de la base de données :
PILOTE (NumPil, NomPil, Adr, Sal)
AVION (NumAv, NomAv, Cap, Loc)
VOL (NumVol, NumPil#, NumAv#, Ville_Dep, Ville_Arr, H_Dep, H_Arr)
AVION NumAv NomAv Cap Loc
VOL NumVol NumPil# NumAv# Ville_Dep Ville_Arr H_Dep H_Arr
PILOTE NumPil NomPil Adr Sal
Opérations de projections et sélections :
1. Donnez la liste des avions dont la capacité est supérieure à 350 passagers.
R1 = CAP>350 (AVION)
2. Quels sont les numéros et noms des avions localisés à Tunis ?
R2.1 = Loc=‘Tunis’ (AVION)
R2.2 = Numav, Nomav (R2.1)
3. Quels sont les numéros des pilotes en service et les villes de départ de leurs vols
?
R3.1 = Numpil, Ville_Dep (VOL)
4. Donnez toutes les informations sur les pilotes de la compagnie.
R4 = PILOTE
5. Quel est le nom des pilotes domiciliés à Sfax dont le salaire est supérieur à 2200
dinars?
R5.1 =Adr=‘sfax’ Sal>2200 (PILOTE)
R5.2 = Nompil (R5.1)
Opérations ensemblistes
6. Quels sont les avions (numéro et nom) localisés à Tunis ou dont la capacité est inférieure
à 350 passagers ?
R6.1 = CAP<350 (AVION)
R6.2 = Numav, Nomav (R6.1)
R2.1 = Loc=‘Tunis’ (AVION)
R2.2 = Numav, Nomav (R2.1)
R6.2 = R2.2 R6.2
7. Liste des vols au départ de Tunis allant à Sfax après 18 heures ?
R7.1 = Ville_Dep=‘Tunis’ (VOL)
R7.2 = Ville_ARR=‘Sfax’ (VOL)
R7.3 = H_Dep>18 (VOL)
R7.4 = R7.1 R7.2 R7.2
Les 4 requêtes précédentes sont équivalentes à la requête unique suivante :
R7 = Ville_Dep=‘Tunis’ Ville_ARR=‘Sfax’ H_Dep>18 (VOL)
Mais l’objectif de la question était d’utiliser des opérations ensemblistes d’où la solution avec 5 requêtes (pour utiliser l’opération
Intersection)
Opérations ensemblistes
8. Quels sont les numéros des pilotes qui ne sont pas en service ?
R8.1 = Numpil (PILOTE)
R8.2 = Numpil (VOL)
R8.3 = R8.1 − R8.2
9. Quels sont les vols (numéro, ville de départ) effectués par les pilotes de numéro 100 et
204 ?
R9.1 = Numpil=100 (VOL)
R9.2 = Numpil=204 (VOL)
R9.3 = R9.1 R9.2
R9.4 = Numvol, Ville_Dep (R9.3)
Opération de jointure
10. Donnez le numéro des vols effectués au départ de Tunis par des pilotes Tunisois ?
R10.1 = Ville_Dep=‘Tunis’ (VOL)
R10.2 = Adr=‘Tunis’ (PILOTE)
R10.3 = R10.1 R10.2 (NumPil = NumPil)
R10.4 = Numvol (R10.3)
11. Quels sont les vols effectués par un avion qui n'est pas localisé à Tunis ?
R11.1 = Loc‘Tunis’ (AVION)
R11.2 = VOL R11.1 (NumAv = NumAv)
R11.3 = Numvol, Ville_Dep, Ville_Arr (R11.2)
12. Quels sont les pilotes (numéro et nom) assurant au moins un vol au départ de Tunis avec un avion de capacité supérieure
à 300 places ?
R12.1 = Ville_Dep=‘Tunis’ (VOL)
R12.2 = Cap>300 (AVION)
R12.3 = R12.1 R12.2 (NumAv = NumAv)
R12.4 = R12.3 PILOTE (NumPil = NumPil)
R12.5 = Numpil, Nompil (R12.4)
Opération de jointure
13. Quels sont les noms des pilotes domiciliés à Sfax assurant un vol au départ de Tunis avec un Airbus ?
R13.1 =Adr=‘Sfax’ (PILOTE)
R13.2 = Ville_Dep=‘Tunis’ (VOL)
R13.3 = Nomav=‘Airbus’ (AVION)
R13.4 = R13.2 R13.3 (NumAv = NumAv)
R13.5 = R13.4 R13.1 (NumPil = NumPil)
R13.6 = Nompil (R13.5)
14. Quels sont les numéros des vols effectués par un pilote Tunisois au départ ou à l'arrivée de Tunis avec un avion localisé à
Sfax ?
R14.1 = Adr=‘Tunis’ (PILOTE)
R14.21 = Ville_Arr=‘Tunis’ (VOL)
R14.22 = Ville_Dep=‘Tunis’ (VOL)
R14.2 = R14.21 R14.22
R14.3 = Loc=‘Sfax’ (AVION)
R14.4 = R14.2 R14.3 (NumAv = NumAv)
R14.5 = R14.4 R14.1 (NumPil = NumPil)
R14.6 = Numvol (R14.5)
Opération de jointure
15. Quels sont les pilotes (numéro et nom) habitant dans la même ville que le pilote Ali ?
R15.1 = Nompil=‘Ali’ (PILOTE)
R15.2 = PILOTE R15.1 (Adr = Adr)
R15.3 = Numpil, Nompil (R15.2)
16. Quels sont les numéros des pilotes en service différents de celui de Salah ?
R16.1 = Nompil≠‘Salah’ (PILOTE)
R16.2 = VOL R16.1 (NumPil = NumPil)
R16.3 = Numpil (R16.2)
17. Quelles sont les villes des servies à partir de la ville d'arrivée d'un vol au départ de Sfax ?
R17.1 = Ville_Dep=‘Sfax’ (VOL)
R17.2 = VOL R17.1 (Ville_Dep = Ville_Arr)
R17.3 = Ville_Arr (R17.2)
Opération de jointure
18. Quels sont les appareils (leur numéro) localisés dans la même ville que l'avion numéro 100 ?
R18.1 = Numav=100 (AVION)
R18.2 = AVION R18.1 (Loc = Loc)
R18.3 = Numav (R18.2)
R18.4 = Numav≠100 (R18.3)
Merci …