Cours Partie Base de Données GE - GM 21 - 22
Cours Partie Base de Données GE - GM 21 - 22
Cours Partie Base de Données GE - GM 21 - 22
Filière: GE/GM
S3
Prof. Driss AIT OMAR
Introduction
Système
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données 6 Année Universitaire 2020-2021 | 6
Chapitre 0: Introduction
Introduction
Système
❑ Un système peut être contrôler ou diriger par un autre pour qu’il atteint des besoins
spécifiques: système de pilotage.
❑ Le système possède un ensemble de moyens matériels, de personnels, … nécessaires
pour assurer ses activités; c’est ce qu’on appel le système opérant ou de production.
système de
pilotage
→ Flux d’information
système
d’information
Client(Demande) Livraison
système
opérant
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données 7 Année Universitaire 2020-2021 | 7
Chapitre 0: Introduction
Introduction
Système d’information
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données 8 Année Universitaire 2020-2021 | 8
Chapitre 0: Introduction
Introduction
Système d’information
❑ Exemple
▪ Vente de produits (fruits, légumes) par une coopérative :
Produits achetés à un producteur et revendus à des clients
▪ Différentes activités :
Achat de lot à un producteur, vente de produit à un client, suivi de l’ évolution des
stocks, etc.
▪ Informations à gérer :
Identification des produits avec prix de vente, achat et quantités, coordonnées des
producteurs et des acheteurs, etc.
Système d’information
Système d’information
Système d’information
Système d’information
Système d’information
Bases de données
Bases de données
Banques de données
Bases de données
Bases de données
Bases de données
Modèle de données:
Bases de données
Bases de données
Bases de données
Bases de données
Bases de données
Bases de données
Bases de données
Bases de données
Bases de données
Bases de données
Bases de données
Bases de données
Etapes BD-SGBD
❖ Conception de BD
À partir de l'analyse du contexte, analyser les besoins :
• Quelles données retenir et stocker ? Comment les organiser ?
•Quelles contraintes à prendre en compte ? Comment les
représenter ?
❖ Programmation
Développement de requêtes et programmes pour interroger la BD Interfaces
avec d'autres applications
❖ Implémentation de SGBD
Support de nouveaux types de données, intégration de données
et d'applications, interfaces utilisateurs, langages
Bases de données
Bases de données
MERISE
M éthode d'
E tude et de
R éalisation ,
1. La phase d'analyse :
Cette phase, qui ne sera pas étudié dans ce cours, est
une phase essentielle qui consiste à:
étudier l'existant :
◼ y-a-t'il un système qui gère déjà tout ou partie de
l'information, qu'il s'agisse d'un logiciel ou d'un ensemble de
documents papiers ?
◼ Comment ces informations sont elles stockées?
◼ Quelles sont les informations stockées ?
◼ Que manque t-il ?
◼ Qu'est ce qui convient ou ne convient pas aux utilisateurs?
2. La phase conceptuelle :
Elle consiste à représenter l'organisation des
données de manière générale.
Elle aboutit sur la création du modèle conceptuel
des données (MCD) dans lequel les données sont
représentées sous forme d'entités liées entre elles
par des relations.
si
aucune des propriétés "naturelles" ne peut servir
de clé, on en rajoute une artificiellement (Par
exemple "CodeLivre" ou "IdAnimal").
Chaque propriété ne doit dépendre que d'une
seule entité.
Exemple :
Dans l'exemple du libraire, on peut construire les
entités suivantes (les propriétés sont indiquées après
le nom de l'entité, l'identifiant est en gras) :
œuvre : Idœuvre, titre
Auteur : IdAuteur, nom, prénom
Editions
ISBN
Editeurs
Titre
Nb pages IdEditeur
Exemplaires
Nom
Id_livre
Etat
Exemple :
Dans l'exemple du libraire, on a les relations
suivantes:
Exemple :
Dans l'exemple du libraire, considérons la relation édite
qui existe entre les entités éditeur et édition.
Ainsi, dans l'exemple du libraire, une édition (un livre) a
toujours un et un seul éditeur (soit un minimum de un
éditeur, et un maximum de un éditeur).
Un éditeur par contre peut éditer au minimum une
édition et au maximum plusieurs éditions (un nombre
quelconque de fois).
Opérations
Concerne
Id_op
Type
1:1
Date
montant
Année Universitaire 2020-2021 | 74
I. Méthode Merise
Exercice : MCD (gestion de commandes)
Individus
1,N Communes 1,N
Effectuer
Id commune
1,1 Nom commune
N°identité Distance agence
Nom Nombre d'habitants
Prénom Locations Situer Dan
DateNaissance 1,1
N°téléphone N°Location Concerner
DateDébut
DateFin 1,1
0,N
Quartiers
Logements
1,1 N° logement
TypeLogements Adresse
Id quartier
Nom quartier
Type logement Superficie
Correspondre
Charges forfaitaires Loyer
1,1 0,N
1,N Appartenir
Année Universitaire 2020-2021 | 79
I. Méthode Merise
MCD>>> MLD
Exemple:
la première partie de la construction du MLD du
libraire est directe. Il suffit de recopier les entités.
Premier cas:
Dans le cas d'une relation ou l'une des branches a une
cardinalité de 1:1 ou 0:1, la transformation de la
relation se fait de la manière suivante :
On ramène dans la table correspondant à l'entité "du côté
du 1:1" (ou du 0:1) la clé primaire de l'autre table ainsi que
toutes les éventuelles propriétés de la relations.
On lie la clé primaire ainsi importée avec la clé primaire de
la deuxième table.
Si la relation contenait des propriétés, celle-ci se retrouve
également importée du côté du 1:1
Se transforme en:
EntitéA EntitéB
0:n relation
IdA 1:1 IdB
propriétéR
PropriétéA1 propriétéB1
devient
TableA
TableB
PK_IdA PK_IdB
Champ A1 Ch_propriété B1
FK IdA
Ch_proriété R
Année Universitaire 2020-2021 | 86
I. Méthode Merise
Modèle logique des données
Deuxième cas
Dans tous les autres cas, la relation du MCD se
transforme en une table du MLD :
On crée une nouvelle table correspondant à la relation.
Cette table contient toutes les éventuelles propriétés de
la relation.
Se transforme en:
Cas particuliers
Quelques cas particuliers peuvent apparaitre.
Cas particuliers
Les relations réflexives (entre une entité et elle-
même) se traitent comme les autres relations.
les relations ternaires (entre trois entités, ou plus), se
traitent comme d'habitude.
Si l'une des branches a une cardinalité de type 1:1,
on ramène les clés primaires des autres entités et les
propriétés de la relation dans l'entité "du côté du
1:1".
Si ce n'est pas le cas, la relation se transforme en
table.
Exemple :
Le MLD correspondant à l'exemple du libraire est le
suivant :
Relations réflexives:
Nous appliquons les règles générales avec la seule différence que la relation
est 2 fois reliée au même objet.
Relations réflexives:
Nous appliquons les règles générales avec la seule différence que la relation
est 2 fois reliée au même objet.
Id quartier
1,1 N° logement Nom quartier
Adresse
Superficie
Type logement Correspondre
Loyer
Charges forfaitaires
1,1 0,N
1,N Appartenir
Année Universitaire 2020-2021 | 104
I. Méthode Merise
MCD>>MLD: Exercices
Introduction
Origine
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 108
Bases de données Le langage de requête
Introduction
Catégories d’instructions
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 109
Bases de données Le langage de requête
Catégories d’instructions
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 110
Bases de données Le langage de requête
Catégories d’instructions
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 111
Bases de données Le langage de requête
Introduction
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 112
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 113
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 114
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 115
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 116
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 117
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 118
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 119
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 120
Bases de données Le langage de requête
SELECT
❑ Donner les avions qui ont une capacité entre 200 et 300 places ?
SELECT NAV
FROM Avions
WHERE CAP BETWEEN 200 AND 300 ;
❑ Le prédicat BETWEEN teste l'appartenance à un intervalle
❑ Donner les pilotes qui habitent soit à Rabat soit à Casa ?
SELECT NPIL
FROM Pilotes
WHERE VILLE IN (’Rabat’, ’Casa’) ;
❑ Le prédicat IN teste l'appartenance à une liste de valeur
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 121
Bases de données Le langage de requête
SELECT
Valeurs nulles
❑ La valeur NULL est une valeur particulière signifiant qu'une donnée est
manquante, sa valeur est inconnue
▪ Dans une expression arithmétique, si l'un des termes est nul, alors l'expression
entière prend la valeur NULL
▪ Un prédicat de comparaison (=, <>, <, <=, >, >=) prend la valeur logique
"inconnu" si l'un des termes de la comparaison est NULL
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 122
Bases de données Le langage de requête
Exercice
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 123
Bases de données Le langage de requête
Exercice
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 124
Bases de données Le langage de requête
Exercice
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 125
Bases de données Le langage de requête
Exercice
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 126
Bases de données Le langage de requête
Exercice
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 127
Bases de données Le langage de requête
Exercice
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 128
Bases de données Le langage de requête
Exercice
❑ Soit le schéma relationnel suivant :
Pilote (NumP, NomP, Addresse, Salaire)
Avion (NumA, NomA, Capacité, Localisation)
Vol (NumV, #NumP, #NumA, Dep_V, Arr_V, Dep_H, Arr_H)
1. Donnez la liste des avions dont la capacité est supérieure à 350 passagers.
2. Quels sont les numéros et noms des avions localisés à Ouarzazate ?
3. Quels sont les numéros des pilotes en service et les villes de départ de leurs vols ?
4. Donnez toutes les informations sur les pilotes de la compagnie.
5. Quel est le nom des pilotes domiciliés à Paris dont le salaire est supérieur à 15000
Dhs ?
6. Quels sont les avions (numéro et nom) localisés à Rabat ou dont la capacité est
inférieure à 350 passagers ?
SELECT NumA, NomA FROM Avion WHERE Localisation = ’Rabat’ OR Capacité
< 350;
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 129
Bases de données Le langage de requête
Exercice
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 130
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 131
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 132
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 133
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 134
Bases de données Le langage de requête
SELECT
Exercice
❑ Ecrire la requête qui retourne la moyenne et la somme des notes
des étudiants dont le nom commence ‘M’
SELECT
Solution
❑ SELECT AVG(note), SUM(note)
FROM Etudiant
WHERE nom LIKE ‘M%';
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 135
Bases de données Le langage de requête
SELECT
Exercice
❑ Ecrire la requête qui retourne la date d’embauche(date_emb) la plus ancienne et la
plus récente des employées.
SELECT
Solution
❑ SELECT MIN(date_emb), MAX(date_emb)
FROM employe;
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 136
Bases de données Le langage de requête
SELECT
Exercice
❑ Ecrire la requête qui renvoie le nombre de départements (doublons inclus) de la
table employe.
SELECT
Solution
❑ SELECT COUNT(N_dep) FROM employe;
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 137
Bases de données Le langage de requête
SELECT
Exercice
❑ Ecrire la requête qui retourne le nombre d’enregistrements dans la table EMP dont
la colonne N_dep a pour valeur 30.
SELECT
Solution
❑ SELECT COUNT(*) FROM employe
WHERE N_dep = 30;
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 138
Bases de données Le langage de requête
SELECT
Exercice
❑ Ecrire la requête qui renvoie la moyenne des commissions obtenues par les
employés.
SELECT
Solution
❑ SELECT AVG(comm) FROM employe;
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 139
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 140
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 141
Bases de données Le langage de requête
SELECT
Exercice
❑ Ecrire la requête qui renvoie la moyenne des salaires pour chaque département
présent dans la table employé.
SELECT
Solution
❑ SELECT deptno, AVG(sal) FROM employe
GROUP BY deptno;
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 142
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 143
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 144
Bases de données Le langage de requête
SELECT
Exercice
❑ Ecrire la requête qui renvoie les numéro de départements dont le salaire maximal
(à afficher aussi) est supérieur à 2900.
SELECT
Solution
❑ SELECT deptno, MAX(sal)
FROM employe
GROUP BY deptno
HAVING MAX(sal) > 2900;
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 145
Bases de données Le langage de requête
SELECT
Exercice
❑ Afficher la somme des salaires des employés supérieure à 5000 par fonction, et les
fonctions dont les quatre premières lettres sont différentes de la chaîne de
caractères « TECH». Le résultat est ordonné de façon décroissante sur les sommes
des salaires.
SELECT
Solution
❑ SELECT fonction, SUM(sal)
FROM employe
WHERE fonction NOT LIKE ‘TECH%'
GROUP BY fonction
HAVING SUM(sal) > 5000
ORDER BY DESC SUM(sal);
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 146
Bases de données Le langage de requête
SELECT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 147
Bases de données Le langage de requête
SELECT
Auto-jointure
❑ Exemple : Donner les noms des clients de la même ville que Ahmed?
SELECT C2.nom
FROM client C1 , client C2
WHERE C1.ville = C2.ville
AND C1.nom = ‘Ahmed’
AND C2.nom <> ‘Ahmed’
❑ Cet exemple utilise, pour le couplage des villes, la jointure de la table Client avec
elle-même (auto-jointure)
❑ Pour pouvoir distinguer les références ville dans les 2 copies, il faut introduire 2
alias différents C1 et C2 de la table client
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 148
Bases de données Le langage de requête
SELECT
❑ Exemple: donner le nombre de places de chaque vol qui a été affecté à un avion?
SELECT NVOL, CAP
FROM Vols, Avions
WHERE Vols.NAV = Avions.CAP ;
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 149
Bases de données Le langage de requête
INSERT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 150
Bases de données Le langage de requête
INSERT
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 151
Bases de données Le langage de requête
UPDATE
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 152
Bases de données Le langage de requête
DELETE
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 153
Bases de données Le langage de requête
Fonctions numériques
▪ SIGN(nombre) signe du nombre spécifié
▪ ABS(nombre) valeur absolue
▪ ACOS(nombre) arc cosinus
▪ ASIN(nombre) arc sinus
▪ ATAN(nombre) arc tangente
▪ COS(nombre) cosinus
▪ SIN(nombre) sinus
▪ TAN(nombre) tangente
▪ COSH(nombre) cosinus hyperbolique
▪ SINH(nombre) sinus hyperbolique
▪ TANH(nombre) tangente hyperbolique
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 154
Bases de données Le langage de requête
Fonctions numériques
▪ EXP(puissance) élevé à la puissance
▪ LN(nombre) logarithme naturel
▪ LOG(base, nombre) logarithme en base quelconque
▪ SQRT(nombre) racine carrée
▪ POWER(nombre, puissance) puissance d’un nombre
▪ MOD(dividende, diviseur) modulo (reste de la division)
▪ CEIL(nombre) le plus petit entier plus grand que le nombre passé en argument
▪ FLOOR(nombre) le plus grand entier plus petit ou égal au nombre passé en
argument
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 155
Bases de données Le langage de requête
Sous –requêtes
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 156
Bases de données Le langage de requête
Sous –requêtes
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 157
Bases de données Le langage de requête
Sous –requêtes
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 158
Bases de données Le langage de requête
Sous –requêtes
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 159
Bases de données Le langage de requête
Sous –requêtes
SELECT projection
FROM nom de table
WHERE expr op ANY | ALL
(SELECT (projection
FROM · · · ) ;
op ∈ { = , <>, < , <= , > , >= }
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 160
Bases de données Le langage de requête
Sous –requêtes
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 161
Bases de données Le langage de requête
Sous –requêtes
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 162
Bases de données Le langage de requête
Sous –requêtes
❑ Sous-requêtes d’existence
SELECT projection
FROM nom de table [Alias]
WHERE [NOT] EXISTS
(SELECT (projection
FROM · · · ) ;
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 163
Bases de données Le langage de requête
Sous –requêtes
Driss AIT OMAR(FST Béni Mellal) Initiation aux bases de données Année Universitaire 2020-2021 | 164