Lab II+
[30 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 de contre-indications, généralement plusieurs, parfois aucune. Une contre-indication comporte un code unique qui l’identifie, ainsi qu'une description. Une contre-indication est toujours associée à un et un seul médicament.
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.
Il existe des composants naturels et des composants artificiels. Pour les composants naturels, on gère l'espèce végétale qui porte le composant. Pour les composants artificiels, on gère le nom de la société qui le fabrique.
Exemple de données
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 :
CI1 : Ne jamais prendre après minuit.
CI2 : Ne jamais mettre en 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 :
CI3 : Garder à l'abri de la lumière du soleil
Son unique composant est le HG79.
Les composants existants sont :
HG79 : "Vif-argent allégé" ; il s'agit d'un composant naturel extrait de l'edelweiss.
HG81 : "Vif-argent alourdi" ; il s'agit aussi d'un composant naturel extrait de l'edelweiss.
SN50 : "Pur étain" ; il s'agit d'un composant artificiel fabriqué par Lavoisier et fils SA.
Question
Réaliser le modèle conceptuel de données en UML du problème.
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
Méthode :
On choisit ici un héritage par référence, nous ne sommes pas dans un cas trivial.
L'héritage par la classe mère était également adapté (héritage presque complet).
L'héritage par les classes filles en revanche n'était pas adapté (association sur la classe mère problématique et classe mère non abstraite).
Medicament (#nom:varchar, description:varchar, description_longue:varchar, conditionnement:number)
Contre_indication(#code:varchar, description:varchar, medicament=>Medicament)
Composant (#code:varchar, intitule:varchar)
ComposantNaturel (#code=>Composant, espece:varchar)
ComposantArtificiel (#code=>Composant, societe:varchar)
Composition (#medicament=>Medicament, #composant=>Composant)
Complément :
vComposantArtificiel = Projection (JointureNaturelle (Composant, ComposantArtificiel), code, intitule, societe)
vComposantNaturel = Projection (JointureNaturelle (Composant, ComposantNaturel), code, intitule, espece)
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.