Académique Documents
Professionnel Documents
Culture Documents
Chapitre 2
2
Présentation du modèle relationnel Introduction
3
Présentation du modèle relationnel Introduction
4
Présentation du modèle relationnel Définition des concepts de base
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.
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
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
Convention d'écriture :
• Une clé primaire est soulignée
• Une clé étrangère est augmentée de *
13
Présentation du modèle relationnel Définition des 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)
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.
17
Algèbre relationnelle Opérations unaires de base
18
Algèbre relationnelle Opérations unaires de base
04 Crayon 10
19
Algèbre relationnelle Opérations unaires de base
1. PROJECTION
Notation: R [A1, ..., An] ou π A1,A2,...Ap (R)
20
Algèbre relationnelle Opérations unaires de base
2. PROJECTION : Exemple
01 Stylo 15 01 15
02 Trousse 200 02 200
04 Crayon 10 04 10
21
Algèbre relationnelle Opérations binaires de base
3. UNION
Notation: R1 ∪ R2
code-prod
RES 1 ∪ R2
01
R
02
04
22
Algèbre relationnelle Opérations binaires de base
4. DIFFERENCE
Notation: R1 - R2
RES code-prod
02
23
Algèbre relationnelle Opérations binaires de base
5. PRODUIT CARTESIEN
Notation: R1 X R2
24
Algèbre relationnelle Opérations binaires de base
PRODUIT X STOCK
25
Algèbre relationnelle Opérations complémentaires
6. INTERSECTION
Notation: R1 ∩ R2
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.
27
Algèbre relationnelle Opérations complémentaires
7. JOINTURE
28
Algèbre relationnelle Opérations complémentaires
7. JOINTURE : R x R 🡪 R
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?
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
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
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.
34
Algèbre relationnelle Opérations complémentaires
8. DIVISION : Exemple
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
36
Algèbre relationnelle Exercice récapitulatif
37
Algèbre relationnelle Exercice récapitulatif
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
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
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
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]
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