Voici un script complet qui crée les tables, ajoute les contraintes de clés étrangères et insère
toutes les données en une seule fois. Je vais m'assurer que tout est intégré dans un flux
continu, en veillant à respecter les relations entre les tables tout en évitant les erreurs de
contraintes de clés étrangères.
-- Créer la table abonnements
CREATE TABLE abonnements (
id_ab INT PRIMARY KEY,
type_Abon VARCHAR(50),
date_de_debut_Abon DATE,
date_de_fin_Abon DATE,
date_expiration_Abon DATE,
prix VARCHAR(50),
Statut_Abon VARCHAR(50)
);
-- Insérer des données dans abonnements
INSERT INTO abonnements (id_ab, type_Abon, date_de_debut_Abon,
date_de_fin_Abon, date_expiration_Abon, prix, Statut_Abon)
VALUES
(1, 'Abonnement mensuel', '2024-01-01', '2024-01-31', '2024-02-01',
10.00, 'Actif'),
(2, 'Abonnement annuel', '2024-03-01', '2024-12-01', '2025-03-01',
100.00, 'Actif'),
(3, 'Abonnement trimestriel', '2024-04-01', '2024-06-30', '2024-07-01',
30.00, 'Expiré'),
(4, 'Abonnement mensuel', '2024-05-01', '2024-05-31', '2024-06-01',
12.50, 'Actif'),
(5, 'Abonnement annuel', '2024-06-01', '2024-12-01', '2025-06-01',
120.00, 'Suspendu');
-- Créer la table categories
CREATE TABLE categories (
id_ca INT PRIMARY KEY,
nom_de_la_cat VARCHAR(50),
livres_associés VARCHAR(50)
);
-- Insérer des données dans categories
INSERT INTO categories (id_ca, nom_de_la_cat, livres_associés)
VALUES
(1, 'Fiction', 25),
(2, 'Science-fiction', 18),
(3, 'Classique', 12),
(4, 'Aventure', 20),
(5, 'Philosophique', 10);
-- Créer la table livres
CREATE TABLE livres (
id_li INT PRIMARY KEY,
nom VARCHAR(50),
isbn VARCHAR(50),
genre VARCHAR(50),
Editeur VARCHAR(50),
type_li VARCHAR(50),
id_au INT,
id_ca INT,
prix VARCHAR(50),
Exemplaire VARCHAR(50),
statut VARCHAR(50)
);
-- Insérer des données dans livres
INSERT INTO livres (id_li, nom, isbn, genre, Editeur, type_li, id_au,
id_ca, prix, Exemplaire, statut)
VALUES
(1, 'Les Misérables', '978-2-07-041347-4', 'Roman historique',
'Gallimard', 'Broché', 1, 1, 19.99, 5, 'Disponible'),
(2, 'Harry Potter à l\'école des sorciers', '978-0-7475-3269-9',
'Fantasy', 'Bloomsbury', 'Relié', 2, 2, 22.50, 10, 'Emprunté'),
(3, '1984', '978-0-452-28423-4', 'Dystopie', 'Harcourt', 'Poche', 3, 3,
14.99, 7, 'Disponible'),
(4, 'Cien años de soledad', '978-0-06-088328-7', 'Réalisme magique',
'HarperCollins', 'Broché', 4, 4, 16.75, 3, 'Disponible'),
(5, 'Kafka sur le rivage', '978-2-07-040738-1', 'Fantastique', 'Seuil',
'Relié', 5, 5, 18.00, 2, 'En retard');
-- Créer la table periodique
CREATE TABLE periodique (
id_pe INT PRIMARY KEY,
titre VARCHAR(50),
frequence VARCHAR(50),
date_de_pub DATE,
date_de_fin DATE
);
-- Insérer des données dans periodique
INSERT INTO periodique (id_pe, titre, frequence, date_de_pub, date_de_fin)
VALUES
(1, 'Le Monde', 'Quotidien', '2024-01-01', '2024-12-31'),
(2, 'Science & Vie', 'Mensuel', '2024-01-01', '2024-12-31'),
(3, 'L\'Express', 'Hebdomadaire', '2024-01-04', '2024-12-31'),
(4, 'National Geographic', 'Mensuel', '2024-02-01', '2024-12-31'),
(5, 'Le Figaro', 'Quotidien', '2024-01-01', '2024-12-31');
-- Créer la table retours
CREATE TABLE retours (
id_re INT PRIMARY KEY,
date_de_retour VARCHAR(50),
etat_du_livre VARCHAR(50)
);
-- Insérer des données dans retours
INSERT INTO retours (id_re, date_de_retour, etat_du_livre)
VALUES
(1, '2024-02-01', 'Bon état'),
(2, '2024-02-15', 'Légèrement abîmé'),
(3, '2024-03-01', 'Très bon état'),
(4, '2024-03-05', 'Couverture déchirée'),
(5, '2024-03-10', 'Bon état');
-- Créer la table auteur
CREATE TABLE auteur (
id_au INT PRIMARY KEY,
nom VARCHAR(50),
Adresse VARCHAR(50),
pays VARCHAR(50),
id_li INT,
FOREIGN KEY (id_li) REFERENCES livres(id_li)
);
-- Insérer des données dans auteur
INSERT INTO auteur (id_au, nom, Adresse, pays, id_li)
VALUES
(1, 'Victor Hugo', '6 Place des Vosges, Paris', 'France', 1),
(2, 'J.K. Rowling', 'The Closes, Edinburgh, Scotland', 'Royaume-Uni',
2),
(3, 'George Orwell', '27B Canonbury Square, Londres', 'Royaume-Uni',
3),
(4, 'Gabriel García Márquez', 'Calle de la Castellana, Bogotá',
'Colombie', 4),
(5, 'Haruki Murakami', '1-1-1, Kamiyama-cho, Tokyo', 'Japon', 5);
-- Créer la table Emprunts
CREATE TABLE Emprunts (
id_em INT PRIMARY KEY,
date_Emprunt DATE,
date_Retour_prevue VARCHAR(50),
id_li INT,
id_ut INT,
id_ab INT,
id_re INT,
date_Retour_reelle VARCHAR(50),
statut VARCHAR(50),
FOREIGN KEY (id_li) REFERENCES livres(id_li),
FOREIGN KEY (id_ut) REFERENCES users(id_ut),
FOREIGN KEY (id_ab) REFERENCES abonnements(id_ab),
FOREIGN KEY (id_re) REFERENCES retours(id_re)
);
-- Créer la table Bibliotheque
CREATE TABLE Bibliotheque (
id_bi INT PRIMARY KEY,
nom VARCHAR(50),
adresse VARCHAR(50),
id_li INT,
ville VARCHAR(50),
id_ca INT,
FOREIGN KEY (id_li) REFERENCES livres(id_li),
FOREIGN KEY (id_ca) REFERENCES categories(id_ca)
);
-- Insérer des données dans Bibliotheque
INSERT INTO Bibliotheque (id_bi, nom, adresse, id_li, ville, id_ca)
VALUES
(1, 'Bibliothèque de Paris', '12 rue de la République, Paris', 1,
'Paris', 1),
(2, 'Bibliothèque Municipale de Lyon', '8 avenue des Halles, Lyon', 2,
'Lyon', 2),
(3, 'Bibliothèque de Marseille', '4 rue de l\'Opéra, Marseille', 3,
'Marseille', 3),
(4, 'Bibliothèque de Toulouse', '10 rue de la Gare, Toulouse', 4,
'Toulouse', 4),
(5, 'Bibliothèque Nationale de Lille', '22 avenue de la Liberté,
Lille', 5, 'Lille', 5);
-- Créer la table users
CREATE TABLE users (
id_ut INT PRIMARY KEY,
nom VARCHAR(50),
prenom VARCHAR(50),
Date_de_naissance DATE,
Adresse VARCHAR(50),
numero VARCHAR(50),
Email VARCHAR(50),
id_ab INT,
id_em INT,
date_Abonnement DATE,
date_inscription DATE,
FOREIGN KEY (id_ab) REFERENCES abonnements(id_ab),
FOREIGN KEY (id_em) REFERENCES Emprunts(id_em)
);
-- Insérer des données dans users
INSERT INTO users (id_ut, nom, prenom, Date_de_naissance, Adresse, numero, Email, id_ab, id_em,
date_Abonnement, date_inscription)
VALUES
(1, 'Dupont', 'Jean', '1985-05-10', '12 rue de la Liberté, Paris', '0601020304',
'[Link]@[Link]', 1, 1, '2024-01-01', '2024-01-10'),
(2, 'Martin', 'Claire', '1990-07-15', '34 avenue des Champs-Élysées, Paris', '0612345678',
'[Link]@[Link]', 2, 2, '2024-02-01', '2024-02-10'),
(3, 'Bernard', 'Pierre', '1980-03-20', '56 boulevard Saint-Germain, Paris', '0623456789',
'[Link]@[Link]', 3, 3, '2024-03-01', '2024-03-05'),
(4, 'Lemoine', 'Sophie', '1995-11-30', '78 rue de la République, Lyon', '0634567890',
'[Link]@[Link]', 4, 4, '2024-04-01', '2024-04-10'),
(5, 'Durand', 'Luc', '1988-09-25', '90 avenue de l\'Opéra, Marseille', '0645678901',
'[Link]@[Link]', 5, 5, '2024-05-01', '2024-05-07');