Lab III
[20 min]
Description du problème
Un laboratoire souhaite gérer les médicaments qu'il conçoit.
Un médicament est décrit par un nom, qui permet de l'identifier. En effet il n'existe pas deux médicaments avec le même nom. Un médicament comporte une description courte en français, ainsi qu'une description longue en latin. On gère aussi le conditionnement du médicament, c'est à dire le nombre de pilules par boîte (qui est un nombre entier).
À chaque médicament on associe une liste dédiée de contre-indications, généralement plusieurs, parfois aucune.
Tout médicament possède au moins un composant, souvent plusieurs. Un composant est identifié par un code unique et possède un intitulé. Tout composant peut intervenir dans la fabrication de plusieurs médicaments. Il existe des composants qui ne sont pas utilisés pour fabriquer des médicaments et que l'on veut quand même gérer.
Données de test
Afin de matérialiser notre base de données, nous obtenons les descriptions suivantes :
Le Chourix a pour description courte
« Médicament contre la chute des choux »
et pour description longue« Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare. »
. Il est conditionné en boîte de 13.Ses contre-indications sont :
Le Chourix ne doit jamais être pris après minuit.
Le Chourix ne doit jamais être mis au contact avec de l'eau.
Ses composants sont le HG79 et le SN50.
Le Tropas a pour description courte
« Médicament contre les dysfonctionnements intellectuels »
et pour description longue« Suspendisse lectus leo, consectetur in tempor sit amet, placerat quis neque. Etiam luctus porttitor lorem, sed suscipit est rutrum non. »
. Il est conditionné en boîte de 42.Ses contre-indications sont :
Le Tropas doit être gardé à l'abri de la lumière du soleil
Son unique composant est le HG79.
Les composants existants sont :
HG79 : "Vif-argent allégé"
HG81 : "Vif-argent alourdi"
SN50 : "Pur étain"
Question
Effectuez le modèle conceptuel en UML de ce problème.
Indice
On note dans l'énoncé que les contre-indications sont dédiée aux médicaments, et par ailleurs on note dans les données exemples que les contre-indications sont énoncées spécifiquement par rapport aux médicaments.
Indice
Ce n'est pas parce que les composants s'appellent ainsi dans l'énoncé que l'on est en présence d'une composition.
Solution
Remarque :
On note dans l'énoncé que les contre-indications sont dédiée aux médicaments, et par ailleurs on note dans les données exemples que les contre-indications sont énoncées spécifiquement par rapport aux médicaments.
On a donc affaire à une composition.
Remarque :
Ce n'est pas parce que les composants s'appellent ainsi dans l'énoncé que l'on est en présence d'une composition. Ici les composants peuvent exister sans médicament et être partagés entre plusieurs médicaments, il s'agit donc d'une agrégation.
Modélisation de la base en UML
On rappelle que les associations doivent être obligatoirement nommées, sauf dans le cas d’agrégations et de compositions, qui sont des associations déjà nommées.
Les contre-indications peuvent également être modélisées comme un attribut multivalué.
Rappel :
Question
En mobilisant les règles adéquates, proposer un modèle logique de données correspondant en relationnel. Le repérage des domaines et des clés est obligatoire.
Solution
Medicament (#nom:varchar, description:varchar, description_longue:varchar, conditionnement:number)
Contre_indication(#pknum:varchar, #medicament=>Medicament, description:varchar)
Composant (#code:varchar, intitule:varchar)
Composition (#medicament=>Medicament, #composant=>Composant)
Remarque :
En l'absence de clé locale naturelle pour Contre_indication, on ajoute une clé locale artificielle pknum
(il y aura plusieurs valeurs identiques de pknum).
Question
Dessiner des tableaux remplis avec les données fournies en exemple, afin de montrer que le modèle fonctionne selon le besoin exprimé initialement. On pourra mettre le premier mot seulement des descriptions pour gagner du temps.