Énoncé de l'exercice

1. Crée une base de données appelée boutique.
2. Crée une table categorie avec ces colonnes :
- id_categorie : entier, clé primaire, auto-incrémentée
- nom : texte (max 100), obligatoire, unique
- description : texte long, facultatif
- date_creation : DATETIME, valeur par défaut date et heure actuelles
3. Crée une table produit avec ces colonnes :
- id_produit : entier, clé primaire, auto-incrémentée
- nom : texte (max 150), obligatoire
- prix : décimal (10,2), obligatoire, doit être strictement positif
- quantite_stock : entier, valeur par défaut 0, ne peut pas être négative
- date_ajout : DATETIME, valeur par défaut date et heure actuelles
- id_categorie : entier, clé étrangère vers categorie(id_categorie), obligatoire

Solution proposée

-- Création de la base de données
CREATE DATABASE IF NOT EXISTS boutique;

-- Utilisation de la base
USE boutique;

-- Table catégorie
CREATE TABLE categorie (
  id_categorie INT AUTO_INCREMENT,                -- Identifiant unique auto-incrémenté
  nom VARCHAR(100) NOT NULL UNIQUE,                -- Nom obligatoire, unique
  description TEXT,                                -- Description facultative
  date_creation DATETIME DEFAULT CURRENT_TIMESTAMP, -- Date de création, valeur par défaut la date et l'heure actuelles
  
  PRIMARY KEY (id_categorie),                      -- Clé primaire
);

-- Table produit
CREATE TABLE produit (
  id_produit INT AUTO_INCREMENT,                   -- Identifiant unique auto-incrémenté
  nom VARCHAR(150) NOT NULL,                        -- Nom obligatoire
  prix DECIMAL(10,2) NOT NULL CHECK (prix > 0),   -- Prix obligatoire, strictement positif
  quantite_stock INT DEFAULT 0 CHECK (quantite_stock >= 0), -- Quantité en stock, >= 0 par défaut 0
  date_ajout DATETIME DEFAULT CURRENT_TIMESTAMP,   -- Date d’ajout, valeur par défaut date courante
  id_categorie INT NOT NULL,                        -- Référence obligatoire à une catégorie
  
  PRIMARY KEY (id_produit),                         -- Clé primaire
  
  CONSTRAINT fk_categorie FOREIGN KEY (id_categorie) REFERENCES categorie(id_categorie) ON DELETE RESTRICT ON UPDATE CASCADE,
);