Académique Documents
Professionnel Documents
Culture Documents
D) • Algèbre relationnelle
• Définition
• Exemples
• Objectifs
Remarque :
4 Un utilisateur utilise un SGBD pour accéder aux données d'une base de données. 11/05/2013
1-2) Objectifs d’utilisation d’une base de données
• Accès : la SGBD gère les accès aux données en gérant les accès concurrentiels.
• Sécurité : la SGBD gère les accès aux données en fonctions des utilisateurs.
• Résistance aux pannes : pouvoir récupérer une BD dans un état « sain » si une panne
Gestion des clients dans une société d’assurance ou dans une banque.
………..
6 11/05/2013
1-3) Exemple d’utilisation de bases de données
Demande de réservation
7 11/05/2013
1-4) Exemple des SGBDs
8 11/05/2013
2-1) Architecture d’un SGBD
Un SGBD offre des "services" organisés en couches afin de garantir l’intégrité des données et de
faciliter leur manipulation.
9 11/05/2013
2-1) Architecture d’un SGBD
10 11/05/2013
2-1) Architecture d’un SGBD
11 11/05/2013
2-1-1) Fonctionnement d’un SGBD
Lecture de données
1) Le programme d'application A émet une demande de
lecture à l'intention du SGBD.
2) Le SGBD consulte le sous-schéma relatif à A pour
obtenir la description logique de ses données.
3) Le SGBD consulte le schéma et détermine la structure
logique des données à extraire.
4) Le SGBD examine la description physique de la base et
détermine les enregistrements physiques à lire.
5) Le SGBD lance une commande au système
d'exploitation pour provoquer la lecture de
l'enregistrement physique.
6) Le système d'exploitation provoque le transfert de
l'enregistrement entre la base physique et les buffers du
SGBD.
7) Le SGBD, à partir du sous-schéma A, extrait les données
à communiquer au programme d'application A.
8) Le SGBD provoque le transfert des données dans la zone
de liaison de A.
9) Le SGBD retourne au programme d'application les
informations d'état relatives à l'échange (en particulier les
codes des erreurs éventuelles).
12 11/05/2013
3) Différents types de bases de données
Lie les enregistrements dans une structure arborescente où chaque enregistrement n'a qu'un
seul possesseur.
Est une base hiérarchique mais permet en plus d'établir des relations transverses.
13 11/05/2013
3-3) Base de données relationnelle SGBDR
Stocke les informations décomposées et organisées dans des matrices appelées relations ou tables.
14 11/05/2013
B) Le modèle relationnel: entités et attributs
• L'entité
• L'attribut
• L'identifiant ou clé
• L'occurrence
15 11/05/2013
1) L’entité
Concept concret ou abstrait du monde à modéliser. Elle se représente par un cadre
contenant son nom.
2) L'attribut
Donnée élémentaire qui sert à caractériser les entités et les associations. Les attributs sont
listés dans l'entité.
16 11/05/2013
3) L'identifiant (ou clé)
4) L'occurrence
Élément particulier d'une entité ou d'une association. L'occurrence ne fait pas partie du modèle E-A
mais est expliquée ici pour mieux comprendre l'entité.
17
Récapitulatif sur le modèle relationnel
18 11/05/2013
C) Le modèle relationnel : les tables
Définition
Clé primaire
Clé étrangère
19 11/05/2013
1) Les tables (angl. tables)
1-1) Définition
Une table est une collection de données relatives à un domaine bien défini, par exemple les employés
d'une société ou les livres d'une bibliothèque. Elle contient des enregistrements dont chacun est composé
par les mêmes champs de données.
Voici, à titre d'exemple, quelques employés d'une société:
Voici la table nécessaire pour stocker les informations concernant ces employés dans une BD:
20 11/05/2013
1-2) Propriétés des tables:
• Les champs de données définissent les informations, qu'on veut stocker dans la table.
• Chaque enregistrement représente une occurrence de ce qu'on veut stocker ( p.ex. un employé).
• Chaque champ peut représenter des données de nature différente (Nom, Salaire, Date de naissance …).
• Chaque champ peut représenter des données de type différent (Texte, Nombres, Dates …).
21 11/05/2013
Remarque:
Il existe une convention concernant les noms des objets des BD. Généralement, les noms des objets ne
contiennent ni d'espaces, ni de caractères spéciaux.
chaque nom d'un objet est précédé par un préfixe bien déterminé pour chaque type d'objet.
Exemple :
Une table reprenant les données concernant les voitures d'une société de taxis contient par exemple
pour chaque enregistrement (= chaque taxi) les informations suivantes:
• Marque
• Modèle
• Cylindrée
• Poids
22 11/05/2013
Voici, à titre d'exemple, une table qui représente les taxis dans une BD:
Afin de pouvoir représenter des données de types différents, les SGBD offrent des types de données
standard pour les champs de données. Voici les types de données connus par la plupart des SGBD:
23 11/05/2013
1-3) Clé primaire
Supposons que le propriétaire de la société achète par exemple une deuxième BMW 320i , qui possède
bien sûr également une cylindrée de 2000 et un poids de 1200 kg. Dans ce cas nous avons 2
enregistrements complètement identiques dans notre BD. Cela nous empêche d'identifier clairement un
des 2 enregistrements.
Il nous faut donc un moyen, qui nous permet d'adresser sans ambiguïté chaque enregistrement dans la
table UNE CLÉ PRIMAIRE !
Remarque:
La clé primaire, constituée d'un ou de plusieurs champs, nous permet d'identifier de manière unique
chaque enregistrement d'une table.
Exemples de clés primaires:
24 11/05/2013
Exemple de clé pour l’exemple des taxis
On pourrait inventer un numéro de taxi allant simplement de 1 jusqu'au nombre de taxis que la société
possède. Le premier taxi enregistré serait le numéro TAXI=1, le deuxième le numéro TAXI=2 etc.
Les deux tables sont donc logiquement liées via les champs fiSociété et idSociété. On dit que fiSociété est
une clé étrangère, qui fait référence à la clé primaire idSociété de la table tblSociétés.
25 11/05/2013
1-4) Clé étrangère:
Un champ qui, dans une table, fait référence à la clé primaire d'une autre table est appelé clé étrangère
(angl.: foreign key, foreign identifier). Ainsi sont définies les relations entre les tables.
26 11/05/2013
D) L'algèbre relationnelle
Opérations sur des ensembles de données :
• La sélection
• La projection
• L'intersection
• L'union
• La différence
• Le produit cartésien
• La jointure
• La division cartésienne
27 11/05/2013
D) L'algèbre relationnelle
Introduction:
L’algèbre relationnelle est un support mathématique cohérent sur lequel repose le modèle relationnel.
L’objet de cet paragraphe est d’aborder l’algèbre relationnelle dans le but de décrire les opérations
qu’il est possible d’appliquer sur des relations pour produire de nouvelles relations. L’approche suivie
est donc plus opérationnelle que mathématique.
Les opérateurs unaires (Sélection, Projection) : Ce sont les opérateurs les plus simples, ils
permettent de produire une nouvelle table à partir d’une autre table.
Les opérateurs binaires ou n-aires (Produit cartésien, Jointure, Division) : Ils permettent
de produire une nouvelle table à partir de deux ou plusieurs autres tables.
28 11/05/2013
1) La sélection.(Opérateur unaire)
La sélection (parfois appelée restriction) génère une relation regroupant exclusivement toutes les
occurrences de la relation R qui satisfont l’expression logique E, on la note σ(E)R.
relation × expression logique → relation
À partir d'un ensemble A, obtenir les données B correspondant à des critères donnés.
Exemple :
29 11/05/2013
2) La projection. (Opérateur unaire)
La projection consiste à supprimer les attributs autres que A1, … An d’une relation et à éliminer les
n-uplets en double apparaissant dans la nouvelle relation ; on la note Π(A1, …An)R.
Exemple :
30 11/05/2013
3) L'intersection (Opérateur binaire)
L’intersection est une opération portant sur deux relations R1 et R2 ayant le même schéma et
construisant une troisième relation dont les n-uplets sont constitués de ceux appartenant aux deux
relations, on la note R1 ∩ R2. relation × relation → relation
À partir des ensembles A et B, obtenir les données C qui existent à la fois dans A et dans B.
Exemple :
31 11/05/2013
4) L'union (Opérateur binaire)
L’union est une opération portant sur deux relations R1 et R2 ayant le même schéma et construisant
une troisième relation constituée des n-uplets appartenant à chacune des deux relations R1 et R2 sans
doublon, on la note R1 ∪ R2. relation × relation → relation
À partir des ensembles A et B, obtenir les données C qui existent soit dans A soit dans B
Exemple :
32 11/05/2013
5) La différence (Opérateur binaire)
La différence est une opération portant sur deux relations R1 et R2 ayant le même schéma et construisant
une troisième relation dont les n-uplets sont constitués de ceux ne se trouvant que dans la relation R1 ;
on la note R1 − R2. relation × relation → relation
À partir des ensembles A et B, obtenir les données C qui existent dans A mais pas dans B.
Exemple :
33 11/05/2013
6) Le produit cartésien. (Opérateur n-aire)
Le produit cartésien est une opération portant sur deux relations R1 et R2 et qui construit une
troisième relation regroupant exclusivement toutes les possibilités de combinaison des occurrences des
relations R1 et R2, on la note R1 × R2. relation × relation → relation
À partir des ensembles A et B, obtenir toutes les combinaisons possibles C
Exemple :
34 11/05/2013
7) La jointure (Opérateur n-aire)
La jointure est une opération portant sur deux relations R1 et R2 qui construit une troisième relation regroupant
exclusivement toutes les possibilités de combinaison des occurrences des relations R1 et R2 qui satisfont l’expression
logique E. La jointure est notée R1 ▷◁E R2. relation × relation × expression logique → relation
À partir des ensembles A et B, obtenir le produit cartésien C limité à une valeur commune.
En fait, la jointure n’est rien d’autre qu’un produit cartésien suivi d’une sélection :
La division est une opération portant sur deux relations R1 et R2, telles que le schéma de R2 est
strictement inclus dans celui de R1, qui génère une troisième relation regroupant toutes les parties
d’occurrences de la relation R1 qui sont associées à toutes les occurrences de la relation R2 ; on la
note R1 ÷ R2. relation × relation → relation
36 11/05/2013
À partir des ensembles A et B, obtenir les données C qui, combinées à l'ensemble B, donnent l'ensemble A.
Exemple :
Soit le modèle relationnel qui gère les fonctions des employés dans une société :
Une fonction est identifiée par un code et possède un titre et un niveau hiérarchique.
Un employé est identifié par un numéro et possède les informations suivantes :
· Nom : Nom de l’employé
· Prénom : Prénom de l’employé
· Salaire :Salaire de l’employé en €
· Date entrée :Date d’entrée de l’employé dans la société
· Code fonction : Code de la fonction occupée par l’employé ( Clé étrangère avec la table FONCTION)
38 11/05/2013
Exercice d’application
Soit le modèle relationnel qui gère les projets et les ressources d’une entreprise informatique :
39
11/05/2013
Exercice
On considère la base de données BD AIRBASE suivante :
- PILOTE (NUMPIL , NOMPIL, ADR , SAL)
- AVION (NUMAV , NOMAV, CAP, LOC)
-VOL (NUMVOL , NUMPIL ,NUMAV, VILLE_DEP, VILLE_ARR, H_DEP , H_ARR)
Les clés primaires sont soulignées et les clés étrangères sont en italique gras.
Exprimer les requêtes suivantes en algèbre relationnelle.
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 à Nice ?
3) Quels sont les numéros des pilotes en service et les villes de départ de leurs vols ?
4) Quel est le nom des pilotes domiciliés à Paris dont le salaire est supérieur à 15000 DH ?
5) Quels sont les avions (numéro et nom) localisés à Nice ou dont la capacité est inférieure à 350 passagers ?
6) Liste des vols au départ de Nice allant à Paris après 18:00 h ?
7) Quels sont les numéros des pilotes qui ne sont pas en service ?
8) Quels sont les vols (numéro, ville de départ) effectués par les pilotes de numéro 100 et 204 ?
9) Donnez le numéro des vols effectués au départ de Nice par des pilotes Niçois ?
10) Quels sont les vols (numéro, villes départ et arrivée) effectués par un avion qui n'est pas localisé à Nice ?
11) Quels sont les pilotes (numéro et nom) assurant au moins un vol au départ de Nice avec un avion de
capacité supérieure à 300 places ?
12) Quels sont les noms des pilotes domiciliés à Paris assurant un vol au départ de Nice avec un Airbus ?
40 11/05/2013
Annexe:
La jointure
Voici deux tables qui représentent une gestion (très simplifiée) des comptes d'une banque:
En principe, la présence d'une relation (clé étrangère/clé primaire) entre deux tables est une
condition nécessaire pour effectuer une jointure sur les tables.
En fait, pour tous les enregistrements non marqués, fiClient ne correspond pas à idClient.
Pour ces enregistrements, on associe donc un compte à un client qui n'est pas le propriétaire de ce compte.
Voici le résultat de l'application de la condition de jointure:
Les requêtes
44 11/05/2013
E) Les requêtes (angl. queries)
Les requêtes servent donc à répondre aux questions basées sur le contenu d'une ou de plusieurs tables.
Exemple:
Quelles sont les marques et modèles des voitures ayant une cylindrée supérieure à 2000 ?
45 11/05/2013
1) Types d’attributs Mysql:
Dans chacune de ces catégories, il existe différents types que vous trouverez ci-dessous.
47
Types des attributs – flottants
Les flottants – dits aussi nombres réels – sont des nombres à virgule. Contrairement aux entiers, leur
domaine n’est pas continu du fait de l’impossibilité de les représenter avec une précision absolue.
-1.175494351E-38 3.402823466E+38
-3.402823466E+38 1.175494351E-38
0
48
Types des attributs – chaînes
nom longueur
CHAR(M) Chaîne de taille fixée à M, où 1<M<255, complétée avec
des espaces si nécessaire.
CHAR(M) BINARY Idem, mais insensible à la casse lors des tris et
recherches.
VARCHAR(M) Chaîne de taille variable, de taille maximum M, où
1<M<255, complété avec des espaces si nécessaire.
VARCHAR(M) BINARY Idem, mais insensible à la casse lors des tris et
recherches.
TINYTEXT Longueur maximale de 255 caractères.
TEXT Longueur maximale de 65535 caractères.
MEDIUMTEXT Longueur maximale de 16777215 caractères.
LONGTEXT Longueur maximale de 4294967295 caractères.
DECIMAL(M,D)* Simule un nombre flottant de D chiffres après la virgule et
de M chiffres au maximum. Chaque chiffre ainsi que la
virgule et le signe moins (pas le plus) occupe un
caractère.
(*) : NUMERIC est un synonyme de DECIMAL.
49
Types des attributs – chaînes
Ils ne diffèrent que par la sensibilité à la casse qui caractérise la famille des
BLOB. Alors que la famille des TEXT sont insensibles à la casse lors des tris et
recherches.
Les BLOB peuvent être utilisés pour stocker des données binaires.
Les VARCHAR, TEXT et BLOB sont de taille variable. Alors que les
CHAR et DECIMAL sont de taille fixe.
50
Types des attributs – dates et heures
nom description
DATE Date au format anglophone AAAA-MM-JJ.
DATETIME Date et heure au format anglophone AAAA-MM-JJ HH:MM:SS.
TIMESTAMP Affiche la date et l’heure sans séparateur : AAAAMMJJHHMMSS.
TIMESTAMP(M) Idem mais M vaut un entier pair entre 2 et 14. Affiche les M premiers
caractères de TIMESTAMP.
TIME Heure au format HH:MM:SS.
YEAR Année au format AAAA.
Le format de date AAAA-MM-JJ signifie : année sur 4 chiffre, mois sur 2 chiffres et jour
sur 2 chiffres avec pour séparateur le tiret. Le format d’heure HH:MM:SS signifie :
heure, minute et seconde chacune sur 2 chiffres, avec pour séparateur les deux points.
Dans le format étendu qui comprend la date et l’heure, des deux dernières sont séparées
par un espace. Les formats de date sont assez permissifs car des variantes sont tolérées. Il
est possible de mettre n’importe quel caractère qui ne soit pas un chiffre en guise de
séparateur, il est aussi possible de na pas en mettre, comme cela est affiché par
TIMESTAMP.
52
Opérateurs de l’Algèbre Relationnelle et Arithmétiques
1) LA PROJECTION
2) LA SELECTION
3) LES CALCULS
4) LA JOINTURE
LA PROJECTION
CONTEXTE:
Net_Provence est un réseau d’agences de voyage né en Provence, il y a quelques années, et qui se développe
actuellement dans toute la France. Le système de réservation est géré par un SGBDR. Chaque agence de voyage
dispose, pour un voyage donné, d’un nombre de places limité. Il vous est demandé de d’interroger la base existante
en créant des requêtes en SQL.
PROJECTION
On veut garder les champs
Code_client,, Nom_client
Code_client Nom_client,,Prénom_client
Prénom_client,, Ville_Client uniquement
SELECT *
FROM VOYAGES;
R3 : Liste des Agences
SELECT *
FROM Agences_de_voyage;
R4 : Liste des Clients code, nom (tri croissant), prénom, ville
SELECT *
FROM Agences_de_voyage
ORDER BY Nom_agence;
R6: Liste des clients en remplaçant les intitulés des colonnes nom client en NOMS,
prénom_client en PRENOMS,Adresses et Villes (tri décroissant Villes)
1) LA PROJECTION
2) LA SELECTION
3) LES CALCULS
4) LA JOINTURE
LA SELECTION
R7 : Liste des clients de Paris (tri croissant sur le nom du client)
SELECT *
FROM Clients
WHERE Ville_client="PARIS"
ORDER BY Nom_client;
R8 : Liste des agences des Bouches du Rhône (tri sur le CP)
SELECT *
FROM Clients
WHERE Ville_client="AIX EN PROVENCE" Or Ville_client="Paris"
ORDER BY Nom_client;
R10: Afficher le nom du client N°18 avec son code postal, ainsi
que le nom du client N° 21 avec son CP
SELECT Nom_voyage
FROM Voyages
WHERE Not Nom_voyage="ZURICH"
ORDER BY Nom_voyage;
R13 :Liste des clients dont le nom commence par la lettre P en changeant l’intitulé de
la colonne par Noms Lettre P (trier sur Nom_client)
1) LA PROJECTION
2) LA SELECTION
3) LES CALCULS
4) LA JOINTURE
Les Calculs
R17: Prix du voyage le plus cher (afficher uniquement cette donnée)
FROM Voyages;
R18: Prix du voyage le plus faible (afficher uniquement cette donnée)
FROM Voyages;
R19: Nombre de clients (le résultat doit être stocké sous l’intitulé
Nombre de clients Net_Provence)
FROM Clients;
R20: Nombre de voyages
FROM Voyages;
R21 : Nombre total d’Agences
FROM Agences_de_voyage;
R22: Prix moyen des voyages Net_Provence
FROM Voyages;
R23: Prix moyen des voyages en fonction de la durée des voyages
FROM Voyages
GROUP BY Durée_voyage;
Opérateurs de l’Algèbre Relationnelle et
Arithmétiques
1) LA PROJECTION
2) LA SELECTION
3) LES CALCULS
4) LA JOINTURE
LA JOINTURE
R24: NB de places proposées par voyage et par agence
WHERE Agences_de_voyage.Code_agence=nombre_de_places_proposées_par_agence.code_agence;
R25: Montant dû par client