Académique Documents
Professionnel Documents
Culture Documents
d'information géographique
201 Séance 2-2
M o d è l e s d e d o n n é s e t l a n ga ge
SQL
P ro fes s eu r : D r D are s KOUA M E
Version : 02/02/2023
OBJECTIFS DU COURS
• concevoir un modèle de données
• manipuler des outils de consultation
de données
11/05/2022 2
M3ES
CONTENU
Unité 2 : Introduction aux bases de données
Unité 3 : Modèle entité-association
Unité 4 : Modèle et bases de données relationnels
Unité 1 : Introduction au langage SQL
Unité 5 : Base de données spatiales
11/05/2022 3
M3ES
Ressources
chapitres 16 et 17 du livre sur les SIG de l'EPFL
Stéphane Joost, Marc Soutter, Fernand Kouamé et Amadou Sall. Systèmes d'Information
Géographique Partie 1
https://www.researchgate.net/publication/320979981_Systemes_d%27Information_Geogra
phique_1
11/05/2022 4
Introduction aux
M3ES bases de données
201 UNITÉ 2
M3ES
11/05/2022 6
M3ES
11/05/2022 7
M3ES
11/05/2022 8
M3ES
11/05/2022 9
M3ES
11/05/2022 10
Modèle entité-
M3ES association
201 UNITÉ 3
M3ES
11/05/2022 12
M3ES
11/05/2022 13
M3ES
11/05/2022 14
M3ES
11/05/2022 15
M3ES
11/05/2022 16
M3ES
11/05/2022 17
M3ES
Attributs
Un attribut (ou propriété) permet de décrire une entité. Un attribut peut être :
obligatoire ou facultatif
mono-valué ou multi-valué
simple ou composé
L’identifiant d’un type d’entité est une propriété (ou un ensemble de propriétés)
1
qui caractérise de manière unique chaque occurrence du type d’entité. C’est une
propriété obligatoire dans chaque entité.
2
11/05/2022 18
M3ES
Associations
La dimension (l’arité ou le degré) d’un type d’association est le nombre
d’occurrences d’entités concernées par une association de ce type
11/05/2022 19
M3ES
Associations
On définit la fonctionnalité du type d’association A d’après les cardinalités
maximum de X et Y pour A
un à un (1-1) : à toute occurrence de X ne correspond qu’une occurrence de Y et
réciproquement
un à plusieurs (1-n) : à toute occurrence de X correspondent plusieurs occurrences de Y et à
toute occurrence de Y une seule de X
plusieurs à plusieurs (m-n) : à toute occurrence de X correspondent plusieurs occurrences de 1
Y et réciproquement
11/05/2022 20
M3ES
(Source)
4
11/05/2022 21
M3ES
Exercices
Constuire un modèle E/A pour
représenter les données de l’enquête OD
représenter des accidents de la route, les usagers impliqués et leurs véhicules
11/05/2022 22
M3ES
Solution
11/05/2022 23
M3ES
Solution
11/05/2022 24
Modèle et bases de
M3ES données relationnels
201 UNITÉ 4
M3ES
Modèle relationnel
Proposé en 1970 par Edgar F. Codd (Prix Turing)
Il définit comment les données sont structurées (tables, clés, etc.)
Il fournit des opérateurs permettant de manipuler les données :
l’algèbre relationnelle
théorie fondée sur des notions mathématiques (théorie des ensembles, calcul des prédicats)
(voir notes)
1
SQL est un langage hybride partiellement inspiré de l’algèbre relationnelle
2
11/05/2022 26
M3ES
Modèle relationnel
Il est fondé sur le concept central de relation
Deux terminologies différentes sont utilisées
terminologie formelle : relation, attribut, n-uplet
terminologie informelle : table, colonne/champ, ligne (ou rangée)
11/05/2022 27
M3ES
Modèle relationnel
Le modèle relationnel peut être décrit par les trois aspects suivants :
l’aspect structure indique comment les données du modèle relationnel de BD sont
structurées
l’aspect intégrité spécifie les contraintes d’intégrité liées à la définition des données
l’aspect manipulation fournit les opérateurs permettant de manipuler les données définies
par les structures
Une base de données relationnelle (BDR) est définie par : 1
son schéma qui est fixe
son contenu ou extension qui varie dans le temps 2
11/05/2022 28
M3ES
11/05/2022 29
M3ES
Domaine
Chaque domaine d’une BDR est identifié par un nom
Un domaine peut être vu comme un type avec :
une spécification des valeurs admissibles
des opérateurs de comparaison
d’autres opérations définies sur le domaine
11/05/2022 30
M3ES
11/05/2022 31
M3ES
Exemple
Id Country Car MPG Weight Drive_Ratio Horsepower Displacement Cylinders
0U.S. Buick Estate Wagon 16.9 4.36 2.73 155 350 8
Ford Country Squire
1U.S. Wagon 15.5 4.054 2.26 142 351 8
Chevy Malibu
2U.S. Wagon 19.2 3.605 2.56 125 267 8
Chrysler LeBaron
3U.S. Wagon 18.5 3.94 2.45 150 360 8
4U.S. Chevette 30 2.155 3.7 68 98 4
5Japan Toyota Corona 27.5 2.56 3.05 95 134 4
6Japan Datsun 510 27.2 2.3 3.54 97 119 4
7U.S. Dodge Omni 30.9 2.23 3.37 75 105 4
8Germany Audi 5000 20.3 2.83 3.9 103 131 5 1
9Sweden Volvo 240 GL 17 3.14 3.5 125 163 6
10Sweden Saab 99 GLE 21.6 2.795 3.77 115 121 4
11France Peugeot 694 SL 16.2 3.41 3.58 133 163 6
12U.S.
Buick Century
Special 20.6 3.38 2.73 105 231 6
2
13U.S. Mercury Zephyr 20.8 3.07 3.08 85 200 6
14U.S. Dodge Aspen 18.6 3.62 2.71 110 225 6
15U.S. AMC Concord D/L 18.1 3.41 2.73 120 258 6 3
Chevy Caprice
16U.S. Classic 17 3.84 2.41 130 305 8
17U.S. Ford LTD 17.6 3.725 2.26 129 302 8
Mercury Grand
18U.S. Marquis 16.5 3.955 2.26 138 351 8 4
19U.S. Dodge St Regis 18.2 3.83 2.45 135 318 8
20U.S. Ford Mustang 4 26.5 2.585 3.08 88 140 4
https://archive.ics.uci.edu/ml/datasets/Auto+MPG
11/05/2022 32
M3ES
Exemple
Revenons aux données des pays: quel est le problème de la structure des
données ? Peut-on facilement ajouter de nouvelles données ?
11/05/2022 33
M3ES
Contrainte d’intégrité
Une contrainte d’intégrité est un énoncé invariant dans le temps qui doit
être satisfait par tous les états de la BDR
Une contrainte d’intégrité peut aussi porter sur deux états successifs de la BD
(contrainte de transition)
Une contrainte peut porter sur une ou plusieurs relations
1
11/05/2022 34
M3ES
Clé primaire
Dans une relation, on doit pouvoir identifier chaque n-uplet de manière unique :
ceci est possible grâce à la clé primaire de la relation qui prend un valeur unique
pour chaque n-uplet
Une clef primaire peut être constituée de plusieurs attributs et est alors appelée
clef primaire composite
L’intégrité d’entité exige que : 1
chaque relation possède une clé primaire déclarée (et une seule)
aucun composant de la clé primaire ne peut prendre la valeur “NULL”
2
11/05/2022 35
M3ES
Clé externe
Motivation : Pour faire référence, dans un n-uplet d’une relation R, à un n-uplet
d’une autre relation R’, on utilise la technique de clé externe. Pour cela, on
désigne dans R un ensemble d’attributs (appelé clé externe) qui fait référence à
la clé primaire de R’
Pour représenter une référence non existante, on utilise la valeur “NULL”
L’intégrité de référence exige que chaque valeur différente de “NULL” d’une clé 1
externe existe comme valeur de la clé primaire cible
2
11/05/2022 36
M3ES
11/05/2022 37
M3ES
Exercices
Construire le modèle relationnel pour les données de l’enquête OD et les
accidents de la route
11/05/2022 38
M3ES
Solution
11/05/2022 39
M3ES
Solution
11/05/2022 40
M3ES
11/05/2022 41
M3ES
11/05/2022 42
M3ES
11/05/2022 43
M3ES
11/05/2022 44
M3ES
Normalisation
Hypothèse relationnelle impose respect d’un certain nombre de conditions pour
pouvoir être appliquée. Ce respect doit être effectif dès la phase de conception.
Ces conditions sont appélées conditions de normalisation ou formes normales
(Normal Form, NF en anglais). Ces conditions reposent sur la notion de
dépendance fonctionnelle (DF) entre propriétés.
11/05/2022 45
M3ES
Normalisation
But : éviter la redondance de données au sein d’une même table, qui augmente
le risque de créer des anomalies (incohérences) lors de mises à jour
11/05/2022 46
M3ES
11/05/2022 47
M3ES
11/05/2022 48
M3ES
11/05/2022 49
M3ES
Exemple
Modifier la table suivante représentant des informations d’accidents de la route
pour qu’elle suive les trois formes normales :
3
(Procédez dans l’ordre des formes normales et cherchez les redondances)
4
11/05/2022 50
M3ES
Solution
11/05/2022 51
M3ES
Exercice
Veuillez modifier la table suivante pour qu’elle suive les trois formes normales :
11/05/2022 52
M3ES
Solution
11/05/2022 53
M3ES
Dénormalisation
Le résultat de la normalisation est une BD bien organisée qui devrait être facile à
maintenir
Mais cela peut résulter en des accès lents aux données (recombinaison des
données lors des requêtes)
“Dénormaliser” consiste à violer certaines formes normales pour que la BD
soient plus rapidement accessible ou pour des analyses 1
11/05/2022 54
M3ES Langage SQL
201 UNITÉ 1
M3ES
11/05/2022 56
M3ES
Le langage SQL
SQL = Structured Query Language
langage normalisé d’accès aux bases de données relationnelles
supporté (de façon essentielle mais différente) par la plupart des SGBD
plusieurs normes ANSI/ISO : SQL-86 (1986, 1989), SQL2 (1992), SQL3
(1999) puis SQL 2003, 2008 et 2011
Avantages :
1
simplicité d’utilisation
déclarativité : l’utilisateur décrit le résultat et l’optimiseur de requêtes se 2
charge de définir un plan d’exécution efficace 3
Remarque : SQL ne permet pas de formuler toutes les requêtes dont la
réponse peut être construite en utilisant un langage de programmation 4
traditionnel 5
11/05/2022 57
M3ES
11/05/2022 58
M3ES
11/05/2022 59
M3ES
11/05/2022 60
M3ES
Opérateurs
Égal =, différent <>, inférieur (ou égal) < <=, supérieur (ou égal) > >=
Négation d’une condition NOT
Intervalles BETWEEN <val1> AND <val2>
Énumération IN (<val1>,<val2>,...)
11/05/2022 61
M3ES
11/05/2022 62
M3ES
11/05/2022 63
M3ES
Table Accidents
CREATE TABLE Accidents (
id INTEGER PRIMARY KEY,
lieu VARCHAR(20),
date DATE,
heure TIME,
gravite CHAR
1
CHECK (gravite IN ("1","2","3","4","5","6")),
cout FLOAT); 2
11/05/2022 64
M3ES
Table Usagers
CREATE TABLE Usagers (
id INTEGER PRIMARY KEY,
nom VARCHAR(20),
sexe CHAR
CHECK (sexe IN ("h","f")),
datenaissance DATE);
1
11/05/2022 65
M3ES
Table Vehicules
CREATE TABLE Vehicules (
id INTEGER PRIMARY KEY,
marque VARCHAR(20),
modele VARCHAR(20),
type VARCHAR(20),
proprietaireID INTEGER,
1
FOREIGN KEY(proprietaireID) REFERENCES Usagers(id)
); 2
11/05/2022 66
M3ES
Table Implications
CREATE TABLE Implications (
accidentID INTEGER NOT NULL,
usagerID INTEGER NOT NULL,
vehiculeID INTEGER,
FOREIGN KEY(accidentID) REFERENCES Accidents(id),
FOREIGN KEY(usagerID) REFERENCES Usagers(id),
1
FOREIGN KEY(vehiculeID) REFERENCES Vehicules(id),
PRIMARY KEY(accidentID, usagerID) 2
);
3
Comment représenter si un usager impliqué dans un accident est le
4
conducteur ?
5
11/05/2022 67
M3ES
SQL
Fichier d’exemple de base de données d’accidents disponible sur
Teams
11/05/2022 68
M3ES
Exercice
Créer dans SQLitebrowser les tables pour l’enquête OD,
avec quelques attributs :
11/05/2022 69
M3ES
11/05/2022 70
M3ES
11/05/2022 71
M3ES
11/05/2022 72
M3ES
11/05/2022 73
M3ES
On peut supprimer une ou plusieurs lignes d’une table avec DELETE. Il est possible de spécifier
une condition 1
Exemple
2
DELETE FROM Accidents WHERE heure > "02:00:00";
3
11/05/2022 74
M3ES
Modification de lignes
On peut modifier une colonne dans une ou plusieurs lignes d’une table avec la
commande UPDATE
Une commande UPDATE permet de spécifier une condition
La commande effectue la modification demandée (SET) pour la (les) ligne(s) qui
vérifie(nt) la condition indiquée
1
Exemple
UPDATE Accidents SET cout = cout + 1500 2
WHERE gravite > 3;
3
11/05/2022 75
M3ES
11/05/2022 76
M3ES
11/05/2022 77
M3ES
Exercice
Créer une vue des accidents excluant les accidents les plus graves (6)
11/05/2022 78
M3ES
Exemple
Exemple 3
SELECT * FROM Usagers, Vehicules
WHERE Usagers.id=Vehicules.proprietaireID; 4
SELECT * FROM Usagers INNER JOIN Vehicules
ON Usagers.id=Vehicules.proprietaireID; 5
11/05/2022 79
M3ES
Exercice
Afficher toutes les données (inc. des usagers et véhicules) liées à un accident
11/05/2022 80
M3ES
11/05/2022 81
M3ES
Jointure gauche
Jointure gauche ou droite : extension de la jointure pour inclure les lignes de la
table de gauche ou de droite sans correspondances dans l’autre table
SELECT * FROM Usagers LEFT OUTER JOIN Vehicules
ON Usagers.id=Vehicules.proprietaireID;
11/05/2022 82
M3ES
Fonctions d’agrégation
{COUNT|SUM|MIN|MAX|AVG|VARIANCE|STDDEV}(<expr>)
La fonction renvoie une seule ligne (** indique que les valeurs à NULL ne sont pas prises en
compte)
COUNT(*) : nombre de lignes
COUNT(<col>) : nombre de valeurs de la colonne **
COUNT(DISTINCT<col>) : nombre de valeurs distinctes **
AVG(<col>) : moyenne des valeurs de la colonne ** 1
11/05/2022 83
M3ES
Les lignes sont regroupées selon les agrégats de valeurs correspondant à la liste
d’expressions spécifiée. Les fonctions d’agrégation éventuelles s’appliquent à
chaque groupe.
La clause SELECT ne peut contenir que des expressions de la liste donnée ou des 1
fonctions d’agrégation appliquées à d’autres expressions.
Ce type de requête renvoie autant de lignes de résultat que de groupes. 2
3
Exemples
SELECT lieu, MAX(cout) FROM Accidents 4
GROUP BY lieu;
5
11/05/2022 84
M3ES
Exercice
Afficher le nombre d’accidents et la gravité de l’accident le plus grave dans
chaque ville
Afficher le coût moyen des accidents par niveau de gravité (et par ville)
11/05/2022 85
M3ES
2
Exemple
SELECT gravite, AVG (cout) FROM Accidents 3
GROUP BY gravite
HAVING MAX(cout)<2000; 4
11/05/2022 86
M3ES
Comparer
SELECT gravite, AVG (cout) FROM Accidents
GROUP BY gravite
HAVING MAX(cout)<2000;
et
11/05/2022 87
M3ES
Sous-requêtes
Dans conditions WHERE (retour d’une seule valeur)
SELECT * FROM Accidents
WHERE cout >
(SELECT AVG(cout) FROM Accidents
WHERE lieu="Montreal");
SELECT * FROM Accidents
WHERE lieu IN
(SELECT lieu FROM Accidents WHERE gravite >2); 1
2
La condition EXISTS est vraie si la sous-requête retourne au moins une ligne
SELECT * FROM Vehicules V 3
WHERE EXISTS
(SELECT * FROM Usagers U 4
WHERE U.id=V.proprietaireID
AND U.sexe="h"); 5
11/05/2022 88
M3ES
11/05/2022 89
Bases de données
M3ES spatiales
201 Unité 5
M3ES
11/05/2022 91
M3ES
Fonctions spatiales
Ajout d’opérations (fonctions) spatiales : Reference List
Créer un point : MakePoint(col_X,col_Y,SRID)
Créer une ligne : MakeLine(Col_geom1,Col_geom2)
Sortir les coordonnées d’une géométrie de point :
X(Col_geom), Y(Col_geom)
Calculer la longueur d’une géométrie :
ST_Length(Col_geom) 1
Calculer la surface d’une géométrie : 2
ST_Area(Col_geom)
Créer un buffer : ST_Buffer(Col_geom,Valeur) 3
Changer le système de projection : 4
Transform(Col_geometry,Nouveau_SRID)
5
11/05/2022 92
M3ES
Fonctions spatiales
Ajout d’opérations (fonctions) spatiales : Reference List
geom3 = Intersection(geom1, geom2)
geom3 = Difference(geom1, geom2)
geom3 = GUnion(geom1, geom2)
geom3 = SymDifference(geom1, geom2)
1
11/05/2022 93
M3ES
Fonctions spatiales
Ajout d’opérations (fonctions) spatiales : Reference List
Égal Equals(geom1, geom2)
Intersecte Intersects(geom1, geom2), Crosses(geom1, geom2)
Adjacent Touches(geom1, geom2)
Contient Contains(geom1, geom2), Within(geom1,geom2)
1
Recouvre Overlaps(geom1, geom2)
2
11/05/2022 94
M3ES
Fonctions spatiales
Ajout d’opérations (fonctions) spatiales : Reference List
Ajouter une colonne avec des objets spatiaux :
AddGeometryColumn(table, geom, srid, geometry type,
dimension model)
Récupérer une colonne comme objet spatial :
RecoverGeometryColumn(table, geom, srid, geometry 1
type, dimension model)
2
Types de géométries
3
11/05/2022 95
M3ES
11/05/2022 96
M3ES
WHERE A.rueID=G.PK_UID 4
GROUP BY G.PK_UID 5
11/05/2022 97
M3ES
11/05/2022 98
M3ES Merci.
Nicolas Saunier et Dares KOUAME
201 nicolas.saunier@polymtl.ca ;
dares.kouame@ensea.ed.ci