"Une entreprise souhaite créer une base de données pour gérer ses clients, ses produits et les commandes passées par ses clients. Chaque client est identifié par un numéro unique, et pour chaque client, on enregistre son nom, son adresse et son adresse e-mail. Chaque produit est également identifié par un numéro unique, et pour chaque produit, on enregistre son nom, sa catégorie et son prix. Les commandes sont passées par les clients et enregistrent les détails de chaque produit commandé ainsi que la quantité commandée. Chaque commande est également identifiée par un numéro unique, et pour chaque commande, on enregistre la date de la commande et le montant total."

Maintenant, voici les étapes pour extraire le schéma de base de données à partir de ce texte, puis créer la base de données et les tables :

Étape 1 : Extraire le schéma de base de données (06 Pts)

  1. Clients
    • ID_Client (int, clé primaire)
    • Nom (varchar)
    • Adresse (varchar)
    • Email (varchar)
  2. Produits
    • ID_Produit (int, clé primaire)
    • Nom (varchar)
    • Catégorie (varchar)
    • Prix (decimal)
  3. Commandes
    • ID_Commande (int, clé primaire)
    • ID_Client (int, clé étrangère référençant la table Clients)
    • Date_Commande (date)
    • Montant_Total (decimal)
  4. Détails_Commandes
    • ID_Detail (int, clé primaire)
    • ID_Commande (int, clé étrangère référençant la table Commandes)
    • ID_Produit (int, clé étrangère référençant la table Produits)
    • Quantité (int)

Étape 2 : Créer la base de données et les tables (7 Pts)

-- Création de la base de données

CREATE DATABASE GestionCommandes;

-- Utilisation de la base de données

USE GestionCommandes;

-- Création de la table Clients

CREATE TABLE Clients (

    ID_Client INT PRIMARY KEY AUTO_INCREMENT,

    Nom VARCHAR(255),

    Adresse VARCHAR(255),

    Email VARCHAR(255)

);

-- Création de la table Produits

CREATE TABLE Produits (

    ID_Produit INT PRIMARY KEY AUTO_INCREMENT,

    Nom VARCHAR(255),

    Catégorie VARCHAR(255),

    Prix DECIMAL(10, 2)

);

-- Création de la table Commandes

CREATE TABLE Commandes (

    ID_Commande INT PRIMARY KEY AUTO_INCREMENT,

    ID_Client INT,

    Date_Commande DATE,

    Montant_Total DECIMAL(10, 2),

    FOREIGN KEY (ID_Client) REFERENCES Clients(ID_Client)

);

-- Création de la table Détails_Commandes

CREATE TABLE Details_Commandes (

    ID_Detail INT PRIMARY KEY AUTO_INCREMENT,

    ID_Commande INT,

    ID_Produit INT,

    Quantité INT,

    FOREIGN KEY (ID_Commande) REFERENCES Commandes(ID_Commande),

    FOREIGN KEY (ID_Produit) REFERENCES Produits(ID_Produit)

);

Requêtes SQL : (07 Pts)

  1. Sélectionner tous les clients :

SELECT * FROM Clients;

  1. Sélectionner tous les produits dans une catégorie spécifique (par exemple, 'Électronique') :

SELECT * FROM Produits WHERE Catégorie = 'Électronique';

  1. Sélectionner tous les détails des commandes pour une commande spécifique (par exemple, ID_Commande = 1) :

SELECT * FROM Details_Commandes WHERE ID_Commande = 1;

4.     Calculer le montant total des commandes passées par un client spécifique (par exemple, ID_Client = 1) :

SELECT SUM(Montant_Total) AS Montant_Total_Commandes FROM Commandes WHERE ID_Client = 1;

5.     Sélectionner le produit le moins cher :

SELECT * FROM Produits ORDER BY Prix ASC LIMIT 1;

6.     Sélectionner les cinq produits les plus chers :

SELECT * FROM Produits ORDER BY Prix DESC LIMIT 5;

7.     Compter le nombre total de commandes passées :

SELECT COUNT(*) AS Nombre_Total_Commandes FROM Commandes;

8.     Sélectionner tous les clients avec leur nombre total de commandes :

SELECT Clients.*, COUNT(Commandes.ID_Commande) AS Nombre_Total_Commandes

FROM Clients

LEFT JOIN Commandes ON Clients.ID_Client = Commandes.ID_Client

GROUP BY Clients.ID_Client;

9.     Calculer le montant total de toutes les commandes passées :

SELECT SUM(Montant_Total) AS Montant_Total_Commandes FROM Commandes;

10.  Sélectionner les détails des commandes passées par un client spécifique, y compris le nom du client, la date de la commande, le nom du produit, la catégorie du produit, le prix unitaire du produit et la quantité commandée :

SELECT

    c.Nom AS Nom_Client,

    com.Date_Commande,

    p.Nom AS Nom_Produit,

    p.Catégorie,

    p.Prix AS Prix_Unitaire,

    dc.Quantité

FROM

    Clients c

JOIN

    Commandes com ON c.ID_Client = com.ID_Client

JOIN

    Détails_Commandes dc ON com.ID_Commande = dc.ID_Commande

JOIN

    Produits p ON dc.ID_Produit = p.ID_Produit

WHERE

    c.ID_Client = [ID_Client_spécifique];



آخر تعديل: السبت، 1 يونيو 2024، 1:17 PM