Base de données pour une bibliothèque :
Imaginez que vous gérez une petite bibliothèque et que vous souhaitez créer une base de données pour suivre les livres que vous avez en stock. Voici une proposition de structure de base de données :
Table : Livres
| ID | Titre | Auteur | Genre | Année de publication | Prix |
|---|---|---|---|---|---|
| 1 | Harry Potter | J.K. Rowling | Fantastique | 1997 | 20.00€ |
| 2 | Le Seigneur des Anneaux | J.R.R. Tolkien | Fantaisie | 1954 | 25.00€ |
| 3 | Orgueil et Préjugés | Jane Austen | Romance | 1813 | 15.00€ |
| 4 | Le Petit Prince | Antoine de Saint-Exupéry | Conte | 1943 | 18.00€ |
| 5 | Les Misérables | Victor Hugo | Drame | 1862 | 30.00€ |
Dans cette table, chaque ligne représente un livre différent avec différentes informations telles que l’ID du livre, le titre, l’auteur, le genre, l’année de publication et le prix.
Instructions pour la création de la base de données :
- Ouvrez PHPMyAdmin
- Cliquez sur « Base de données » dans la barre de navigation supérieure et entrez un nom pour votre base de données (par exemple, « Bibliotheque »).
- Cliquez sur « Créer » pour créer la nouvelle base de données.
- Une fois la base de données créée, cliquez dessus dans la barre de navigation de gauche pour la sélectionner.
- Cliquez sur l’onglet « SQL » dans la barre de navigation supérieure.
- Copiez-collez le code suivant dans la zone de texte et cliquez sur « Exécuter » :
CREATE TABLE Livres (
ID INT AUTO_INCREMENT PRIMARY KEY,
Titre VARCHAR(100) NOT NULL,
Auteur VARCHAR(100) NOT NULL,
Genre VARCHAR(50),
Annee_de_publication INT,
Prix DECIMAL(8, 2)
);
INSERT INTO Livres (Titre, Auteur, Genre, Annee_de_publication, Prix)
VALUES ('Harry Potter', 'J.K. Rowling', 'Fantastique', 1997, 20.00),
('Le Seigneur des Anneaux', 'J.R.R. Tolkien', 'Fantaisie', 1954, 25.00),
('Orgueil et Préjugés', 'Jane Austen', 'Romance', 1813, 15.00),
('Le Petit Prince', 'Antoine de Saint-Exupéry', 'Conte', 1943, 18.00),
('Les Misérables', 'Victor Hugo', 'Drame', 1862, 30.00);
Cela va créer une table nommée « Livres » avec les colonnes spécifiées, puis insérer des données initiales dans cette table.
Table : Membres
| ID_Membre | Nom | Prénom | Date de Naissance | Adresse |
|---|---|---|---|---|
| 1 | Dupont | Jean | 1980-05-15 | 123 Rue A |
| 2 | Martin | Marie | 1992-09-20 | 456 Avenue B |
| 3 | Dubois | Pierre | 1975-11-30 | 789 Boulevard C |
Table : Emprunts
| ID_Emprunt | ID_Livre | ID_Membre | Date_Emprunt | Date_Retour |
|---|---|---|---|---|
| 1 | 1 | 1 | 2024-04-01 | 2024-04-15 |
| 2 | 2 | 2 | 2024-03-20 | 2024-04-05 |
| 3 | 3 | 3 | 2024-03-25 | 2024-04-10 |
Dans la table « Membres », chaque ligne représente un membre de la bibliothèque avec des informations telles que l’ID du membre, le nom, le prénom, la date de naissance et l’adresse.
Dans la table « Emprunts », chaque ligne représente un emprunt de livre effectué par un membre de la bibliothèque. Les clés étrangères ID_Livre et ID_Membre font référence aux ID correspondants dans les tables « Livres » et « Membres ».
Pour créer ces tables, suivez les mêmes étapes que précédemment, en utilisant les instructions SQL suivantes :
CREATE TABLE Membres (
ID_Membre INT AUTO_INCREMENT PRIMARY KEY,
Nom VARCHAR(100) NOT NULL,
Prenom VARCHAR(100) NOT NULL,
Date_de_Naissance DATE,
Adresse VARCHAR(255)
);
CREATE TABLE Emprunts (
ID_Emprunt INT AUTO_INCREMENT PRIMARY KEY,
ID_Livre INT,
ID_Membre INT,
Date_Emprunt DATE,
Date_Retour DATE,
FOREIGN KEY (ID_Livre) REFERENCES Livres(ID),
FOREIGN KEY (ID_Membre) REFERENCES Membres(ID_Membre)
);
INSERT INTO Membres (Nom, Prenom, Date_de_Naissance, Adresse)
VALUES ('Dupont', 'Jean', '1980-05-15', '123 Rue A'),
('Martin', 'Marie', '1992-09-20', '456 Avenue B'),
('Dubois', 'Pierre', '1975-11-30', '789 Boulevard C');
INSERT INTO Emprunts (ID_Livre, ID_Membre, Date_Emprunt, Date_Retour)
VALUES (1, 1, '2024-04-01', '2024-04-15'),
(2, 2, '2024-03-20', '2024-04-05'),
(3, 3, '2024-03-25', '2024-04-10');
Ces instructions SQL créent les tables « Membres » et « Emprunts » avec les colonnes spécifiées, puis insèrent des données initiales dans ces tables. Les clés étrangères dans la table « Emprunts » garantissent l’intégrité référentielle en reliant les emprunts aux livres et aux membres correspondants.
Questions sur les tables et la structure de la base de données :
- Quelle est la clé primaire de la table « Membres » ?
- Quelle est la différence entre une clé primaire et une clé étrangère ?
- Pourquoi est-il important d’utiliser des clés étrangères dans une base de données relationnelle ?
Questions sur les requêtes SQL :
En vous aidant du cours précédent sur les base de données : Les bases de données et en effectuant des recherches sur Google, répondez aux questions suivantes.
- Écrivez une requête SQL pour sélectionner tous les livres de la table « Livres » dont le genre est « Fantastique », vous pouvez également exécuter votre requête pour la vérifier.
- Comment pouvez-vous récupérer le nom complet (nom et prénom) de tous les membres de la table « Membres » ?
- Écrivez une requête SQL pour compter le nombre total d’emprunts dans la table « Emprunts ».
- Comment pouvez-vous afficher les détails complets d’un emprunt spécifique, y compris le titre du livre, le nom complet du membre et les dates d’emprunt et de retour ?
- Quelle est la différence entre les clauses INNER JOIN, LEFT JOIN et RIGHT JOIN en SQL ?
Questions sur l’intégrité référentielle et les contraintes :
- Qu’est-ce que l’intégrité référentielle et pourquoi est-elle importante dans une base de données relationnelle ?
- Quelles sont les contraintes que nous avons utilisées dans cette base de données pour garantir l’intégrité référentielle ?
- Que se passerait-il si nous essayions d’insérer un nouvel emprunt avec un ID de livre ou un ID de membre qui n’existe pas dans les tables correspondantes ?
- Comment pouvons-nous supprimer un livre de la table « Livres » sans violer l’intégrité référentielle ?