0% ont trouvé ce document utile (0 vote)
121 vues26 pages

Algèbre Relationnelle et Opérations SQL

Transféré par

Omaar Meejri
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
121 vues26 pages

Algèbre Relationnelle et Opérations SQL

Transféré par

Omaar Meejri
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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 …

Vous aimerez peut-être aussi