Vous êtes sur la page 1sur 41

Introduction aux Bases de Données

Chapitre 2

Manipulation de BDs relationnelles :


Algèbre relationnelle
Plan de la présentation L'Algèbre relationnelle

1. Présentation du modèle relationnel


2. Algèbre relationnelle
1. Introduction
2. Opérations de l'algèbre relationnelle
• Opérations unaires de base
• Opérations binaires de base
• Opérations complémentaires
3. Expression de l'algèbre relationnelle
3. Exercice récapitulatif

2
Présentation du modèle relationnel Introduction

En 1970, Edgar Frank Codd, le directeur de recherche du centre


IBM de San José. publia un article où il présentait le fondement
de la théorie des bases de données relationnelles qui
représente un Schéma logique par des RELATIONS.

Edgar Frank Codd

Depuis les années 80 et avec la standardisation du modèle (1987), différents


SGBDs relationnels ont été développés : Oracle, DB2, Ingres, Sybase, SQL
Server, Access, MySql..

Le modèle relationnel comprend :


1. Concepts pour la description des données
2. Concepts pour la manipulation des données
3. Concepts additionnels

3
Présentation du modèle relationnel Introduction

Le modèle relationnel est le modèle théorique dominant pour la


représentation logique des base de données. C'est le modèle le plus utilisé en
raison des avantages qu’il offre.

Avantages du modèle relationnel


⮚ SIMPLICITE DE REPRÉSENTATION : représentation sous forme de tables,
⮚ FONDEMENT MATHEMATIQUE RIGOUREUX : Théorie des ensembles,
⮚ LANGAGES DECLARATIFS DE HAUT NIVEAU : algèbre relationnelle , langages
assertionnels (SQL),
⮚ INDEPENDANCE PHYSIQUE : stratégie d'accès déterminée par le système, optimisation
des accès,
⮚ INDEPENDANCE LOGIQUE : concept de VUES,
⮚ MAINTIEN DE L’INTEGRITÉ : contraintes d'intégrité définies au niveau du schéma,
⮚ APPROCHE METHODOLOGIQUE DE CONCEPTION DE SCHEMAS DE BDRs: théorie de la
normalisation.

4
Présentation du modèle relationnel Définition des concepts de base

Le modèle relationnel : Représenter le monde en tables


Le modèle relationnel permet de représenter les données que l'on va gérer
à l'aide d'un petit nombre de concepts très simples :

• Les relations ou tables : des lignes (tuples) et des colonnes (attributs)


• Les domaines de valeurs : chaque case d'une table prend une unique valeur
dans un domaine pré-défini
• Les clés (primaires) : il existe des cases dont les valeurs doivent être uniques
et non nulles
• Les clés étrangères : il existe des cases qui doivent prendre une valeur
existante dans les cases d'une autre table

5
Présentation du modèle relationnel Définition des concepts de base

Attribut
Un attribut permet de décrire une information élémentaire stockée dans une
base. Il prend ses valeurs dans un domaine.

Exemple: nom d’une personne, adresse d’une personne, numéro d’un produit, prix, etc.

Domaine
Le domaine est un ensemble fini ou infini de valeurs caractérisé par un nom.

Exemple :
ENTIER
REEL
CHAINES DE CARACTERES
JOUR= {Dimanche, Lundi, Mardi, Mercredi, Jeudi, Vendredi}

6
Présentation du modèle relationnel Définition des concepts de base
Relation
•Une relation est représentée par un tableau à deux dimensions dont les
colonnes représentent les attributs et les lignes les données appelées
tuples (N-uplets) ou occurrences.

• Toute relation a un nom unique.


code_prod
ExemPRpOleDdation : Relatio n nom_prod prix
de nom PRODUI Attributs
U IT 01 Stylo T15
e rel
02 Trousse 200 Données
Tuples
03 Trousse 180
Occurrences
04 Crayon 10 N-uplets
05 Table null Enregistrements
Instance de la relation

Remarque: Un tuple peut ne pas avoir de valeur pour certains attributs de la relation,
parce que cette valeur est inconnue. Sa valeur est alors "null".
7
Présentation du modèle Définition des concepts de base
relationnel

Degré d’une relation : C’est le nombre des attributs dans une relation.
Exemple : Degré de la relation PRODUIT est 3

Cardinalité d’une relation : C’est le nombre de ses occurrences.


Exemple : Cardinalité de la relation PRODUIT est 5.
PRODUIT code_prod nom_prod prix
Attributs

01 Stylo 15
Données
02 Trousse 200
Tuples
03 Trousse 180 Occurrences
04 Crayon 10 N-uplets
05 Table 400

8
Présentation du modèle relationnel Définition des concepts de base

Notion de Clé
Une clé est un groupe minimum d'attributs qui permet d'identifier de
façon unique les tuples dans une relation.

Exemple :
• code_prod est une clé dans la relation Produit (code_prod: Entier, nom_prod: String, prix: réel)
•Le groupe d'attributs (nom, prénom) d'une relation Etudiant est en général une mauvaise clé, car les
homonymes existent.
• (Num_étudiant, code_module) est une clé dans la relation Note(num_étudiant , code_module,
note)
Clé primaire
Si plusieurs clés existent dans une relation, elles sont dites clés candidates. On en
choisit une parmi celles-ci qui sera appelée clé primaire. La clé primaire est
généralement choisie de façon à ce qu'elle soit la plus simple.

Exemple :
Dans la relation VOITURE (num_matricule : Entier, marque: String, Type: String, num_chassis: Entier)
• il existe deux clés : num_matricule et num_chassis
• On choisit (par exemple) num_matricule comme la clé primaire de la relation
9
Présentation du modèle relationnel Définition des concepts de base

Très important
• Toute relation doit comporter une clé primaire.

• Dans une relation, la valeur de la clé dans un tuple doit être connue (elle
ne peut pas être une valeur null).

10
Présentation du modèle relationnel Définition des concepts de base

Clé étrangère
Une clé étrangère est un attribut ou un groupe d'attributs dans une relation R1 et
qui apparait comme clé primaire dans une relation R2 afin de matérialiser une
référence entre les tuples de R1 et les tuples de R2.

Une clé étrangère d'un tuple dans une relation référence une clé primaire d'un
autre tuple dans une autre relation.

STOCK PRODUIT
code-prod* Code-dépôt qté-stock code-prod nom-prod prix
01 145 21 01 Stylo 15
02 200 34 02 Trousse 200
02 241 10 03 Table 180
04 Crayon 10

Attention : Seule une clé primaire peut être référencée par une clé étrangère.

11
Présentation du modèle relationnel Définition des concepts de base

Schéma logique de relation


Un schéma logique (ou schéma) de relation est composé de :
• Nom de la relation
• Liste des attributs avec leurs domaines
• Clé primaire
• Clés étrangères (Eventuellement)

Exemple: Client(code_client: String, nom_client: String, adresse : String)


Commande (num_commande: Integer, code_client* : String, montant : réel)

Convention d'écriture :
• Une clé primaire est soulignée
• Une clé étrangère est augmentée de *

Intention et Extension de relation


• Intention de la relation = schéma logique de relation .

• Extension de la relation = instance de relation (c'est-à-dire l'ensemble des tuples de la


relation).
12
Présentation du modèle relationnel Définition des concepts de base

Contraintes d’intégrité structurelles


Ce sont des propriétés du schéma de la BDR, invariantes dans le temps, que
doivent respecter toute instance de la BDR.

Types de contraintes d'intégrité structurelles:


• Contrainte d’unicité (PRIMARY KEY) imposée par la clé primaire : lors de
l’insertion d’un nouveau tuple, la valeur de la clé primaire doit être unique.
• Contrainte référentielle (FOREIGN KEY) imposée par les clés étrangères : lors de
l’insertion d’un tuple, la valeur des attributs qui sont clés étrangères doivent
exister dans les relations référencées. De même, la suppression d’un tuple dans
une relation référencée exige la suppression de tous les tuples le référençant.
• Contrainte de non nulleté (NOT NULL) : impose l’insertion de valeur pour les
attributs. La clé primaire, par exemple, impose cette contrainte.
• Contraintes de valeur(CHECK) (Exemple : qté-stock >20)

13
Présentation du modèle relationnel Définition des concepts de base

Schéma logique de base de données relationnelle (ou intension)


C’est l’ensemble des schémas des relations composantes S = {R1, R2, …, Rp}.

Exemple de schéma logique de BDR (ou Schéma de BDR) :


//pour simplifier, les domaines ne seront pas présentés dans les schémas
PRODUIT (code_prod, nom_prod, prix)
STOCK (code_prod*, code_dep*, qté-stock)
DEPOT (id_dep, adr)
CLIENT (code_client, nom_client, ville)
COMMANDE (num_com, code_client*, montant, année_com)

Instance de base de données relationnelle


(ou extension ou population)
L’extension (instance) d’une BD relationnelle est l’ensemble d’instances de ses
relations composantes BD = {r1, r2, ..., rn} ou chaque ri respecte les
contraintes d'intégrité.
14
Présentation du modèle relationnel Concepts de base

Exemple de BDR
Schéma logique ou Intension de la BDR « Gestion_Stock » :
PRODUIT (code_prod, nom_prod, prix)
STOCK (code_prod*, code_depôt*, qté_stock)
DEPOT (id_depot, adr)

Instance ou Extension de BDR :


PRODUIT
code-prod nom-prod prix
01 Stylo 15
02 Trousse 200
03 Table 180
STOCK
04 Crayon 10
code-prod* Code-depot* qté-stock
01 D1 145
02 D2 200
02 D1 241 DEPOT
id-dep adr
01 D3 50
01 D2 10 D1 étage1Sal2
04 D3 23 D2 étage1Sal2
D3 étage2Sal1

1
5
Présentation du modèle Concepts de base
relationnel
Quelques règles à retenir
✔ une table a un nom unique (il n'existe pas deux tables avec le même nom dans
la
même BD),
✔ l' ordre des attributs dans une table n'a pas d'importance,
✔ toutes les lignes d'une même table ont le même format et le même nombre
d'attributs,
✔ l'ordre des lignes n'a pas d'importance,
✔ il n'existe pas de tuples identiques,
✔ la clé primaire doit toujours avoir une valeur pour chaque tuple,
✔ la clé primaire est unique pour tous les tuples.

16
Manipulation de BDs relationnelles Algèbre
relationnelle
Introduction
L’algèbre relationnelle [Codd70] est un ensemble d’opérations élémentaires sur les
relations d’une Base de Données.

Une expressions algébrique est une combinaison d’opérations de base de l’algèbre


relationnelle qui répond à une requête .

Opérations de l’algèbre relationnelle :


- Opérateurs unaires de base : Sélection et Projection.
- Opérateurs binaires de base : Union, Différence et Produit cartésien .
- Opérateurs complémentaires : Intersection, Jointure et Division.

17
Algèbre relationnelle Opérations unaires de base

1. SELECTION (ou RESTRICTION)

Notation: R [Q] ou σQ(R)

• Q est la condition de sélection de la forme :


Q = Ai θ Valeur ou Q= Ai θ Aj , θ est dans { =, <, >=, >, <=, !=}

• Q peut être composée à partir de conditions simples et de connecteurs logiques


(AND, OR)

Définition: La sélection prend en entrée une relation R et produit en sortie une


nouvelle relation de même schéma ayant pour tuples ceux de R qui satisfont la
condition de sélection.

Remarque: Les compositions logiques (AND et OR) peuvent aussi être


obtenues par UNION et INTERSECTION de relations restreintes (voir plus loin).

18
Algèbre relationnelle Opérations unaires de base

1. SELECTION (ou RESTRICTION) : Exemple


Donner la liste des produits de prix >100 DA.

RES = PRODUIT [prix >100] ou σprix>100(PRODUIT)

PRODUIT code-prod nom-prod prix RES code-prod nom-prod prix

01 Stylo 15 02 Trousse 200


02 Trousse 200
03 Table 180
03 Table 180

04 Crayon 10

19
Algèbre relationnelle Opérations unaires de base

1. PROJECTION
Notation: R [A1, ..., An] ou π A1,A2,...Ap (R)

Définition: La projection prend en entrée une relation R définie sur un schéma


SR= R(A1, ..., An) et fournit en sortie une nouvelle relation de schéma (A1, ..., Ai)
(schéma inclus dans SR) ayant comme tuples ceux de R restreints au sous-schéma
A1, ..., Ai. Tous les doublons sont supprimés.

Exemple: Donner le code et le prix de tous les produits

RES = PRODUIT [code-prod, prix] π (PRODUIT)


code_prod, prix
ou

20
Algèbre relationnelle Opérations unaires de base

2. PROJECTION : Exemple

Donner le code et le prix de tous les produits

RES = PRODUIT [code-prod, prix] ou π (PRODUIT)


code_prod, prix

PRODUIT code-prod nom-prod prix RES code-prod prix

01 Stylo 15 01 15
02 Trousse 200 02 200

03 Trousse 180 03 180

04 Crayon 10 04 10

21
Algèbre relationnelle Opérations binaires de base

3. UNION
Notation: R1 ∪ R2

Définition: L’union prend en entrée deux relations R1 et R2 de même schéma et


produit une nouvelle relation de même schéma ayant pour tuples ceux qui
appartiennent à R1 et ceux qui appartiennent à R2 (les doublons sont supprimés).
Exemple: Donner les numéros des produits stockés dans D1 ou dans D3
R2 code-prod R4 code-prod
R1 = STOCK[Code_dep =D1] 01
01
R2 = R1[code_prod]
R3 = STOCK[Code_dep = D3] 02 04
R4 = R3[code_prod]
RES = R2 ∪ R4

code-prod
RES 1 ∪ R2
01
R
02
04
22
Algèbre relationnelle Opérations binaires de base

4. DIFFERENCE
Notation: R1 - R2

Définition: La différence prend en entrée deux relations R1 et R2 de même


schéma et produit une nouvelle relation de même schéma ayant pour tuples ceux
présents dans R1 et absents dans R2. La différence n’est pas commutative.
Exemple: Donner les numéros des produits stockés dans D1 et pas dans D3
R2 code-prod R4 code-prod
R1 = STOCK[Code_dep=D1]
01 01
R2 = R1[code_prod]
R3 = STOCK[Code_dep=D3] 02 04
R4 = R3[code_prod]
RES = R2 - R4 R2 - R4

RES code-prod
02

23
Algèbre relationnelle Opérations binaires de base

5. PRODUIT CARTESIEN
Notation: R1 X R2

Définition: Le produit cartésien de deux relations R1 et R2 est une nouvelle


relation dont le schéma est l'union des schémas de R1 et R2 et dont les tuples sont
obtenus par concaténation de chaque tuple de R1 avec chaque tuple de R2. Le
nombre d'éléments du produit cartésien est le produit des cardinalités des deux
relations R1 et R2.

24
Algèbre relationnelle Opérations binaires de base

5. PRODUIT CARTESIEN : Exemple


RES = PRODUIT X STOCK

PRODUIT code-prod nom-prod prix Stock Code-prod* Code-dep* Qté-stock


01 Stylo 15 01 D1 20
02 Trousse 200 02 D3 23

PRODUIT X STOCK

RES code-prod nom-prod prix Code-prod Code-dep Qté-stock


01 Stylo 15 01 D1 20
01 Stylo 15 02 D3 23
02 Trousse 200 01 D1 20
02 Trousse 200 02 D3 23

25
Algèbre relationnelle Opérations complémentaires

6. INTERSECTION
Notation: R1 ∩ R2

Définition: L’intersection prend en entrée deux relations R1 et R2 de même


schéma et produit une nouvelle relation de même schéma ayant pour tuples ceux
présents à la fois dans R1 et dans R2.
Exemple: Donner les numéros des produits stockés à la fois dans D1 et dans D3
R1 = STOCK[Code_dep=D1] R2 code-prod R4 code-prod
R2 = R1[code_prod] 01 01
R3 = STOCK[Code_dep=D3]
02 04
R4 = R3[code_prod]
RES = R2 ∩ R4
R2 ∩ R4

RES code-prod
01

26
Algèbre relationnelle Opérations complémentaires

7. JOINTURE
Notation: R1 [Q] R2 ou R1 Q R2

Q 🡪Ai θ Aj, θ dans { =, <, >=, >, <=, !=} / Ai est un attribut de R1 et Aj un attribut de
R2 ou inversement.
Q peut être exprimée à partir de critères simples et de connecteurs logiques.

Définition:
La jointure de deux relations R1 et R2 selon une condition Q est l’ensemble des
tuples du produit cartésien R1 X R2 qui satisfont la condition Q.

Remarque : La jointure est une opération essentielle de l’algèbre relationnelle. Elle


permet de rapprocher deux relations.

27
Algèbre relationnelle Opérations complémentaires

7. JOINTURE

Types de jointure: on distingue :


Equi-Jointure: si l’opérateur de la condition est ‘=’.

Enéqui-Jointure: si l’opérateur de la condition est différent de ‘=’, c-à-d dans


(<,≤,>,≥,≠)

28
Algèbre relationnelle Opérations complémentaires

7. JOINTURE : R x R 🡪 R

Jointure naturelle: C'est une équi-jointure avec :

R1 [Q] R2 avec Q 🡪Ai = Aj,

Ai est un attribut de R1 et Aj un attribut de R2 ou inversement.


l’attribut dupliqué est supprimé.

Remarque : La jointure naturelle est une opération qui consiste à rapprocher les
tuples de deux relations R1 et R2 afin de former une troisième relation R dont les
attributs sont l’union des attributs de R1 et R2, et dont les tuples sont obtenus en
composant chaque tuple de R1 et chaque tuple de R2 (c'est-à-dire R1 X R2) ayant
les mêmes valeurs pour les mêmes attributs.

29
Algèbre relationnelle Opérations complémentaires

7. JOINTURE : Exemple 1
Quel est le nom des produits stockés dans le dépôt D1?

R1 = PRODUIT[Produit.code-prod = Stock.code-prod] Stock


R2 = R1 [code-dep= " D1"]
R4 = R2[nom-prod]
=

STOCK code-prod* Code-depot* qté-stock PRODUIT code-prod nom-prod Prix


01 D1 145 01 Stylo 15
02 D2 200 02 Trousse 200
02 D1 241 03 Table 180
01 D3 50 04 Crayon 10
01 D2 10

R1 = PRODUIT[Produit.code-prod = Stock.code-prod] Stock


(Jointure naturelle) 3
0
Algèbre relationnelle Opérations complémentaires

7. JOINTURE : Exemple 1
(Suite)
R1 code-prod* Cod-depot qté-stock nom_prod prix
01 D1 145 Stylo 15
02 D2 200 Trousse 200
02 D1 241 Trousse 200
01 D3 50 Stylo 15
01 D2 10 Stylo 15

R2 = R1 [code-dep= " D1"] (Selection)


R2
code-prod* Cod-depot qté-stock nom_prod prix
01 D1 145 Stylo 15
02 D1 241 Trousse 200

RES nom_prod
RES = R2[nom-prod]
(Projection) Stylo

Trousse

3
1
Algèbre relationnelle Opérations complémentaires

7. JOINTURE : Exemple 2
Quelle est la quantité en stock des trousses dans le dépôt d’adresse "étage1Sal2"?

R1 = PRODUIT[nom_prod="Trousse"]
R2 = STOCK [STOCK.code_prod= R1.code_prod] R1
R3 = DEPOT [adr= "étage1Sal2"]
R4 = R2[R2.code_dep = R3.id_dep] R3
RES = R4[Qté_stock]
=
STOCK code-prod* Code-depot* qté-stock prix

R1
code-prod

nom-prod

01 D1 145
0
2 200
02 D2 Jointure naturelle Tr
R2 code-prod* Cod-depot qté-stock nom_prod ou
ss prix
e
02 D2 200
200 Trousse 200
3
02 D1 241 Trousse 200 2
02 D1 241
01 D3 50
Algèbre relationnelle Opérations complémentaires

7. JOINTURE : Exemple 2 (Suite)

R2 code-prod* Cod- qté- nom_prod Prix R3 id-dep


depot stock adr
02 D2 200 Trousse 200 D2 étage1Sal2

02 D1 241 Trousse 200

Jointure naturelle
R4 code- Cod- qté- nom_ Prix adr
depot stock prod
prod*
02 D2 200 Trousse 200 étage1Sal2
RES qté-stock

200
Projection 3
3
Algèbre relationnelle Opérations complémentaires

8. DIVISION (Quotient)
Notation: R1 ÷ R2

Définition:
C’est une opération qui consiste à construire le quotient Q (A1, A2, …, Ai) de
la relation R1(A1, A2, …, Ai, Ai+1, … ,An ) par la relation R2(Ai+1, …, An ) dont
les tuples sont ceux qui concaténés à tout tuple de R2 donnent un tuple de
R1.

Exemple : Produits stockés dans tous les dépôts


R1 = DEPOT [id_depot]
R2 = STOCK [code_prod, code_depot]
RES = R2 ÷ R1

34
Algèbre relationnelle Opérations complémentaires

8. DIVISION : Exemple

Quels sont les produits stockés dans tous les dépôts?


R1 = STOCK [code_prod, code_depot]
R2 = DEPOT [id_depot]
RES = R1 ÷ R2

RES = R1 ÷ R2
R1 code-prod* Cod-depot* Code_prod
R2 id-dep RES
01 D1
D1
02 D2 01
D2
02 D1
D3
01 D3
01 D2

3
5
Algèbre relationnelle Expression de l’algèbre
relationnelle

Expression de l’algèbre relationnelle : est une suite successive


d’opérations de l’algèbre relationnelle appliquées sur des relations de base
ou des relations intermédiaires et permettent de répondre à la plupart
des requêtes sur une base de données relationnelles.
Exemple : La quantité en stock des trousses dans le dépôt d’adresse « étage1Sal2 »
(Autre solution].

R1 = STOCK [STOCK.code-dep= DEPOT.id-dep] DEPOT


R2 = R1 [R1.code-prod = PRODUIT.code-prod] PRODUIT
R3 = R2[nom-prod="Trousse" AND adr = "étage1Sal2"]
RES = PRODUIT [[Qté-stock]

L’expression en anglais de telles expressions est à la base du langage


SQL que nous étudierons dans le chapitre suivant.

36
Algèbre relationnelle Exercice récapitulatif

On considère la base de données BDAIRBASE suivante :

PILOTE (NUMPIL : D_NUMPIL, NOMPIL : D_NOMPIL, ADR : D_VILLE, SAL : D_SAL)


AVION (NUMAV : D_NUMAV, NOMAV : D_NOMAV, CAP : D_CAP, LOC : D_VILLE)
VOL (NUMVOL : D_NUMVOL, NUMPIL* : D_NUMPIL, NUMAV* : D_NUMAV,
VILLE_DEP : D_VILLE, VILLE_ARR : D_VILLE, H_DEP : D_HEURE, H_ARR : D_HEURE)
Exprimez en algèbre relationnelle les requêtes suivantes :
Q1 : Donnez la liste des avions (numéro et nom) dont la capacité est supérieure à 350 passagers.
Q2 : Donnez toutes les informations sur les pilotes de la compagnie.
Q3 : Quels sont les numéros des pilotes en services et les villes de départ de leurs vols ?
Q4 : Quel est le nom des pilotes domiciliés à Paris dont le salaire est supérieur à 15000 F ?
Q5 : Donnez toutes les informations sur les pilotes de la compagnie.
Q6 : Quel est le nom des pilotes domiciliés à Tunis dont le salaire est supérieur à 15000 F ?
Q7 : Quels sont les avions (numéro et nom) localisés à Doha ou dont la capacité est inférieure à
350 passagers ?
Q8 : Liste des vols (numéro) au départ de Doha allant à Tunis après 18 heures ?
Q9 : Quels sont les numéros des pilotes qui ne sont pas en service ?
Q10 : Quels sont les vols (numéro, ville de départ) effectués par les pilotes de numéro 100 et 204 ?

37
Algèbre relationnelle Exercice récapitulatif

PILOTE (NUMPIL : D_NUMPIL, NOMPIL : D_NOMPIL, ADR : D_VILLE, SAL : D_SAL)


AVION (NUMAV : D_NUMAV, NOMAV : D_NOMAV, CAP : D_CAP, LOC : D_VILLE)
VOL (NUMVOL : D_NUMVOL, NUMPIL* : D_NUMPIL, NUMAV* : D_NUMAV,
VILLE_DEP : D_VILLE, VILLE_ARR : D_VILLE, H_DEP : D_HEURE, H_ARR : D_HEURE)

Q11 : Donnez le numéro des vols effectués au départ de Doha par des pilotes Tunisois ?
Q12 : Quels sont les vols effectués par un avion qui n’est pas localisé à Tunis ?
Q13 : Quels sont les pilotes (numéro et nom) assurant au moins un vol au départ de Doha avec
un avion de capacité supérieure à 300 places ?
Q14 : Quels sont les numéros de vols effectués par un pilote Oranais au départ ou à l’arrivée de
Doha avec un avion localisé à Tunis ?
Q15 : Quels sont les pilotes (numéro et nom) habitant dans la même ville que le pilote Benali ?
Q16 : Quels sont les avions (leur numéro) localisés dans la même ville que l’avion numéro 100 ?
Q17 : Quels sont les numéros et noms des pilotes domiciliés dans la même ville que le pilote Benali et
dont le salaire est supérieur à celui de Benali ?
Q18 : Quels sont les numéros et noms des pilotes qui effectuent un vol au départ de leur ville de
résidence ?
Q19 : Y a-t-il des homonymes parmi les pilotes ? Si oui, donnez leur numéro et leur nom.
Q20 : Quels sont les noms des pilotes qui ont piloté au moins tous les avions pilotés par Benali ?

Fin du Chapitre 2 38
Algèbre relationnelle Exercice récapitulatif

On considère la base de données BDAIRBASE suivante :

PILOTE (NUMPIL : D_NUMPIL, NOMPIL : D_NOMPIL, ADR : D_VILLE, SAL : D_SAL)


AVION (NUMAV : D_NUMAV, NOMAV : D_NOMAV, CAP : D_CAP, LOC : D_VILLE)
VOL (NUMVOL : D_NUMVOL, NUMPIL* : D_NUMPIL, NUMAV* : D_NUMAV,
VILLE_DEP : D_VILLE, VILLE_ARR : D_VILLE, H_DEP : D_HEURE, H_ARR : D_HEURE)

Q2 : Donnez toutes les informations sur les pilotes de la compagnie.


RES = Pilote [numPil, nomPil, adr, sal]

Q3 : Quels sont les numéros des pilotes en services et les villes de départ de leurs vols ?
RES = Vol [numPil, D_ville]

Q8 : Liste des vols (numéro) au départ de Doha allant à Tunis après 18 heures ? R1=
Vol [ville_dep="Doha" AND ville_arr = "Tunis" AND h_dep>18]
RES = R1[numVol]

Q9 : Quels sont les numéros des pilotes qui ne sont pas en service ?
R1 = Pilote [numPil]
R2 = Vol [numPil]
RES = R1 – R2
3
9
Algèbre relationnelle Exercice récapitulatif

PILOTE (NUMPIL : D_NUMPIL, NOMPIL : D_NOMPIL, ADR : D_VILLE, SAL : D_SAL)


AVION (NUMAV : D_NUMAV, NOMAV : D_NOMAV, CAP : D_CAP, LOC : D_VILLE)
VOL (NUMVOL : D_NUMVOL, NUMPIL* : D_NUMPIL, NUMAV* : D_NUMAV,
VILLE_DEP : D_VILLE, VILLE_ARR : D_VILLE, H_DEP : D_HEURE, H_ARR : D_HEURE)

Q10 : Quels sont les vols (numéro, ville de départ) effectués par les pilotes de numéro 100 et 204 ?
R1 = Vol [numPil = 100 OR numPil=204]
RES = R1[numVol, ville_dep]

Q14 : Quels sont les numéros de vols effectués par un pilote Oranais au départ ou à l’arrivée de Doha avec un avion
localisé à Tunis ?
R1 = Pilote [adr = "Oran"]
R2 = Vol [ville_dep = "Doha" OR ville_arr = "Doha"] R3 = Avion
[loc= "Tunis"]
R4 = R1 [R1.numPil = R2.numPil] R2
R5 = R4 [R1.numAv= R3.numAv]
R3 RES = R5 [numVol]
Req : D'autres solutions sont possibles

Q17 : Quels sont les numéros et noms des pilotes domiciliés dans la même ville que le pilote Benali et dont le salaire
est supérieur à celui de Benali ?
R1 = Pilote [nomPil = "Benali"]
R3 = R1[adr, sal]
R3 = [R2.adr=Pilote.adr AND R2.sal < Piolte.sal] Pilote
RES = R3 [numPil, nomPil]
4
0
Algèbre relationnelle Exercice récapitulatif

PILOTE (NUMPIL : D_NUMPIL, NOMPIL : D_NOMPIL, ADR : D_VILLE, SAL : D_SAL)


AVION (NUMAV : D_NUMAV, NOMAV : D_NOMAV, CAP : D_CAP, LOC : D_VILLE)
VOL (NUMVOL : D_NUMVOL, NUMPIL* : D_NUMPIL, NUMAV* : D_NUMAV,
VILLE_DEP : D_VILLE, VILLE_ARR : D_VILLE, H_DEP : D_HEURE, H_ARR : D_HEURE)

Q18 : Quels sont les numéros et noms des pilotes qui effectuent un vol au départ de leur ville de résidence ?
R1 = Pilote [Pilote.numPil = Vol.numPil AND Pilote.adr= D_ville] Vol
RES = R1 [numPil, nomPil]

D'autres solutions sont possibles, par exemple:


R1 = Pilote [numPil, nomPil, adr]
R2 = Vol [numPil, D_ville]
R3 = R1 [R1.numPil = R2.numPil AND R1.adr = R2.D_ville] R2
RES = R3 [numPil, nomPil]

Q20 : Quels sont les noms des pilotes qui ont piloté au moins tous les avions pilotés par Benali ?
R1 = Pilote [nomPil = "Benali"]
R2 = Vol [R1.numPil = Vol.numPil] Vol
R3 = R2[ numAv] /*Avions pilotés par Benali */
R4 = Vol [numPil, numAv]
R5 = R4 ÷ R3
R6 = R5 [R5.numPil = Pilote.numPil] Pilote
RES = R6 [nomPil]

41

Vous aimerez peut-être aussi