Objectif de cette étape #
Nous allons identifier les tables nécessaires et comprendre comment elles sont reliées.
L’objectif n’est pas de connaître toute la base Demonstration, mais uniquement les données utiles à notre projet.
Les tables utilisées #
Clients #
La table Clients contient les informations relatives aux clients.
Champs utilisés :
| Champ | Utilisation |
| CodeClient | Identifier le client et le relier à ses commandes |
| RaisonSociale | Afficher le nom de l’entreprise cliente |
| Pays | Filtrer les résultats par pays |
Commandes #
La table Commandes contient une ligne par commande.
Champs utilisés :
| Champ | Utilisation |
| NumCommande | Identifier la commande |
| CodeClient | Relier la commande au client |
| DateCommande | Regrouper les ventes dans le temps |
Commandes_Details #
La table Commandes_Details contient les produits présents dans chaque commande.
Une commande peut donc produire plusieurs lignes dans cette table.
Champs utilisés :
| Champ | Utilisation |
| NumCommande | Relier la ligne à la commande |
| CodeProduit | Relier la ligne au produit |
| Prix | Connaître le prix appliqué lors de la commande |
| Quantite | Connaître la quantité commandée |
| Remise | Calculer le montant après remise |
Produits #
La table Produits décrit les produits vendus.
Champs utilisés :
| Champ | Utilisation |
| CodeProduit | Identifier le produit |
| NomProduit | Afficher son nom |
| NumCategorie | Relier le produit à sa catégorie |
Categories #
La table Categories contient les familles de produits.
Champs utilisés :
| Champ | Utilisation |
| CodeCategorie | Identifier la catégorie |
| NomCategorie | Afficher le nom de la catégorie |
Les tables et champs employés ici correspondent à la structure française de la base Demonstration de BiBOARD.
Relations entre les tables #
Clients
│
│ CodeClient
▼
Commandes
│
│ NumCommande
▼
Commandes_Details
│
│ CodeProduit
▼
Produits
│
│ NumCategorie
▼
Categories

Sous une autre forme :
Un client
possède plusieurs commandes.
Une commande
possède plusieurs lignes de commande.
Une ligne de commande
concerne un produit.
Un produit
appartient à une catégorie.
Comprendre le niveau de détail #
La notion de niveau de détail est essentielle.
Dans notre future requête détaillée, une ligne représentera :
Un produit présent dans une commande
Une commande contenant trois produits produira donc trois lignes.
Cela a une conséquence importante :
COUNT(*)
compterait les lignes de produits, et non les commandes.
Pour compter les commandes, nous utiliserons :
COUNT(DISTINCT NumCommande)
Quel prix utiliser ? #
La table Produits peut contenir un prix catalogue actuel.
La table Commandes_Details contient le prix enregistré au moment de la commande.
Pour calculer le chiffre d’affaires historique, nous utiliserons donc :
Commandes_Details.Prix
et non le prix actuel du produit.
Méthode pour identifier les données nécessaires #
Pour chaque information à afficher, posez-vous cinq questions :
- Quelle information métier faut-il afficher ?
- Quel est son niveau de détail ?
- Dans quelle table se trouve-t-elle ?
- Quelles relations sont nécessaires pour l’atteindre ?
- Un calcul ou un regroupement est-il nécessaire ?
Exemple
Pour afficher le chiffre d’affaires par catégorie :
- le prix, la quantité et la remise viennent de Commandes_Details ;
- le produit est identifié par CodeProduit ;
- la catégorie est obtenue par la table Produits ;
- son libellé vient de Categories ;
- les montants doivent être regroupés par NomCategorie.
Résultat attendu
Vous savez expliquer le chemin permettant de partir d’un client pour retrouver les produits qu’il a commandés.
