-- https://www.phpmyadmin.net/
--
-- Hôte : localhost:3306
-- Généré le : jeu. 14 mars 2024 à 17:18
-- Version du serveur : 10.5.19-MariaDB-0+deb11u2
-- Version de PHP : 7.4.33

START TRANSACTION;



--
-- Base de données : `restmedi_`
--

DELIMITER $$
--
-- Procédures
--
CREATE DEFINER=`gotlub1`@`%` PROCEDURE `creerExemplaire` (IN `nbExemplaire` INTEGER, IN `idDocument` VARCHAR(10), IN `dateAchatC` DATE)   BEGIN
    DECLARE nb INTEGER;
    DECLARE maxId INTEGER;
    SET nb = 0;
    WHILE nb < nbExemplaire DO
        SELECT MAX(numero) INTO maxId FROM exemplaire WHERE id = idDocument;
        IF (maxId is null) THEN
        	SET maxid = 0;
        END IF;
        SET maxId = maxId + 1;
        INSERT INTO exemplaire(id, numero, dateAchat, idEtat, photo)
        VALUES (idDocument, maxId, dateAchatC, '00001', "");
        SET nb = nb + 1;
    END WHILE ;
END$$

CREATE DEFINER=`gotlub1`@`%` PROCEDURE `majDvd` (IN `idDvd` VARCHAR(10))   BEGIN
    DECLARE nb INTEGER ;
    SELECT COUNT(*) INTO nb
        FROM livre
        WHERE BINARY id =  BINARY idDvd ;
    IF (nb = 1) THEN
        SIGNAL SQLSTATE "45000" 
          SET MESSAGE_TEXT = "opération impossible";
    END IF ;
END$$

CREATE DEFINER=`gotlub1`@`%` PROCEDURE `majLivre` (IN `idLivre` VARCHAR(10))   BEGIN
    DECLARE nb INTEGER ;
    SELECT COUNT(*) INTO nb
        FROM dvd
        WHERE BINARY id =  BINARY idLivre ;
    IF (nb = 1) THEN
        SIGNAL SQLSTATE "45000" 
          SET MESSAGE_TEXT = "opération impossible";
    END IF ;
END$$

CREATE DEFINER=`gotlub1`@`%` PROCEDURE `majLivresDvd` (IN `idLivreDvd` VARCHAR(10))   BEGIN
    DECLARE nb INTEGER ;
    SELECT COUNT(*) INTO nb
        FROM revue
        WHERE BINARY id =  BINARY idLivreDvd ;
    IF (nb = 1) THEN
        SIGNAL SQLSTATE "45000" 
          SET MESSAGE_TEXT = "opération impossible";
    END IF ;
END$$

CREATE DEFINER=`gotlub1`@`%` PROCEDURE `majRevue` (IN `idrevue` VARCHAR(10))   BEGIN
    DECLARE nb INTEGER ;
    SELECT COUNT(*) INTO nb
        FROM livres_dvd
        WHERE  id =   idrevue ;
    IF (nb = 1) THEN
        SIGNAL SQLSTATE "45000" 
          SET MESSAGE_TEXT = "opération impossible";
    END IF ;
END$$

DELIMITER ;

-- --------------------------------------------------------

--
-- Structure de la table `abonnement`
--

CREATE TABLE `abonnement` (
  `id` varchar(5) NOT NULL,
  `dateFinAbonnement` date DEFAULT NULL,
  `idRevue` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `abonnement`
--

INSERT INTO `abonnement` (`id`, `dateFinAbonnement`, `idRevue`) VALUES
('00021', '2024-01-26', '10001'),
('00022', '2024-03-25', '10003'),
('00023', '2024-01-31', '10002'),
('00024', '2024-02-09', '10002'),
('00025', '2024-02-25', '10003');

--
-- Déclencheurs `abonnement`
--
DELIMITER $$
CREATE TRIGGER `insAbonnement` BEFORE INSERT ON `abonnement` FOR EACH ROW BEGIN
	DECLARE nb INTEGER ;
    SELECT COUNT(*) INTO nb
        FROM commandedocument
        WHERE id =  NEW.id ;
    IF (nb = 1) THEN
        SIGNAL SQLSTATE "45000" 
          SET MESSAGE_TEXT = "opération impossible";
    END IF ;
END
$$
DELIMITER ;

-- --------------------------------------------------------

--
-- Structure de la table `commande`
--

CREATE TABLE `commande` (
  `id` varchar(5) NOT NULL,
  `dateCommande` date DEFAULT NULL,
  `montant` double DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `commande`
--

INSERT INTO `commande` (`id`, `dateCommande`, `montant`) VALUES
('00002', '2024-01-21', 2),
('00003', '2024-01-20', 55),
('00004', '2023-10-18', 15),
('00005', '2024-01-21', 5.4499998092651),
('00006', '2024-01-21', 22),
('00007', '2024-01-21', 7),
('00008', '2024-01-21', 7),
('00009', '2023-03-08', 4),
('00011', '2023-10-10', 8),
('00013', '2024-01-22', 5),
('00014', '2024-01-22', 7),
('00015', '2024-01-23', 2),
('00016', '2024-01-24', 1),
('00017', '2024-01-24', 3),
('00018', '2024-01-24', 6),
('00019', '2024-01-24', 8),
('00020', '2024-01-25', 2),
('00021', '2024-01-10', 2),
('00022', '2024-01-25', 5),
('00023', '2023-11-20', 21.2),
('00024', '2023-03-13', 2),
('00025', '2024-01-25', 4),
('00026', '2024-01-26', 2),
('00027', '2024-01-28', 3),
('00028', '2024-03-13', 3),
('00029', '2024-03-14', 5);

-- --------------------------------------------------------

--
-- Structure de la table `commandedocument`
--

CREATE TABLE `commandedocument` (
  `id` varchar(5) NOT NULL,
  `nbExemplaire` int(11) DEFAULT NULL,
  `idLivreDvd` varchar(10) NOT NULL,
  `idsuivi` int(4) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `commandedocument`
--

INSERT INTO `commandedocument` (`id`, `nbExemplaire`, `idLivreDvd`, `idsuivi`) VALUES
('00002', 2, '00017', 4),
('00003', 2, '00017', 4),
('00004', 15, '00017', 3),
('00005', 4, '00001', 3),
('00006', 2, '00001', 3),
('00007', 5, '00007', 3),
('00008', 9, '00024', 3),
('00009', 27, '00017', 3),
('00011', 2, '00007', 3),
('00013', 3, '20002', 3),
('00014', 3, '20004', 3),
('00015', 3, '00020', 3),
('00016', 1, '20002', 2),
('00017', 1, '20003', 2),
('00018', 6, '00007', 3),
('00019', 2, '00019', 1),
('00020', 1, '20002', 1),
('00026', 1, '00003', 3),
('00027', 2, '20002', 3),
('00028', 4, '20004', 3),
('00029', 5, '00027', 3);

--
-- Déclencheurs `commandedocument`
--
DELIMITER $$
CREATE TRIGGER `insCommandeDocument` BEFORE INSERT ON `commandedocument` FOR EACH ROW BEGIN
	DECLARE nb INTEGER ;
    SELECT COUNT(*) INTO nb
        FROM abonnement
        WHERE id =  NEW.id ;
    IF (nb = 1) THEN
        SIGNAL SQLSTATE "45000" 
          SET MESSAGE_TEXT = "opération impossible";
    END IF ;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `insExemplaire` AFTER INSERT ON `commandedocument` FOR EACH ROW BEGIN
	DECLARE dateAchat DATE ;
    IF (NEW.idsuivi > 2 ) THEN
        SELECT dateCommande INTO dateAchat FROM commande WHERE id = NEW.id ;
    	CALL creerExemplaire(NEW.nbExemplaire, NEW.idLivreDvd, dateAchat);
    END iF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `upExemplaire` AFTER UPDATE ON `commandedocument` FOR EACH ROW BEGIN
	DECLARE dateAchat DATE ;
	IF (OLD.idsuivi < 3 ) THEN
    	IF (NEW.idsuivi > 2 ) THEN
        	SELECT dateCommande INTO dateAchat FROM commande WHERE id = NEW.id ;
    		CALL creerExemplaire(NEW.nbExemplaire, NEW.idLivreDvd, dateAchat);
        END iF;
    END IF;
END
$$
DELIMITER ;

-- --------------------------------------------------------

--
-- Structure de la table `document`
--

CREATE TABLE `document` (
  `id` varchar(10) NOT NULL,
  `titre` varchar(60) DEFAULT NULL,
  `image` varchar(500) DEFAULT NULL,
  `idRayon` varchar(5) NOT NULL,
  `idPublic` varchar(5) NOT NULL,
  `idGenre` varchar(5) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `document`
--

INSERT INTO `document` (`id`, `titre`, `image`, `idRayon`, `idPublic`, `idGenre`) VALUES
('00001', 'Quand sort la recluse', '', 'LV003', '00002', '10014'),
('00002', 'Un pays à l\'aube', '', 'LV001', '00002', '10004'),
('00003', 'Et je danse aussi', '', 'LV002', '00003', '10013'),
('00004', 'L\'armée furieuse', '', 'LV003', '00002', '10014'),
('00005', 'Les anonymes', '', 'LV001', '00002', '10014'),
('00006', 'La marque jaune', '', 'BD001', '00003', '10001'),
('00007', 'Dans les coulisses du musée', '', 'LV001', '00003', '10006'),
('00008', 'Histoire-du-juif-errant', '', 'LV002', '00002', '10006'),
('00009', 'Pars vite et reviens tard', '', 'LV003', '00002', '10014'),
('00010', 'Le vestibule des causes perdues', '', 'LV001', '00002', '10006'),
('00011', 'L\'île des oubliés', '', 'LV002', '00003', '10006'),
('00012', 'La souris bleue', '', 'LV002', '00003', '10006'),
('00013', 'Sacré Pêre Noël', '', 'JN001', '00001', '10001'),
('00014', 'Mauvaise étoile', '', 'LV003', '00003', '10014'),
('00015', 'La confrérie des téméraires', '', 'JN002', '00004', '10014'),
('00016', 'Le butin du requin', '', 'JN002', '00004', '10014'),
('00017', 'Catastrophes au Brésil', '', 'BL001', '00004', '10007'),
('00018', 'Le Routard - Maroc', '', 'DV005', '00003', '10011'),
('00019', 'Guide Vert - Iles Canaries', '', 'DV005', '00003', '10011'),
('00020', 'Guide Vert - Irlande', '', 'DV005', '00003', '10011'),
('00021', 'Les déferlantes', '', 'LV002', '00002', '10006'),
('00022', 'Une part de Ciel', '', 'LV002', '00004', '10006'),
('00023', 'Le secret du janissaire', '', 'BD001', '00002', '10001'),
('00024', 'Pavillon noir', '', 'BD001', '00002', '10001'),
('00025', 'L\'archipel du danger', '', 'BD001', '00002', '10001'),
('00026', 'La planète des singes', '', 'LV002', '00003', '10002'),
('00027', 'Le Sens du vent', '', 'LV001', '00002', '10002'),
('10001', 'Arts Magazine', '', 'PR002', '00002', '10016'),
('10002', 'Alternatives Economiques', '', 'PR002', '00002', '10015'),
('10003', 'Challenges', '', 'PR002', '00002', '10015'),
('10004', 'Rock and Folk', '', 'PR002', '00002', '10016'),
('10005', 'Les Echos', '', 'PR001', '00002', '10015'),
('10006', 'Le Monde', '', 'PR001', '00002', '10018'),
('10007', 'Telerama', '', 'PR002', '00002', '10016'),
('10008', 'L\'Obs', '', 'PR002', '00002', '10018'),
('10009', 'L\'Equipe', '', 'PR001', '00002', '10017'),
('10010', 'L\'Equipe Magazine', '', 'PR002', '00002', '10017'),
('10011', 'Geo', '', 'BL001', '00003', '10016'),
('20001', 'Star Wars 5 L\'empire contre attaque', '', 'DF001', '00003', '10002'),
('20002', 'Le seigneur des anneaux : la communauté de l\'anneau', '', 'DF001', '00003', '10019'),
('20003', 'Jurassic Park', '', 'DF001', '00003', '10002'),
('20004', 'Matrix', '', 'DF001', '00003', '10002');

-- --------------------------------------------------------

--
-- Structure de la table `dvd`
--

CREATE TABLE `dvd` (
  `id` varchar(10) NOT NULL,
  `synopsis` text DEFAULT NULL,
  `realisateur` varchar(20) DEFAULT NULL,
  `duree` int(6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `dvd`
--

INSERT INTO `dvd` (`id`, `synopsis`, `realisateur`, `duree`) VALUES
('20001', 'Luc est entraîné par Yoda pendant que Han et Leia tentent de se cacher dans la cité des nuages.', 'George Lucas', 124),
('20002', 'L\'anneau unique, forgé par Sauron, est porté par Fraudon qui l\'amène à Foncombe. De là, des représentants de peuples différents vont s\'unir pour aider Fraudon à amener l\'anneau à la montagne du Destin.', 'Peter Jackson', 228),
('20003', 'Un milliardaire et des généticiens créent des dinosaures à partir de clonage.', 'Steven Spielberg', 128),
('20004', 'Un informaticien réalise que le monde dans lequel il vit est une simulation gérée par des machines.', 'Les Wachowski', 136);

--
-- Déclencheurs `dvd`
--
DELIMITER $$
CREATE TRIGGER `insDvd` BEFORE INSERT ON `dvd` FOR EACH ROW BEGIN
    CALL majDvd(NEW.id);
END
$$
DELIMITER ;

-- --------------------------------------------------------

--
-- Structure de la table `etat`
--

CREATE TABLE `etat` (
  `id` char(5) NOT NULL,
  `libelle` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `etat`
--

INSERT INTO `etat` (`id`, `libelle`) VALUES
('00001', 'neuf'),
('00002', 'usagé'),
('00003', 'détérioré'),
('00004', 'inutilisable');

-- --------------------------------------------------------

--
-- Structure de la table `exemplaire`
--

CREATE TABLE `exemplaire` (
  `id` varchar(10) NOT NULL,
  `numero` int(11) NOT NULL,
  `dateAchat` date DEFAULT NULL,
  `photo` varchar(500) NOT NULL,
  `idEtat` char(5) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `exemplaire`
--

INSERT INTO `exemplaire` (`id`, `numero`, `dateAchat`, `photo`, `idEtat`) VALUES
('00001', 1, '2024-01-21', '', '00001'),
('00001', 2, '2024-01-21', '', '00001'),
('00001', 3, '2024-01-21', '', '00001'),
('00001', 4, '2024-01-21', '', '00001'),
('00003', 1, '2024-01-26', '', '00001'),
('00004', 1, '2024-01-10', '', '00001'),
('00004', 2, '2024-01-10', '', '00001'),
('00007', 1, '2023-10-10', '', '00001'),
('00007', 2, '2023-10-10', '', '00001'),
('00007', 6, '2024-01-24', '', '00002'),
('00007', 7, '2024-01-24', '', '00001'),
('00007', 8, '2024-01-24', '', '00004'),
('00020', 1, '2024-01-23', '', '00001'),
('00020', 2, '2024-01-23', '', '00001'),
('00020', 3, '2024-01-23', '', '00001'),
('00024', 1, '2024-01-21', '', '00001'),
('00024', 2, '2024-01-21', '', '00001'),
('00024', 3, '2024-01-21', '', '00001'),
('00024', 4, '2024-01-21', '', '00002'),
('00024', 5, '2024-01-21', '', '00001'),
('00024', 6, '2024-01-21', '', '00001'),
('00024', 7, '2024-01-21', '', '00001'),
('00024', 8, '2024-01-21', '', '00001'),
('00024', 9, '2024-01-21', '', '00001'),
('00027', 1, '2024-03-14', '', '00001'),
('00027', 2, '2024-03-14', '', '00002'),
('00027', 3, '2024-03-14', '', '00003'),
('00027', 4, '2024-03-14', '', '00004'),
('10001', 3, '2024-01-28', '', '00002'),
('10003', 23, '2024-01-25', '', '00001'),
('10007', 3237, '2021-11-23', '', '00001'),
('10007', 3238, '2021-11-30', '', '00001'),
('10007', 3239, '2021-12-07', '', '00001'),
('10007', 3240, '2021-12-21', '', '00001'),
('10011', 505, '2022-10-16', '', '00002'),
('10011', 506, '2021-04-01', '', '00001'),
('10011', 507, '2021-05-03', '', '00001'),
('10011', 508, '2021-06-05', '', '00001'),
('10011', 509, '2021-07-01', '', '00001'),
('10011', 510, '2021-08-04', '', '00001'),
('10011', 511, '2021-09-01', '', '00001'),
('10011', 512, '2021-10-06', '', '00001'),
('10011', 513, '2021-11-01', '', '00001'),
('10011', 514, '2021-12-01', '', '00001'),
('20002', 2, '2024-01-22', '', '00002'),
('20002', 3, '2024-01-22', '', '00001'),
('20002', 4, '2024-01-28', '', '00001'),
('20002', 5, '2024-01-28', '', '00004'),
('20004', 1, '2024-03-13', '', '00001'),
('20004', 2, '2024-03-13', '', '00002'),
('20004', 3, '2024-03-13', '', '00001'),
('20004', 4, '2024-03-13', '', '00001');

-- --------------------------------------------------------

--
-- Structure de la table `genre`
--

CREATE TABLE `genre` (
  `id` varchar(5) NOT NULL,
  `libelle` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `genre`
--

INSERT INTO `genre` (`id`, `libelle`) VALUES
('10000', 'Humour'),
('10001', 'Bande dessinée'),
('10002', 'Science Fiction'),
('10003', 'Biographie'),
('10004', 'Historique'),
('10006', 'Roman'),
('10007', 'Aventures'),
('10008', 'Essai'),
('10009', 'Documentaire'),
('10010', 'Technique'),
('10011', 'Voyages'),
('10012', 'Drame'),
('10013', 'Comédie'),
('10014', 'Policier'),
('10015', 'Presse Economique'),
('10016', 'Presse Culturelle'),
('10017', 'Presse sportive'),
('10018', 'Actualités'),
('10019', 'Fantazy');

-- --------------------------------------------------------

--
-- Structure de la table `livre`
--

CREATE TABLE `livre` (
  `id` varchar(10) NOT NULL,
  `ISBN` varchar(13) DEFAULT NULL,
  `auteur` varchar(20) DEFAULT NULL,
  `collection` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `livre`
--

INSERT INTO `livre` (`id`, `ISBN`, `auteur`, `collection`) VALUES
('00001', '1234569877896', 'Fred Vargas', 'Commissaire Adamsberg'),
('00002', '1236547896541', 'Dennis Lehanne', ''),
('00003', '6541236987410', 'Anne Laure Bondou', ''),
('00004', '3214569874123', 'Fred Vargas', 'Commissaire Adamsberg'),
('00005', '3214563214563', 'RJ Ellory', ''),
('00006', '3213213211232', 'Edgar P. Jacobs', 'Blake et Mortimer'),
('00007', '6541236987541', 'Kate Atkinson', ''),
('00008', '1236987456321', 'Jean-d\'Ormesson', ''),
('00009', '', 'Fred Vargas', 'Commissaire Adamsberg'),
('00010', '', 'Manon Moreau', ''),
('00011', '', 'Victoria Hislop', ''),
('00012', '', 'Kate Atkinson', ''),
('00013', '', 'Raymond Briggs', ''),
('00014', '', 'RJ Ellory', ''),
('00015', '', 'Floriane Turmeau', ''),
('00016', '', 'Julian Press', ''),
('00017', '', 'Philippe Masson', ''),
('00018', '', '', 'Guide du Routard'),
('00020', '', '', 'Guide Vert'),
('00021', '', 'Claudie Gallay', ''),
('00022', '', 'Claudie Gallay', ''),
('00023', '', 'Ayrolles - Masbou', 'De cape et de crocs'),
('00024', '', 'Ayrolles - Masbou', 'De cape et de crocs'),
('00025', '', 'Ayrolles - Masbou', 'De cape et de crocs'),
('00026', '', 'Pierre Boulle', 'Julliard'),
('00027', '', 'Iain Banks', 'Cycle de La Culture');

--
-- Déclencheurs `livre`
--
DELIMITER $$
CREATE TRIGGER `insLivre` BEFORE INSERT ON `livre` FOR EACH ROW BEGIN
    CALL majLivre(NEW.id);
END
$$
DELIMITER ;

-- --------------------------------------------------------

--
-- Structure de la table `livres_dvd`
--

CREATE TABLE `livres_dvd` (
  `id` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `livres_dvd`
--

INSERT INTO `livres_dvd` (`id`) VALUES
('00001'),
('00002'),
('00003'),
('00004'),
('00005'),
('00006'),
('00007'),
('00008'),
('00009'),
('00010'),
('00011'),
('00012'),
('00013'),
('00014'),
('00015'),
('00016'),
('00017'),
('00018'),
('00019'),
('00020'),
('00021'),
('00022'),
('00023'),
('00024'),
('00025'),
('00026'),
('00027'),
('20001'),
('20002'),
('20003'),
('20004');

--
-- Déclencheurs `livres_dvd`
--
DELIMITER $$
CREATE TRIGGER `insLivresDvd` BEFORE INSERT ON `livres_dvd` FOR EACH ROW BEGIN
    CALL majLivresDvd(NEW.id);
END
$$
DELIMITER ;

-- --------------------------------------------------------

--
-- Structure de la table `public`
--

CREATE TABLE `public` (
  `id` varchar(5) NOT NULL,
  `libelle` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `public`
--

INSERT INTO `public` (`id`, `libelle`) VALUES
('00001', 'Jeunesse'),
('00002', 'Adultes'),
('00003', 'Tous publics'),
('00004', 'Ados');

-- --------------------------------------------------------

--
-- Structure de la table `rayon`
--

CREATE TABLE `rayon` (
  `id` char(5) NOT NULL,
  `libelle` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `rayon`
--

INSERT INTO `rayon` (`id`, `libelle`) VALUES
('BD001', 'BD Adultes'),
('BL001', 'Beaux Livres'),
('DF001', 'DVD films'),
('DV001', 'Sciences'),
('DV002', 'Maison'),
('DV003', 'Santé'),
('DV004', 'Littérature classique'),
('DV005', 'Voyages'),
('JN001', 'Jeunesse BD'),
('JN002', 'Jeunesse romans'),
('LV001', 'Littérature étrangère'),
('LV002', 'Littérature française'),
('LV003', 'Policiers français étrangers'),
('PR001', 'Presse quotidienne'),
('PR002', 'Magazines');

-- --------------------------------------------------------

--
-- Structure de la table `revue`
--

CREATE TABLE `revue` (
  `id` varchar(10) NOT NULL,
  `periodicite` varchar(2) DEFAULT NULL,
  `delaiMiseADispo` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `revue`
--

INSERT INTO `revue` (`id`, `periodicite`, `delaiMiseADispo`) VALUES
('10001', 'MS', 52),
('10002', 'MS', 52),
('10003', 'HB', 15),
('10004', 'HB', 15),
('10005', 'QT', 5),
('10006', 'QT', 5),
('10007', 'HB', 26),
('10008', 'HB', 26),
('10009', 'QT', 5),
('10010', 'HB', 12),
('10011', 'MS', 52);

--
-- Déclencheurs `revue`
--
DELIMITER $$
CREATE TRIGGER `insRevue` BEFORE INSERT ON `revue` FOR EACH ROW BEGIN
    CALL majRevue(NEW.id);
END
$$
DELIMITER ;

-- --------------------------------------------------------

--
-- Structure de la table `service`
--

CREATE TABLE `service` (
  `id` varchar(5) NOT NULL,
  `libelle` varchar(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `service`
--

INSERT INTO `service` (`id`, `libelle`) VALUES
('0001', 'compta'),
('0002', 'biblio'),
('0003', 'culture'),
('0004', 'accueil');

-- --------------------------------------------------------

--
-- Structure de la table `suivi`
--

CREATE TABLE `suivi` (
  `id` int(4) NOT NULL,
  `etat` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Déchargement des données de la table `suivi`
--

INSERT INTO `suivi` (`id`, `etat`) VALUES
(1, 'en cours'),
(2, 'relancée'),
(3, 'livrée'),
(4, 'réglée ');

--
-- Index pour les tables déchargées
--

--
-- Index pour la table `abonnement`
--
ALTER TABLE `abonnement`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idRevue` (`idRevue`);

--
-- Index pour la table `commande`
--
ALTER TABLE `commande`
  ADD PRIMARY KEY (`id`);

--
-- Index pour la table `commandedocument`
--
ALTER TABLE `commandedocument`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idLivreDvd` (`idLivreDvd`),
  ADD KEY `idsuivi` (`idsuivi`);

--
-- Index pour la table `document`
--
ALTER TABLE `document`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idRayon` (`idRayon`),
  ADD KEY `idPublic` (`idPublic`),
  ADD KEY `idGenre` (`idGenre`);

--
-- Index pour la table `dvd`
--
ALTER TABLE `dvd`
  ADD PRIMARY KEY (`id`);

--
-- Index pour la table `etat`
--
ALTER TABLE `etat`
  ADD PRIMARY KEY (`id`);

--
-- Index pour la table `exemplaire`
--
ALTER TABLE `exemplaire`
  ADD PRIMARY KEY (`id`,`numero`),
  ADD KEY `idEtat` (`idEtat`);

--
-- Index pour la table `genre`
--
ALTER TABLE `genre`
  ADD PRIMARY KEY (`id`);

--
-- Index pour la table `livre`
--
ALTER TABLE `livre`
  ADD PRIMARY KEY (`id`);

--
-- Index pour la table `livres_dvd`
--
ALTER TABLE `livres_dvd`
  ADD PRIMARY KEY (`id`);

--
-- Index pour la table `public`
--
ALTER TABLE `public`
  ADD PRIMARY KEY (`id`);

--
-- Index pour la table `rayon`
--
ALTER TABLE `rayon`
  ADD PRIMARY KEY (`id`);

--
-- Index pour la table `revue`
--
ALTER TABLE `revue`
  ADD PRIMARY KEY (`id`);

--
-- Index pour la table `service`
--
ALTER TABLE `service`
  ADD PRIMARY KEY (`id`);

--
-- Index pour la table `suivi`
--
ALTER TABLE `suivi`
  ADD PRIMARY KEY (`id`);

--
-- Contraintes pour les tables déchargées
--

--
-- Contraintes pour la table `abonnement`
--
ALTER TABLE `abonnement`
  ADD CONSTRAINT `abonnement_ibfk_1` FOREIGN KEY (`id`) REFERENCES `commande` (`id`),
  ADD CONSTRAINT `abonnement_ibfk_2` FOREIGN KEY (`idRevue`) REFERENCES `revue` (`id`);

--
-- Contraintes pour la table `commandedocument`
--
ALTER TABLE `commandedocument`
  ADD CONSTRAINT `commandedocument_ibfk_1` FOREIGN KEY (`id`) REFERENCES `commande` (`id`),
  ADD CONSTRAINT `commandedocument_ibfk_2` FOREIGN KEY (`idLivreDvd`) REFERENCES `livres_dvd` (`id`),
  ADD CONSTRAINT `commandedocument_ibfk_3` FOREIGN KEY (`idsuivi`) REFERENCES `suivi` (`id`);

--
-- Contraintes pour la table `document`
--
ALTER TABLE `document`
  ADD CONSTRAINT `document_ibfk_1` FOREIGN KEY (`idRayon`) REFERENCES `rayon` (`id`),
  ADD CONSTRAINT `document_ibfk_2` FOREIGN KEY (`idPublic`) REFERENCES `public` (`id`),
  ADD CONSTRAINT `document_ibfk_3` FOREIGN KEY (`idGenre`) REFERENCES `genre` (`id`);

--
-- Contraintes pour la table `dvd`
--
ALTER TABLE `dvd`
  ADD CONSTRAINT `dvd_ibfk_1` FOREIGN KEY (`id`) REFERENCES `livres_dvd` (`id`);

--
-- Contraintes pour la table `exemplaire`
--
ALTER TABLE `exemplaire`
  ADD CONSTRAINT `exemplaire_ibfk_1` FOREIGN KEY (`id`) REFERENCES `document` (`id`),
  ADD CONSTRAINT `exemplaire_ibfk_2` FOREIGN KEY (`idEtat`) REFERENCES `etat` (`id`);

--
-- Contraintes pour la table `livre`
--
ALTER TABLE `livre`
  ADD CONSTRAINT `livre_ibfk_1` FOREIGN KEY (`id`) REFERENCES `livres_dvd` (`id`);

--
-- Contraintes pour la table `livres_dvd`
--
ALTER TABLE `livres_dvd`
  ADD CONSTRAINT `livres_dvd_ibfk_1` FOREIGN KEY (`id`) REFERENCES `document` (`id`);

--
-- Contraintes pour la table `revue`
--
ALTER TABLE `revue`
  ADD CONSTRAINT `revue_ibfk_1` FOREIGN KEY (`id`) REFERENCES `document` (`id`);
COMMIT;

