Djibril Sambel DIALLO
Bases de Données
Consultant en Business Analyste au projet « Preuve de Concept du Mali » à
OpenCRVS,
Consultant en analyse, contrôle et qualité des données au programme PAECSIS à
CIVIPOL– UNION EUROPEENNE
Responsable du développement des applications web et de la gestion et du contrôle
qualité des données du RGPH5 à l’INSTAT
MPhil in Comp. Science, Researcher in Computer Security at University of Ghana –
1
University of Cape town – University of Kenyatta
But des Bases de Données (BDD)
Stocker
Informations
Consulter
2
Plan
I - Définitions
II - Modèle relationnel
III- Langage SQL
3
I- Définitions (1)
Base de données (BDD) :
ensemble de données
organisées suivant un modèle
consultable par de nombreux utilisateurs
4
Exemple de BDD
Annuaire téléphonique
NOM PRENOM TEL.
Benoit J ean 04 76 45 65 56 Tableau
Bernard Francois 04 76 56 68 32 Libre
Bourdan Pierre 04 76 23 54 66 accès
5
I- Définitions (2)
SGBD pour support informatique
(Système de Gestion de Bases De Données)
Ensemble de logiciels capables :
concevoir, enregistrer, consulter les données sur
support informatique
sécuriser les données :
intégrité du contenu
droits d ’accès
6
Exemples de SGBD
Microsoft QUERY
Microsoft ACCESS
Deux SGBD tout en un
7
Domaines d ’utilisation
SGBD
(Système de Gestion de Bases De Données)
Traiter un grand nombre d’objets similaires
clients pour les assurances
patients dans les hôpitaux
comptes dans les banques
livres dans les bibliothèques
…
8
Plan
I - Définitions
II - Modèle relationnel
III- Langage SQL
9
Modèle Relationnel (1)
Modèle pour Organiser
BDD
Langage pour Manipuler
10
Modèle Relationnel (2)
BDD relationnelle
BDD relationnelle = collection de relations
relation = table (tableau)
11
Modèle Relationnel (3)
La Relation - définition
Nom : ANNUAIRE
ANNUAIRE
Attributs :
(NOM, PRENOM, TEL)
NOM PRENOM TEL
Benoit J ean 04 76 45 65 56
Benoit Francois 04 76 56 68 32 Occurrences :
• 4 abonnés
Bourdan J ean 04 76 23 54 66
• décrits suivant
Bouvier J acqueline 04 76 18 34 35 valeurs d’attributs
13
Modèle Relationnel (5)
Clé de relation NOM
Benoit
PRENOM
J ean
TEL
04 76 45 65 56
Benoit Francois 04 76 56 68 32
Clé d ’une relation: Bourdan J ean 04 76 23 54 66
attribut(s) Bouvier J acqueline 04 76 18 34 35
sila valeur de la clé est fixée
une seule occurrence possède cette valeur
Question : quelle est la clé d ’ANNUAIRE ?
Nom
Prenom
Tel
14
Modèle Relationnel (5)
Clé de relation NOM
Benoit
PRENOM
J ean
TEL
04 76 45 65 56
Benoit Francois 04 76 56 68 32
Clé d ’une relation: Bourdan J ean 04 76 23 54 66
attribut(s) Bouvier J acqueline 04 76 18 34 35
sila valeur de la clé est fixée
une seule occurrence possède cette valeur
Question : quelle est la clé d ’ANNUAIRE ?
Nom
Prenom 1 n° téléphone 1 seul abonné
Tel
15
Modèle Relationnel (6)
Schéma de relation
Schéma d ’une relation :
Nom relation ( clé, attribut1, attribut2, … )
Schéma de l’ANNUAIRE :
ANNUAIRE ( TEL, NOM, PRENOM )
=
ANNUAIRE ( NOM, PRENOM, TEL )
16
Exemple de BDD
Compagnie d ’Aviation
Polycopié page 2
3 relations : vol, pilote et avion.
schéma des relations :
vol(numvol, depart, arrivee, numav, numpil, jdep, hdep,jarr, harr)
pilote(numpilote,nom,prenom)
Avion(numavion, type, cap)
Schéma de la BDD (à suivre …)
17
Plan
I - Définitions
II - Modèle relationnel
III- Langage SQL
définition
un exemple de requête et traitement
requêtes typiques
18
SQL - langage relationnel
Modèle pour Organiser
BDD
Langage pour Manipuler
19
SQL - langage relationnel
Définition
Structured Query Langage (SQL)
langage d’interrogation (Anglais)
inventé par IBM (1973)
Requête SQL
Réponse : relation
SGBD 20
Requête en Français
Exemple :
Nom du pilote prénommé Antoine ? Dupuis
PRENOM = ‘Antoine’
Démarche :
1. tables (relations) mises en jeu
2. attributs
3. conditions de filtrage
valeurs imposées aux attributs des occurrences
21
Requête en SQL
Définition
3 parties (SFW)
Select <liste attributs à afficher résultat>
From <listes tables>
Where <condition de filtrage des occurrences>;
22
Requête en SQL
Exemple
En Français :
Nom du pilote prénommé Antoine ?
Traduction SQL :
Select pilote.nom
From pilote
Where pilote.prenom = ‘Antoine’;
23
Requête en SQL
Execution par SGBD
Select pilote.nom
From pilote
Where pilote.prenom = ‘Antoine’ ;
RELATION_REP
nom
Dupuis
24
Requête en SQL
Traitement des Requêtes par SGBD
1. Choix des tables
2. Sélection des occurrences
3. Projection des attributs
Select pilote.nom
From pilote
Where pilote.prenom = ‘Antoine’ ;
25
Traitement des Requêtes
1. Choix des Tables
VOL
numvol depart arrivee numav numpil jdep hdep jarr harr
V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
V0002 Londres Moscou A0003 P0001 15/05/99 10:30 15/05/99 17:00
V0003 Berlin Madrid A0002 P0003 15/05/99 11:15 15/05/99 18:00
V0004 Londres Madrid A0004 P0006 16/05/99 06:20 16/05/99 09:30
V0005 Bruxelles Rome A0006 P0005 16/05/99 10:00 16/05/99 15:10
V0006 Berlin Amsterdam A0005 P0001 16/05/99 14:30 16/05/99 17:00
V0007 Paris Bruxelles A0001 P0002 16/05/99 18:00 16/05/99 20:00
V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 21:30
PILOTE
numpilote nom prenom
Select pilote.nom P0001 Dupuis Antoine
From pilote P0002 Simon Georges
P0003 François Luc
Where pilote.prenom = ‘Antoine’; P0004 André Georges
P0005 Arthur Louis
P0006 Mathieu François
AVION
numavion type cap
A0001 Boeing 747 420
A0002 Airbus 320 300
A0003 Airbus 300 280
A0004 Boeing 737 250
A0005 DC 10 120
A0006 Boeing 747 26
410
Traitement des Requêtes
2. Sélection des occurrences
Select pilote.nom
From pilote
Where pilote.prenom = ‘Antoine’;
numpilote nom prenom
P0001 Dupuis Antoine
P0002 Simon Georges
P0003 François Luc
P0004 André Georges
P0005 Arthur Louis
P0006 Mathieu François 27
Traitement des Requêtes (3)
3. Projection des attributs
Select pilote.nom
From pilote
Where pilote.prenom = ‘Antoine’;
numpilote nom prenom
P0001 Dupuis Antoine
28
Traitement des Requêtes (4)
Résultat
Select pilote.nom
From pilote
Where pilote.prenom = ‘Antoine’
nom
Dupuis
29
Plan
I - Définitions
II - Modèle relationnel
III- Langage SQL
définition
un exemple de requête et traitement
requêtes typiques
Projection
Sélection
jointure
30
Requêtes typiques
Projection
R1 : Nom et prénom de tous les pilotes ?
Select pilote.nom, pilote.prenom
From pilote
Where nom prenom
Dupuis Antoine
Simon Georges
François Luc
André Georges
Arthur Louis
Mathieu François
32
Requêtes typiques
Sélection (1)
R2 : Attributs des pilotes de prénom Georges?
Select *
From pilote
Where pilote.prenom=‘Georges’
numpilote nom prenom
P0002 Simon Georges
P0004 André Georges
33
Conditions élémentaires (1)
Syntaxe : <attribut> <Opérateur> <valeur>
Valeur
nombre : 12.6
mots : ‘ Georges ’
dates : { d ‘1999-05-15 ’ }
Opérateurs de comparaisons
=, <, <=, >, >=, <>
Conditions élémentaires :
pilote.prenom = ‘ Georges ’
avion.cap > 300
34
Conditions élémentaires (1)
Trouver les erreurs
1. vol.depart = "Londres"
2. vol.numpil = P0002
3. avion.cap < '300'
4. avion.type = 'AIRBUS 300'
5. avion.type = 'Airbus300'
6. vol.jdep > {d 1999-05-15}
7. vol.numavion = 'A0002'
8. avions.numavion = 'A0002'
9. vol.numav ≠ 'A0002'
35
Conditions élémentaires (1)
Trouver les erreurs
vol.depart = "Londres"
vol.depart = 'Londres'
36
Conditions élémentaires (1)
Trouver les erreurs
vol.numpil = P0002
vol.numpil = 'P0002'
37
Conditions élémentaires (1)
Trouver les erreurs
avion.cap < '300'
avion.cap < 300
38
Conditions élémentaires (1)
Trouver les erreurs
avion.type = 'AIRBUS 300'
avion.type = 'Airbus 300'
39
Conditions élémentaires (1)
Trouver les erreurs
avion.type = 'Airbus300'
avion.type = 'Airbus 300'
40
Conditions élémentaires (1)
Trouver les erreurs
vol.jdep={d 1999-05-15}
vol.jdep={d '1999-05-15'}
41
Conditions élémentaires (1)
Trouver les erreurs
vol.numavion = 'A0002'
vol.numav = 'A0002'
42
Conditions élémentaires (1)
Trouver les erreurs
avions.numavion = 'A0002'
avion.numavion = 'A0002'
43
Conditions élémentaires (1)
Trouver les erreurs
vol.numav ≠ 'A0002'
vol.numav <> 'A0002'
44
Conditions composées (2)
Combinaisons logiques :
AND :
vol.depart = ‘Londres’ And vol.arrivee = ‘Madrid’
Question :
numéro des vols qui vérifient cette condition.
OR :
avion.type = ‘Airbus 300’ Or avion.type = ‘Airbus 200’
Question :
numéro des avions qui vérifient cette condition.
45
Conditions composées (3)
Vols pour Madrid ou Rome
vol.arrivee = ‘Madrid’ Or vol.arrivee = ‘Rome’
Avions de capacité entre 200 et 300
avion.cap >= 200 And avion.cap <= 300
Vols de Paris vers Londres ou Berlin
vol.depart = ‘Paris’ And
( vol.arrivee = ‘Londres’ Or vol.arrivee = ‘Berlin’ )
46
Requêtes typiques (2)
Sélection
R3 ’ : Attributs des vols décollant pour Madrid le 15/05/99 ?
Select *
From vol
Where vol.arrivee=‘Madrid’
And vol.jdep={d ‘1999-05-15’}
numvol depart arrive numav numpil jdep hdep jarr harr
e
V0003 Berlin Madrid A0002 P0003 15/05/99 11:15 15/05/99 18:00
47
Requêtes typiques
Jointure
R6 ’ : Nom du pilote du vol V0001 ?
numvol depart arrivee numav numpil jdep hdep jarr harr
V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
V0002 Londres Moscou A0003 P0001 15/05/99 10:30 15/05/99 17:00
V0003 Berlin Madrid A0002 P0003 15/05/99 11:15 15/05/99 18:00
... ... ... ... ... ... ... ... ...
référence numpilote nom prenom
P0001 Dupuis Antoine
P0002 Simon Georges
P0003 François Luc
P0004 André Georges
P0005 Arthur Louis
P0006 Mathieu François 48
Schéma de BDD
Schéma des relations + références
numvol depart arrivee numav numpil jdep hdep jarr harr
V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
V0002 Londres Moscou A0003 P0001 15/05/99 10:30 15/05/99 17:00
V0003 Berlin Madrid A0002 P0003 15/05/99 11:15 15/05/99 18:00
... ... ... ... ... ... ... ... ...
numavion type cap numpilote nom prenom
A0001 Boeing 747 420 P0001 Dupuis Antoine
A0002 Airbus 320 300 P0002 Simon Georges
A0003 Airbus 300 280 P0003 François Luc
A0004 Boeing 737 250 P0004 André Georges
A0005 DC 10 120 P0005 Arthur Louis
A0006 Boeing 747 410 P0006 Mathieu François
49
Requêtes typiques
Jointure naturelle
R5 : Attributs des vols et des pilotes des vols?
Select *
From pilote, vol
Where pilote.numpilote = vol.numpil
numpilote nom prenom numvol depart arrivee numav numpil jdep hdep jarr harr
P0002 Simon Georges V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
P0001 Dupuis Antoine V0002 Londres Moscou A0003 P0001 15/05/99 10:30 15/05/99 17:00
P0003 François Luc V0003 Berlin Madrid A0002 P0003 15/05/99 11:15 15/05/99 18:00
P0006 Mathieu François V0004 Londres Madrid A0004 P0006 16/05/99 06:20 16/05/99 09:30
P0005 Arthur Louis V0005 Bruxelles Rome A0006 P0005 16/05/99 10:00 16/05/99 15:10
P0001 Dupuis Antoine V0006 Berlin Amsterdam A0005 P0001 16/05/99 14:30 16/05/99 17:00
P0002 Simon Georges V0007 Paris Bruxelles A0001 P0002 16/05/99 18:00 16/05/99 20:00
P0003 François Luc V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 50
21:30
Requêtes typiques
Produit cartésien
Select *
From pilote, vol Page 4
numpilote nom prenom numvol depart arrivee numav numpil jdep hdep jarr harr
P0001 Dupuis Antoine V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
P0002 Simon Georges V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
P0003 François Luc V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
P0004 André Georges V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
P0005 Arthur Louis V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
P0006 Mathieu François V0001 Paris San Francisco A0001 P0002 15/05/99 10:00 16/05/99 09:30
... ... ... ... ... ... ... ... ... ... ... ...
P0001 Dupuis Antoine V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 21:30
P0002 Simon Georges V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 21:30
P0003 François Luc V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 21:30
P0004 André Georges V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 21:30
P0005 Arthur Louis V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 21:30
P0006 Mathieu François V0008 New York Paris A0001 P0003 17/05/99 03:00 17/05/99 21:30
51
Requêtes typiques
Jointure
NE PAS OUBLIER
CONDITION DE JOINTURE
2 tables 1 condition de jointure
3 tables 2 conditions de jointure
52
Encore des requêtes
R6’ : Nom du pilote du vol V0001 ?
Select pilote.nom
From pilote, vol
Where pilote.numpilote = vol.numpil
And vol.numvol = ‘V0001’
nom
Simon
53
Encore des requêtes
R8 : Numéro des vols, type et capacité des
avions, et nom de leurs pilotes ?
Select vol.numvol, avion.type,
avion.cap, pilote.nom
From pilote, vol, avion
Where pilote.numpilote = vol.numpil
And vol.numav = avion.numavion
54
Encore des requêtes
numvol type cap nom
V0001 Boeing 747 420 Simon
V0002 Airbus 300 280 Dupuis
V0003 Airbus 320 300 François
V0004 Boeing 737 250 Mathieu
V0005 Boeing 747 410 Arthur
V0006 DC 10 120 Dupuis
V0007 Boeing 747 420 Simon
V0008 Boeing 747 420 François
55
Encore des requêtes
R8 : Numéro, type d’avion, capacités et nom des pilotes
des vols?
Select vol.numvol, avion.type, avion.cap, pilote.nom
From pilote, vol, avion
Where pilote.numpilote=vol.numpil And
vol.numav=avion.numavion
numvol type cap nom
V0001 Boeing 747 420 Simon
V0002 Airbus 300 280 Dupuis
V0003 Airbus 320 300 François
V0004 Boeing 737 250 Mathieu
V0005 Boeing 747 410 Arthur
V0006 DC 10 120 Dupuis
V0007 Boeing 747 420 Simon
V0008 Boeing 747 420 François
56