management et sciences de gestion (ECT, 1re et 2e années) · Chapitre 5 · Exercice de TD
Lire une base de données
Le système d'information · niveau 2
Énoncé
Une librairie en ligne (entreprise fictive) gère trois tables : LIVRE (CodeLivre, Titre, Prix, CodeEditeur), EDITEUR (CodeEditeur, NomEditeur, Ville) et LIGNE_COMMANDE (NumCommande, CodeLivre, Quantité).
- Identifier la clé primaire de chaque table, et les clés étrangères.
- Pourquoi le nom de l'éditeur n'est-il pas enregistré dans la table LIVRE ?
- Le gérant veut connaître le chiffre d'affaires réalisé par éditeur. Quelles tables la requête doit-elle utiliser, et par quels champs les relier ?
Corrigé
1. LIVRE : clé primaire CodeLivre ; clé étrangère CodeEditeur (vers EDITEUR). EDITEUR : clé primaire CodeEditeur. LIGNE_COMMANDE : la clé primaire est le couple (NumCommande, CodeLivre), car une commande comporte plusieurs livres et un livre figure dans plusieurs commandes ; CodeLivre est aussi une clé étrangère vers LIVRE.
2. Pour éviter la redondance : un éditeur publie de nombreux livres ; son nom serait répété des centaines de fois, avec un risque d'incohérence (fautes de frappe, changement de nom). La clé étrangère suffit à le retrouver, et une seule modification dans EDITEUR met à jour tous les livres.
3. Les trois tables : LIGNE_COMMANDE (quantités) reliée à LIVRE par CodeLivre (prix), LIVRE reliée à EDITEUR par CodeEditeur (nom). Pour chaque ligne, on calcule Quantité Prix, puis on totalise par NomEditeur.
Ce qu'il faut retenir. Une base relationnelle découpe l'information en tables sans redondance et la recompose à la demande grâce aux clés.