Chapitre 7Projet DevBlog

MySQL — Créer et structurer la base de données

Tables, colonnes, clés primaires, clés étrangères et SQL de base

Concepts Théoriques

Jusqu'ici, les articles de DevBlog étaient stockés dans un tableau PHP — ils disparaissent à chaque rechargement. Pour des données persistantes, vous avez besoin d'une base de données. MySQL est le système de base de données le plus utilisé avec PHP.

Qu'est-ce qu'une base de données relationnelle ?

Une base de données relationnelle stocke les données dans des tables (comme des feuilles Excel). Chaque table a des colonnes (les champs) et des lignes (les enregistrements). Les tables sont liées entre elles par des clés étrangères — c'est le "relationnel".

Exemple pour DevBlog :

  • Table articles : id, title, slug, content, category_id, user_id, created_at
  • Table categories : id, name, slug, color
  • Table users : id, name, email, password, role
  • Table comments : id, article_id, user_name, email, content, created_at

La colonne category_id dans articles pointe vers l'id dans categories — c'est une relation.

phpMyAdmin

phpMyAdmin est une interface web pour gérer MySQL, installée avec XAMPP. Accédez-y à http://localhost/phpmyadmin. Vous pouvez y créer des bases, des tables, et exécuter du SQL.

Types de colonnes

  • INT — nombre entier (id, compteur, âge)
  • VARCHAR(255) — texte court avec une longueur max (titre, nom, email, slug)
  • TEXT — texte long sans limite pratique (contenu d'un article)
  • DATETIME — date et heure (2026-03-21 14:30:00)
  • BOOLEAN / TINYINT(1) — vrai/faux (0 ou 1)
  • DECIMAL(10,2) — nombre décimal précis (prix)
  • ENUM('val1','val2') — une valeur parmi une liste prédéfinie

Clé primaire et auto-increment

Chaque table DOIT avoir une clé primaire (PRIMARY KEY) — une colonne qui identifie de manière unique chaque ligne. En général, c'est une colonne id de type INT avec AUTO_INCREMENT : MySQL attribue automatiquement le prochain numéro.

Clés étrangères (relations)

Une clé étrangère lie une table à une autre. category_id INT REFERENCES categories(id) signifie "cette colonne contient l'id d'une catégorie existante". La base de données refuse d'insérer un article avec un category_id qui n'existe pas — c'est l'intégrité référentielle.

SQL de base — les 4 opérations CRUD

  • CREATE : INSERT INTO articles (title, content) VALUES ('Mon titre', 'Mon contenu')
  • READ : SELECT * FROM articles WHERE published = 1 ORDER BY created_at DESC
  • UPDATE : UPDATE articles SET title = 'Nouveau titre' WHERE id = 1
  • DELETE : DELETE FROM articles WHERE id = 1

> Bonne pratique : Ajoutez TOUJOURS une clause WHERE sur UPDATE et DELETE. Sans WHERE, vous modifiez ou supprimez TOUTES les lignes de la table.