Écrire le schéma relationnel d'une base de données correspondant à un modèle objet.
Support de cours
Voici le diagramme de classes UML du modèle objet d'une application. Il s'agit de gérer les articles vendus et les factures éditées par un magasin de détails. Certains des articles sont des lots composés d'un certain nombre d'autres articles. Pour simplifier vous supposerez qu'il n'y a pas de lots de lots (un des articles qui compose un lot ne peut être un lot).
Chaque article est identifié par une référence (chaîne de caractères de 8 caractères au plus). Un lot peut être composé de plusieurs articles de types différents; par exemple, on peut trouver un lot composé d'une ramette de papier de référence "R5678", de 10 stylos de référence "R678" et de 5 stylos de référence "S8945". Le prix d'un article unitaire est donné par l'attribut "pu". Le prix d'un lot est le total des prix des articles qu'il contient, multiplié par un certain pourcentage (attribut de la classe Lot). Un stylo a une couleur et une description ; une ramette a un grammage (par exemple 80 g/m²) et une description. La description du lot est "calculée" automatiquement d'après les articles qu'il contient.
Toutes les données contenues dans ces tables sont enregistrées dans une base de données relationnelle.
Vous allez écrire des commandes SQL pour créer les tables de la base de données qui correspondent au modèle objet du diagramme UML.
IMPORTANT : Pour pouvoir travailler avec les 3 stratégies dans une même base, vous suffixerez toutes les tables de la stratégie "une seule table par arborescence d'héritage" avec le chiffre "1", celles de la stratégie "une table par classe concrète" avec la chiffre "2" et celles de la stratégie "une table par classe" avec le chiffre "3". Vous aurez ainsi les tables "STYLO1", "STYLO2" et "STYLO3". N'oubliez pas aussi de suffixer les noms des contraintes d'intégrité et des index si vous en avez.
Vous aller écrire la commande SQL pour créer la table qui contiendra l'information sur la couleur des stylos (ne faites rien pour les autres tables) . Vous créerez les autres tables qui seront référencées par vos commandes SQL pour que le SGBD puisse vérifier votre syntaxe. Important : n'oubliez pas toutes les contraintes d'intégrité, y compris les contraintes "not null". Pour cet exercice vous ignorerez les lots.
Avant d'aller plus loin, faites vérifier vos réponses par l'enseignant qui encadre votre TP.
Complétez ce que vous avez déjà écrit pour créer toutes les tables correspondant au diagramme de classes donné au début du TP, pour chacune des 3 stratégies. Tenez compte des lots. N'oubliez pas de suffixer les noms des tables.
Remarque : les lignes d'une facture doivent être supprimées automatiquement si la facture est supprimée.
Vous allez donner des instructions SQL qui devront être exécutées par l'application pour ajouter des données dans la base de données.
Dans les exercices suivants, saisissez les données suffisantes dans la base pour pouvoir vérifier vos réponses aux questions en tapant des ordres SQL.
Écrivez les commandes SQL pour lister
Écrivez les commandes SQL pour
dans les cas où
Maintenant vous devez avoir votre opinion sur la stratégie de traduction de l'héritage qui convient le mieux pour ce cas particulier. Donnez votre choix et expliquez vos raisons.