Devoir en groupe - Administration des Bases de Données
Sujet : Optimisation d'une base de données pour une petite boutique en ligne
Une petite boutique en ligne présente des problèmes de performance avec sa base de données. Le système
comprend :
- Une table Produits (100 produits)
- Une table Clients (1000 clients)
- Une table Commandes
- Une table Détails_Commande
1. Analyse de la structure (6 points)
Le modèle de base de données inclut les tables suivantes :
- Clients (id_client PK, nom, email, téléphone, adresse)
- Produits (id_produit PK, nom, prix, stock, catégorie)
- Commandes (id_commande PK, id_client FK, date_commande, statut)
- Détails_Commande (id_detail PK, id_commande FK, id_produit FK, quantité, prix_unitaire)
Colonnes nécessitant des index
- Index sur id_client dans Commandes (recherche des commandes d'un client)
- Index sur id_produit dans Détails_Commande (vérification du stock et des ventes)
- Index sur date_commande dans Commandes (calcul des ventes par jour)
2. Optimisation (8 points)
Les requêtes suivantes ont été optimisées pour améliorer les performances :
1. Liste des produits les plus vendus du mois
SELECT p.nom, SUM(dc.quantite) AS total_vendus
FROM Details_Commande dc
JOIN Produits p ON dc.id_produit = p.id_produit
JOIN Commandes c ON dc.id_commande = c.id_commande
WHERE c.date_commande >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
GROUP BY p.nom
ORDER BY total_vendus DESC
LIMIT 10;
2. Historique des commandes d'un client
SELECT c.id_commande, c.date_commande, c.statut, SUM(dc.prix_unitaire * dc.quantite) AS
total
FROM Commandes c
JOIN Details_Commande dc ON c.id_commande = dc.id_commande
WHERE c.id_client = ?
GROUP BY c.id_commande, c.date_commande, c.statut;
3. Sécurité basique (6 points)
- Définition de 3 profils utilisateurs : Admin, Vendeur, Client
- Droits d'accès :
- Admin : accès total
- Vendeur : accès aux commandes et produits
- Client : accès à ses propres commandes
- Plan de sauvegarde quotidien avec une base de secours en cas de panne