Cours "Modèles pour la persistance des objets"

Correspondance (mapping) objet-relationnel

Home (Contact

Objectif du TP :

Écrire le schéma relationnel d'une base de données correspondant à un modèle objet.

Support de cours


IMPORTANT : la connaissance des mécanismes de mapping est indispensable pour comprendre la suite du cours et ce TP sera utilisé dans le TP suivant. Vous devrez donc présenter à l'enseignant qui encadre votre groupe toutes les corrections du TP à la séance suivante. Si vous n'avez pas terminé ce TP pendant la séance vous devrez donc le terminer seul dans la semaine. Si vous n'avez pas réussi à trouver la correction d'un des exercices, vous devrez expliquer précisément ce qui vous a posé problème.


Thème du TP

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.


Les différentes stratégies pour traduire l'héritage

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.

  1. Avec la stratégie "une seule table par arborescence d'héritage".
  2. Avec la stratégie "une table par classe".
  3. Avec la stratégie "une table par classe concrète".

Avant d'aller plus loin, faites vérifier vos réponses par l'enseignant qui encadre votre TP.

Correction :

Traduction de l'héritage


Traduction des associations

  1. Vous supposerez que la stratégie "une seule table par arborescence d'héritage" a été choisie.
    Indiquez ce que vous allez faire pour traduire les associations du modèle objet (dans le cas où un table doit être créée, vous donnerez l'ordre SQL pour la créer, en n'oubliant pas les contraintes d'intégrité) :
  2. Vous supposerez que la stratégie "une table par classe concrète" a été choisie.
    Indiquez ce que vous allez faire pour traduire l'association du modèle objet entre les classes LigneFacture et Article.

Correction :

Traduction des associations


Schéma complet de la base

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.

Correction :

Schéma complet de la base


Ajout de données dans la base

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.

  1. Ajouter un stylo avec les caractéristiques suivantes : référence : 1234, description : Stylo à plume or Tarker noir, prix unitaire : 58, couleur : noir pour les 3 stratégies d'héritage.
  2. Ajouter un lot de référence 4538, pourcentage 10, composé de 10 stylos de référence 1234 et de 3 ramettes de référence 5678 pour les 3 stratégies d'héritage.

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.

Correction :

Ajout de données


Interrogation de la base

Écrivez les commandes SQL pour lister

Correction :

Interrogation


Modification de la base

Écrivez les commandes SQL pour

dans les cas où

Correction :

Modification


Choix d'une Stratégie pour la traduction de l'héritage

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.

Correction :

Conclusions


Retour