Chapitre 16Projet SunuShop

Projet final — SunuShop complet

Schéma relationnel récapitulatif (7 tables). Récapitulatif de TOUTES les commandes SQL. Checklist complète. Examen final : 12 questions métier à résoudre en SQL pur. La suite : PHP + PDO, Laravel + Eloquent, PostgreSQL.

Concepts Théoriques

Ce dernier chapitre est votre bilan. Vous avez conçu, rempli, interrogé, optimisé et sécurisé la base de données d'une boutique e-commerce complète, avec des données sénégalaises réalistes, en 16 chapitres progressifs.

Le schéma relationnel complet

9 tables liées :

  • categories (1) → (N) products — une catégorie a plusieurs produits
  • products (N) ↔ (N) tags via product_tag — tags multiples par produit
  • customers (1) → (N) orders — un client a plusieurs commandes
  • orders (1) → (N) order_items — une commande a plusieurs lignes
  • products (1) → (N) order_items — un produit dans plusieurs commandes
  • products (1) → (N) reviews — avis clients
  • customers (1) → (N) reviews — un client laisse des avis
  • orders (1) → (N) payments — paiements par commande

Récapitulatif SQL complet

DDL : CREATE DATABASE, CREATE TABLE (PK, FK, AUTO_INCREMENT, NOT NULL, DEFAULT, UNIQUE, CHECK, ENUM), ALTER TABLE (ADD, DROP, MODIFY, CHANGE), DROP TABLE, CREATE INDEX, CREATE VIEW

DML : SELECT (WHERE, AND/OR/NOT, IN, BETWEEN, LIKE, IS NULL, ORDER BY, LIMIT, OFFSET, DISTINCT, AS), INSERT INTO VALUES (multi-lignes, ON DUPLICATE KEY), UPDATE SET WHERE, DELETE FROM WHERE, TRUNCATE

Transactions : START TRANSACTION, COMMIT, ROLLBACK — garantir l'atomicité des opérations multi-tables

Jointures : INNER JOIN, LEFT JOIN, alias, multi-tables, GROUP_CONCAT

Agrégation : COUNT, COUNT(DISTINCT), SUM, AVG, MIN, MAX, GROUP BY, HAVING

Sous-requêtes : dans WHERE (valeur, IN, NOT IN, corrélée), dans FROM, EXISTS/NOT EXISTS

Fonctions : CONCAT, UPPER, LOWER, TRIM, SUBSTRING, REPLACE, LEFT, RIGHT, LENGTH, DATE_FORMAT, NOW, CURDATE, DATEDIFF, TIMESTAMPDIFF, DATE_ADD, YEAR/MONTH/DAY, ROUND, CEIL, FLOOR, FORMAT, CASE WHEN, COALESCE, IFNULL

Administration : CREATE USER, GRANT, REVOKE, SHOW INDEX, EXPLAIN, mysqldump

La suite du parcours

PHP + PDO — Connecter SunuShop à un site web. Vos requêtes SQL sont exécutées depuis PHP avec des requêtes préparées (protection injection SQL). Le SQL ne change pas — il est juste envoyé depuis du code.

Laravel + Eloquent — Le même SQL en orienté objet : Product::where('category_id', 1)->where('is_active', true)->orderBy('price', 'desc')->paginate(10) génère exactement le SELECT que vous savez écrire. Parce que vous connaissez le SQL, vous comprendrez ce qu'Eloquent fait et saurez l'optimiser.

PostgreSQL — Un SGBD plus avancé : JSON natif, full-text search, CTE (Common Table Expressions), window functions (RANK, ROW_NUMBER, LAG/LEAD), meilleure conformité SQL. Pour les projets professionnels de grande envergure.