Achat d'articles de sport - Table d'association

Série d'exercices

Cet exercice fait partie d'une série :

Un magasin d'articles de sport souhaite gérer ses ventes par une base de données.
On doit y trouver des informations sur leurs clients et sur les articles qu'ils ont achetés.

On a enregistré en mémoire une base de données dont la structure est présentée par le schéma ci-dessous :

sql

Le champ nom contient à la fois le prénom et le nom du client et est au format "prénom nom".
Le champ payé vaut \(1\) si la facture est payée, et \(0\) sinon. Ce champ prend la valeur \(0\) par défaut.

Table d'associations

On ne pas pas créer un champ article dans la table Factures car une facture peut permettre de régler l'achat de plusieurs articles. De la même façon, on ne peut pas ajouter un champ facture dans la table Articles car un même article peut être acheté plusieurs fois et donc apparaître sur plusieurs factures.

Pour ce faire, on crée une troisième table, appelée table d'association.
La clé primaire de cette table n'est pas constituée d'un champ, mais d'un couple de champs (ce couple est alors unique) constitué des deux clés étrangères des tables que l'on souhaite associer.

Dans notre exemple, la clé de la table commande est (id_facture, id_article).

L'exercice utilise les mots INSERT, DELETE, UPDATE et INTO.

On demande de compléter le code proposé pour réaliser les requêtes SQL suivantes :



Recherches

Vous pouvez utiliser la fenêtre ci-dessous pour réaliser les recherches nécessaires à la question d'après :



La cliente Clarisse Agbegnenou souhaite commander \(2\) raquettes de badminton et \(1\) vélo. Son numéro de facture sera le \(8\) et sera édité à la date du jour (le 20 mai 2025).

Format de dates

Les dates sont au format SQL, à savoir 'AAAA-MM-JJ'

Créer les requêtes nécessaires pour réaliser la commande (Attention : quand on commande un article, son stock disponible baisse !)



Solution
SQL
INSERT INTO Factures (id_client, date) VALUES (11,"2025-05-20");
INSERT INTO Commandes VALUES (8,8,2),(5,8, 1);
UPDATE Articles SET stock = stock - 2 WHERE id_article = 8;
UPDATE Articles SET stock = stock - 1 WHERE id_article = 5;