Énoncé de l'exercice

1. Crée une base de données appelée bibliotheque.
2. Crée une table auteur avec ces colonnes :
- id_auteur : entier, clé primaire, auto-incrémentée
- nom : texte (max 100), obligatoire (NOT NULL)
- prenom : texte (max 100), obligatoire
- date_naissance : DATE, facultatif (peut être NULL)
- email : texte (max 150), unique
3. Crée une table livre avec ces colonnes :
- id_livre : entier, clé primaire, auto-incrémentée
- titre : texte (max 255), obligatoire (NOT NULL)
- annee_publication : entier positif obligatoire
- id_auteur : entier, clé étrangère vers auteur(id_auteur), obligatoire (NOT NULL)
- disponible : booléen, valeur par défaut TRUE

Solution proposée

-- Création de la base de données
CREATE DATABASE bibliotheque;

-- Utilisation de la base
USE bibliotheque;

-- Table auteur
CREATE TABLE auteur (
  id_auteur INT AUTO_INCREMENT,             -- Identifiant unique de l'auteur
  nom VARCHAR(100) NOT NULL,                 -- Nom obligatoire
  prenom VARCHAR(100) NOT NULL,              -- Prénom obligatoire
  date_naissance DATE,                       -- Date de naissance facultative (peut être NULL)
  email VARCHAR(150) UNIQUE,                 -- Email unique pour éviter les doublons
  
  PRIMARY KEY (id_auteur)                    -- Clé primaire
);

-- Table livre
CREATE TABLE livre (
  id_livre INT AUTO_INCREMENT,               -- Identifiant unique du livre
  titre VARCHAR(255) NOT NULL,                -- Titre obligatoire
  annee_publication INT NOT NULL CHECK (annee_publication > 0), -- Année entier positif
  id_auteur INT NOT NULL,                     -- Référence obligatoire à un auteur
  
  disponible BOOLEAN DEFAULT TRUE,            -- Livre disponible par défaut
  
  PRIMARY KEY (id_livre),                     -- Clé primaire
  
  CONSTRAINT fk_auteur FOREIGN KEY (id_auteur) REFERENCES auteur(id_auteur) ON DELETE CASCADE ON UPDATE CASCADE
);