Activité Gestion d’un magasin de vente de détail
- Consigne
- Situation
- Objectifs
- Résultat attendu
- Ressources
- Mise en route
- Tâches
Consigne
Avant de commencer, veuillez lire une première fois le document dans son ensemble.
Le travail est individuel. Vous pouvez communiquer en respectant le code d’honneur. Si vous être bloqué, demandez de l’aide afin de ne pas prendre trop de retard.
Situation
Vous êtes responsable de la base de données pour un magasin de vente au détail. Vous devez créer la base de données, insérer des données, vérifier l’intégrité des données et effectuer des opérations de sauvegarde et de restauration. Vous devez également utiliser des contraintes pour assurer l’intégrité des données.
Objectifs
À la fin de ce travail, vous devez :
- Être capable d’interpréter correctement un modèle de données logique relationnel.
- Être capable d’implémenter le modèle dans un SGBD (Système de Gestion de Base de Données).
- Être capable de garantir l’intégrité référentielle avec des contraintes.
- Être capable d’insérer des données avec des commandes DML.
- Être capable d’importer des données en masse à partir d’un fichier CSV.
- Être capable de vérifier l’exhaustivité et l’intégrité des données insérées.
- Être capable de corriger les données erronées.
- Être capable d’effectuer des sauvegardes et restaurations.
Résultat attendu
Une mise à jour de votre résumé tenant, au maximum, sur une page A4 que vous devez déposer sur Moodle
Ressources
- Présentation : Gestion des contraintes
- Présentation : Contrôle des données importées dans une DB
- Présentation : Importer des données
- Présentation : Structured Query Language (SQL)
- MariaDB doc : Data Mainipulation
- Du modèle logique au modèle physique
Mise en route
-
Connectez-vous au serveur de bases de données qui vous a été attribué au module 164.
-
Effectuez les tâches demandées les une après les autres.
À vous de jouer !
Tâches
Créer les tables
Créez les tables suivantes et le modèle logique suivant en utilisant les contraintes d’intégrité adéquate:
-
Produits (id, nom, prix_unitaire, stock_disponible, id_categorie)
-
Categories (id, nom)
-
Clients (id, nom, prenom, adress, email)
-
Commandes (id, id_client, date_commande, montant_total)
-
Lignes_Commande (id, id_commande, id_produit, quantite, prix_unitaire)
Insérer les données
Table “Produits”
id (clé primaire) | nom | prix_unitaire | stock_disponible | id_caregorie (clé étrangère) |
---|---|---|---|---|
1 | Télévision | 499.99 | 1 | 1 |
2 | shirt | 19.99 | 1 | 2 |
3 | Pomme | 0.99 | 1 | 3 |
Table “Categories”
id (clé primaire) | nom |
---|---|
1 | Électronique |
2 | Vêtements |
3 | Alimentation |
Table “Clients”
id (clé primaire) | nom | prenom | adresse | |
---|---|---|---|---|
1 | Dupont | Jean | 123 Rue de la Liberté | jean.dupont@example.co |
2 | Martin | Marie | 456 Avenue des Roses | marie.martin@example.com |
Table “Commandes”
id (clé primaire) | id_client | date_commande | montant_total |
---|---|---|---|
1 | 2 | 2024-06-01 | 519.97 |
2 | 1 | 2024-06-02 | 19.99 |
Table “Lignes_Commandes”
id (clé primaire) | id_commande | id_produit | quantite | prix_unitaire |
---|---|---|---|---|
1 | 1 | 1 | 1 | 419.99 |
2 | 1 | 2 | 1 | 19.99 |
3 | 2 | 2 | 1 | 19.99 |
Importer des données en masse
On vous demande de créer un fichier CSV afin de pouvoir importer en masse les données
Vérifier l’exhaustivité et l’intégrité des données insérées
On vous demande de vérifier au minimum pour les données insérées :
-
Que tous les produits ont un prix supérieur à 0
-
Que tous les stocks sont supérieurs ou égaux à 0
-
Que toutes les commandes ont une date inférieure ou égale à la date actuelle
-
Que toutes les commandes ont un montant total supérieur à 0
Corriger les données erronées
On vous demande de corriger au minimum les données suivantes:
-
Mettre à jour le prix d’un produit erroné
-
Mettre à jour le stock d’un produit erroné
Sauvegarder et restaurer la base de données
- Sauvegarder la base de données
- Supprimez-la
- Restauration de la base de données
Opérations de test pour les contraintes
Test de la contrainte CHECK sur les produits
INSERT INTO Produits (ID_Produit, Nom_Produit, Prix_Unitaire, Stock_Disponible, ID_Categorie)
VALUES (7, 'Produit Erroné', -10, 50, 1); -- Doit échouer
Test des clauses ON DELETE et ON UPDATE
-- Suppression d'un produit et vérification du comportement en cascade
DELETE FROM Produits WHERE ID_Produit = 1;
-- Mise à jour d'un produit et vérification du comportement en cascade
UPDATE Produits SET ID_Produit = 8 WHERE ID_Produit = 2;
Test de la contrainte CHECK sur les commandes
INSERT INTO Commandes (ID_Commande, ID_Client, Date_Commande, Montant_Total)
VALUES (3, 1, '2024-01-01', 100.00); -- Doit échouer si date future