Voir tout
← Retour

Base de donnée (BDD)

Une base de données, c’est ce qui rend ton projet fiable : stockage, recherche, cohérence, performance et sécurité. Dans cet article, tu vas comprendre à quoi ça sert, comment la mettre en place, et surtout comment créer un utilisateur limité à une seule base (MySQL/MariaDB + bonus PostgreSQL), avec des exemples prêts à l’emploi.
SQL 23/02/2026
Base de donnée (BDD)

À quoi sert une base de données ?

Une base de données sert à stocker, organiser, retrouver et protéger des informations. C’est le “coffre-fort” de ton application : utilisateurs, articles, commandes, logs, messages… tout ce qui doit rester fiable et durable.

ℹ️ En 1 phrase
Une base de données permet de gérer des données de façon structurée, performante et sécurisée, même avec plusieurs utilisateurs en même temps.

Ce qu’elle t’apporte concrètement

  • Persistance : les données restent après redémarrage
  • Recherche rapide : filtres, tri, index, pagination
  • Cohérence : contraintes (NOT NULL, UNIQUE, clés étrangères)
  • Concurrence : plusieurs accès simultanés sans corruption
  • Sécurité : comptes, droits, audit, chiffrement (selon config)
  • Backup & restauration : indispensable en production

SQL ou NoSQL : que choisir ?

Dans la majorité des projets “classiques” (gestion, contenu, e-commerce, admin, API), un SGBD relationnel (SQL) est le meilleur choix.

💡 Règle simple
Si tu as des relations (utilisateur → articles → commentaires) et besoin d’intégrité, prends SQL (MySQL/MariaDB/PostgreSQL).

SQL (relationnel)

  • ✅ Tables, relations, contraintes (intégrité forte)
  • ✅ Transactions (cohérence)
  • ✅ Très adapté aux données structurées

NoSQL (documents/clé-valeur…)

  • ✅ Flexible (souvent JSON), utile pour certains cas spécifiques
  • ⚠️ Moins naturel pour relations complexes / intégrité stricte

Comment mettre en place une base de données (méthode propre)

1) Définir le besoin

  • Quelles entités ? (ex : utilisateurs, articles, rôles)
  • Quels liens ? (ex : un article appartient à une section)
  • Quelles règles ? (email unique, statut, dates)
  • Quelle volumétrie ? (100 lignes, 100 000, 10M ?)

2) Choisir un SGBD et un encodage standard

Pour MySQL/MariaDB : préfère InnoDB (transactions + clés étrangères) et utf8mb4 (emoji/accents OK).

3) Créer la base

-- MySQL / MariaDB
CREATE DATABASE appdb
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

4) Créer des tables “propres” (contraintes + index)

Exemple simple : users, sections, articles.

-- Table utilisateurs
CREATE TABLE appdb.users (
  id         INT UNSIGNED NOT NULL AUTO_INCREMENT,
  email      VARCHAR(190) NOT NULL,
  nom        VARCHAR(120) NOT NULL,
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  UNIQUE KEY uk_users_email (email)
) ENGINE=InnoDB;

-- Table sections
CREATE TABLE appdb.sections (
  id         INT UNSIGNED NOT NULL AUTO_INCREMENT,
  titre      VARCHAR(140) NOT NULL,
  actif      TINYINT(1) NOT NULL DEFAULT 1,
  PRIMARY KEY (id)
) ENGINE=InnoDB;

-- Table articles (liée à users + sections)
CREATE TABLE appdb.articles (
  id         INT UNSIGNED NOT NULL AUTO_INCREMENT,
  section_id INT UNSIGNED NOT NULL,
  auteur_id  INT UNSIGNED NOT NULL,
  titre      VARCHAR(200) NOT NULL,
  contenu    MEDIUMTEXT NOT NULL,
  statut     ENUM('brouillon','publie','pause','archive') NOT NULL DEFAULT 'brouillon',
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME NULL,
  PRIMARY KEY (id),
  KEY idx_articles_section (section_id),
  KEY idx_articles_auteur (auteur_id),
  CONSTRAINT fk_articles_sections
    FOREIGN KEY (section_id) REFERENCES sections(id)
    ON UPDATE CASCADE ON DELETE RESTRICT,
  CONSTRAINT fk_articles_users
    FOREIGN KEY (auteur_id) REFERENCES users(id)
    ON UPDATE CASCADE ON DELETE RESTRICT
) ENGINE=InnoDB;
⚠️ Attention
Les clés étrangères protègent l’intégrité : tu ne peux pas référencer un auteur ou une section inexistante.

5) Prévoir le minimum vital en production

  • Sauvegardes régulières
  • Moindre privilège (un compte applicatif limité)
  • Logs / monitoring (au moins erreurs et espace disque)
  • Migrations (évolution du schéma proprement)

🔒
Accès complet réservé aux membres
Connecte-toi pour lire l’article en entier.
Sections
Clique sur un rond pour ouvrir le dernier article publié de la section.
Tous les articles