Lab I++
Description du problème
[20 min]
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.
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.
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
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
Medicament (#nom:varchar, description:varchar, description_longue:varchar, conditionnement:number)
Contre_indication(#code:varchar, description:varchar, medicament=>Medicament)
Question
Créer une base de données en SQL correspondant au modèle relationnel.
Solution
CREATE TABLE Medicament (
nom varchar,
description varchar,
description_longue varchar,
conditionnement integer,
PRIMARY KEY (nom)
);
CREATE TABLE Contre_indication (
code varchar,
description varchar,
medicament varchar,
PRIMARY KEY (code),
FOREIGN KEY (medicament) REFERENCES Medicament (nom)
);
Question
Insérer les données fournies en exemple dans la base de données.
Solution
INSERT INTO Medicament (nom,description,description_longue,conditionnement)
VALUES ('Chourix','Médicament contre la chute des choux','Vivamus...',13);
INSERT INTO Contre_indication (code,description,medicament)
VALUES ('CI1','Ne jamais prendre après minuit','Chourix');
INSERT INTO Contre_indication (code,description,medicament)
VALUES ('CI2','Ne jamais mettre en contact avec de l''eau','Chourix');
INSERT INTO Medicament (nom,description,description_longue,conditionnement)
VALUES ('Tropas','Médicament contre les dysfonctionnements intellectuels','Suspendisse...',42);
INSERT INTO Contre_indication (code,description,medicament)
VALUES ('CI3','Garder à l''abri de la lumière du soleil','Tropas');