Présentationpar DevBlog10 diapositives
SQL et modélisation de données
Tables, clés, jointures, index et transactions : les bases pour concevoir un schéma solide et écrire des requêtes efficaces.
- #sql
- #base-de-donnees
- #presentation
SQL et modélisation de données
Un bon schéma évite la moitié des bugs.
Le modèle relationnel
Les données vivent dans des tables, reliées par des clés.
erDiagram
AUTEUR ||--o{ ARTICLE : ecrit
ARTICLE }o--o{ TAG : porteUn auteur écrit plusieurs articles ; un article porte plusieurs tags.
Créer une table
CREATE TABLE auteur (
id SERIAL PRIMARY KEY,
nom TEXT NOT NULL,
email TEXT NOT NULL UNIQUE
);
CREATE TABLE article (
id SERIAL PRIMARY KEY,
titre TEXT NOT NULL,
publie_le DATE,
auteur_id INTEGER NOT NULL REFERENCES auteur(id)
);Les contraintes protègent les données à la source.
Interroger
SELECT titre, publie_le
FROM article
WHERE publie_le >= '2026-01-01'
ORDER BY publie_le DESC
LIMIT 10;Les jointures
SELECT a.titre, u.nom
FROM article a
JOIN auteur u ON u.id = a.auteur_id;| Type | Résultat |
|---|---|
INNER JOIN | Lignes présentes des deux côtés |
LEFT JOIN | Toutes celles de gauche, même sans correspondance |
Agréger
SELECT u.nom, COUNT(*) AS nb_articles
FROM article a
JOIN auteur u ON u.id = a.auteur_id
GROUP BY u.nom
HAVING COUNT(*) > 3;WHERE filtre les lignes, HAVING filtre les groupes.
Les index
CREATE INDEX idx_article_publie_le ON article (publie_le);- Accélèrent la lecture
- Ralentissent un peu l'écriture
- À poser sur les colonnes filtrées, triées ou jointes
EXPLAINmontre le plan d'exécution
Les transactions
BEGIN;
UPDATE compte SET solde = solde - 100 WHERE id = 1;
UPDATE compte SET solde = solde + 100 WHERE id = 2;
COMMIT;Tout réussit, ou rien : c'est l'atomicité.
Sécurité : requêtes paramétrées
// ❌ Injection possible
db.query(`SELECT * FROM auteur WHERE id = '${id}'`);
// ✅ Paramétrée
db.query("SELECT * FROM auteur WHERE id = $1", [id]);À retenir
- Modélisez d'abord, codez ensuite
- Laissez la base faire respecter les contraintes
- Indexez avec méthode, paramétrez toujours
1 / 10
Flèches ← → pour naviguer · F pour le plein écran