Logo GATS

BASES DE DONNÉES

Fondamentaux et applications pour les SIG

← Retour 2 / 12

📋 Sommaire

  • Introduction aux bases de données
  • Modèle relationnel - Tables et relations
  • Clés et contraintes - Intégrité des données
  • Langage SQL - Requêtes de base
  • Bases de données spatiales - PostGIS
  • Bonnes pratiques - Conception et optimisation
Base de données
← Retour 3 / 12

💾 Qu'est-ce qu'une Base de Données ?

Définition

Une base de données est un ensemble organisé de données structurées, stockées et accessibles électroniquement.

Avantages :

  • Organisation - Données structurées et cohérentes
  • Partage - Accès multi-utilisateurs
  • Sécurité - Contrôle des accès
  • Intégrité - Contraintes et validations
  • Performance - Requêtes optimisées
❌ Fichiers épars ✓ BDD structurée SGBD Système de Gestion de BDD
← Retour 4 / 12

📊 Types de Bases de Données

📋

Relationnelle (SQL)

Tables avec lignes et colonnes

PostgreSQL, MySQL, SQLite

📄

Document (NoSQL)

Documents JSON/BSON flexibles

MongoDB, CouchDB

🌐

Graphe

Nœuds et relations

Neo4j, ArangoDB

🗺️

Spatiale

Données géographiques

PostGIS, SpatiaLite

🔑

Clé-Valeur

Paires simples

Redis, DynamoDB

📈

Séries temporelles

Données horodatées

InfluxDB, TimescaleDB

← Retour 5 / 12

📋 Le Modèle Relationnel

Concepts clés

  • Table (Relation) - Ensemble de données sur un sujet
  • Ligne (Tuple) - Un enregistrement
  • Colonne (Attribut) - Une propriété
  • Clé primaire - Identifiant unique
  • Clé étrangère - Lien vers autre table

Exemple : Table VILLAGES

id nom population region_id
1 Thiès 450000 2
2 Mbour 232000 2
3 Saint-Louis 209000 3
Clé primaire (PK) Clé étrangère (FK) REGIONS 🔑 id nom code VILLAGES 🔑 id nom population 🔗 region_id 1:N INFRASTRUCTURES 🔑 id type 🔗 village_id
← Retour 6 / 12

🔐 Clés et Contraintes d'Intégrité

🔑 Clé Primaire (PRIMARY KEY)

  • Identifiant unique de chaque ligne
  • Ne peut jamais être NULL
  • Une seule par table
  • Souvent un ID auto-incrémenté

🔗 Clé Étrangère (FOREIGN KEY)

  • Référence une clé primaire d'une autre table
  • Crée une relation entre tables
  • Assure l'intégrité référentielle
  • Plusieurs possibles par table

✅ Autres Contraintes

  • NOT NULL - Valeur obligatoire
  • UNIQUE - Valeur unique dans la colonne
  • CHECK - Condition de validation
  • DEFAULT - Valeur par défaut

📏 Règles de Normalisation

  • 1NF - Atomicité des valeurs
  • 2NF - Dépendance à la clé entière
  • 3NF - Pas de dépendance transitive
← Retour 7 / 12

💻 Langage SQL - Fondamentaux

Requêtes de lecture (SELECT)

-- Sélectionner toutes les colonnes SELECT * FROM villages; -- Sélection avec filtre SELECT nom, population FROM villages WHERE population > 100000; -- Jointure entre tables SELECT v.nom, r.nom AS region FROM villages v JOIN regions r ON v.region_id = r.id;

📝 Types de requêtes SQL

SELECT Lire des données
INSERT Ajouter des données
UPDATE Modifier des données
DELETE Supprimer des données
← Retour 8 / 12

💻 SQL - Opérations CRUD

INSERT - Créer

INSERT INTO villages (nom, population, region_id) VALUES ('Kaolack', 233000, 4);

UPDATE - Modifier

UPDATE villages SET population = 460000 WHERE nom = 'Thiès';

DELETE - Supprimer

DELETE FROM villages WHERE id = 5;

Agrégations

SELECT r.nom, COUNT(*) AS nb_villages, SUM(v.population) AS pop_totale FROM villages v JOIN regions r ON v.region_id = r.id GROUP BY r.nom ORDER BY pop_totale DESC;

Fonctions utiles

COUNT, SUM, AVG, MIN, MAX

GROUP BY, HAVING, ORDER BY

← Retour 9 / 12

🗺️ PostGIS - Bases de Données Spatiales

Qu'est-ce que PostGIS ?

Extension spatiale de PostgreSQL permettant de stocker et manipuler des données géographiques.

Types de géométries :

  • POINT - Localisation (GPS)
  • LINESTRING - Chemins, routes
  • POLYGON - Parcelles, zones
  • MULTIPOINT/LINE/POLYGON
-- Créer une table avec géométrie CREATE TABLE forages ( id SERIAL PRIMARY KEY, nom VARCHAR(100), geom geometry(POINT, 4326) );
PostgreSQL + 🗺️ PostGIS BDD Spatiale complète
← Retour 10 / 12

🔧 Fonctions Spatiales PostGIS

Fonction Description Exemple
ST_Distance Distance entre géométries ST_Distance(a.geom, b.geom)
ST_Buffer Zone tampon autour d'une géométrie ST_Buffer(geom, 1000)
ST_Intersects Test d'intersection ST_Intersects(a.geom, b.geom)
ST_Within Test de contenance ST_Within(point, polygon)
ST_Area Calcul de surface ST_Area(geom)
ST_Transform Reprojection ST_Transform(geom, 32628)
-- Trouver les forages dans un rayon de 5km d'un village SELECT f.nom, ST_Distance(f.geom, v.geom) AS distance FROM forages f, villages v WHERE v.nom = 'Thiès' AND ST_DWithin(f.geom, v.geom, 5000);
← Retour 11 / 12

✅ Bonnes Pratiques

📐 Conception

  • Bien définir les relations entre tables
  • Utiliser des noms explicites
  • Appliquer la normalisation
  • Documenter le schéma

⚡ Performance

  • Créer des index sur les colonnes recherchées
  • Index spatial GIST pour géométries
  • Éviter les SELECT *
  • Optimiser les jointures

🔒 Sécurité

  • Gérer les droits d'accès
  • Utiliser des requêtes préparées
  • Sauvegardes régulières
  • Chiffrer les données sensibles

🗺️ Données spatiales

  • Toujours définir le SRID
  • Utiliser le bon système de coordonnées
  • Valider les géométries (ST_IsValid)
  • Index GIST obligatoire
← Retour 12 / 12

📌 Récapitulatif

Points clés à retenir

  • Les BDD relationnelles organisent les données en tables liées
  • Clés primaires et étrangères assurent l'intégrité
  • SQL est le langage standard (SELECT, INSERT, UPDATE, DELETE)
  • PostGIS ajoute les capacités spatiales à PostgreSQL
  • Les bonnes pratiques garantissent performance et sécurité

🚀 Pour aller plus loin

Pratiquer avec QGIS + PostGIS pour manipuler des données géographiques réelles.

🗺️ PostGIS

Merci de votre attention !