0% ont trouvé ce document utile (0 vote)
21 vues8 pages

Merise

Cette étude de cas présente la conception d'une base de données pour un hôpital utilisant la méthode Merise, incluant l'identification des entités, leurs attributs, ainsi que les associations et cardinalités. Un modèle conceptuel et logique des données est élaboré, suivi d'un schéma relationnel et d'un script SQL pour créer les tables nécessaires. Des exemples d'insertion de données et de requêtes de consultation sont également fournis pour illustrer l'utilisation de la base de données.

Transféré par

hkdonito
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
21 vues8 pages

Merise

Cette étude de cas présente la conception d'une base de données pour un hôpital utilisant la méthode Merise, incluant l'identification des entités, leurs attributs, ainsi que les associations et cardinalités. Un modèle conceptuel et logique des données est élaboré, suivi d'un schéma relationnel et d'un script SQL pour créer les tables nécessaires. Des exemples d'insertion de données et de requêtes de consultation sont également fournis pour illustrer l'utilisation de la base de données.

Transféré par

hkdonito
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Cette étude de cas porte sur la conception d'une base de données pour un hôpital en utilisant la

méthode Merise. Voici une résolution détaillée, étape par étape.

1. Identification des Entités et de leurs Attributs

Une entité représente un objet ou un concept du monde réel. Ses attributs sont les propriétés
qui le décrivent.

Entité Attributs

Service CodeService (id), NomService

Médecin MatriculeMed (id), Nom, Prénom, Spécialité

Patient NumPatient (id), Nom, Prénom, DateNaissance, Adresse

Admission NumAdmission (id), DateEntrée, DateSortie

Lit NumLit (id), État (occupé/libre)

Soin NumSoin (id), DateSoin, HeureSoin, TypeSoin

Facture NumFacture (id), DateFacturation, MontantTotal

Export to Sheets

2. Associations et Cardinalités

Les cardinalités définissent le nombre de fois qu'une entité peut participer à une relation.

 Appartenir (Service - Médecin) :

o Un service regroupe plusieurs médecins (1,N).

o Un médecin est affecté à un seul service (1,1).

 Concerner (Patient - Admission) :

o Un patient peut avoir plusieurs admissions (0,N).

o Une admission concerne un seul patient (1,1).

 Attribuer (Admission - Lit) :

o Une admission peut se voir attribuer au plus un lit (0,1).


o Un lit peut être utilisé pour plusieurs admissions successives (0,N).

 Effectuer (Médecin - Soin) :

o Un médecin peut effectuer plusieurs soins (0,N).

o Un soin est effectué par un seul médecin (1,1).

 Lier (Admission - Soin) :

o Une admission peut comporter plusieurs soins (0,N).

o Un soin est rattaché à une seule admission (1,1).

 Établir (Admission - Facture) :

o Une admission donne lieu à une seule facture (1,1).

o Une facture correspond à une seule admission (1,1).

3. Modèle Conceptuel des Données (MCD)

Le MCD est la représentation graphique des entités et des relations.

 [Service] --(1,N)----<Appartenir>----(1,1)-- [Médecin]

 [Médecin] --(0,N)----<Effectuer>----(1,1)-- [Soin]

 [Patient] --(0,N)----<Concerner>----(1,1)-- [Admission]

 [Admission] --(0,N)----<Lier>----(1,1)-- [Soin]

 [Admission] --(0,1)----<Occuper>----(0,N)-- [Lit]

 [Admission] --(1,1)----<Établir>----(1,1)-- [Facture]

4. Modèle Logique des Données (MLD)

Pour passer du MCD au MLD, on applique les règles de transformation : la "clé primaire" du côté
(1,N) devient une "clé étrangère" du côté (1,1).

 Service (<u>CodeService</u>, NomService)

 Médecin (<u>MatriculeMed</u>, Nom, Prénom, Spécialité, #CodeService)

 Patient (<u>NumPatient</u>, Nom, Prénom, DateNaissance)


 Admission (<u>NumAdmission</u>, DateEntrée, DateSortie, #NumPatient, #NumLit)

 Soin (<u>NumSoin</u>, DateSoin, HeureSoin, TypeSoin, #MatriculeMed,


#NumAdmission)

 Lit (<u>NumLit</u>, État)

 Facture (<u>NumFacture</u>, DateFacturation, MontantTotal, #NumAdmission)

5. Schéma Relationnel (SQL simplifié)

Voici la structure finale des tables. Les clés primaires sont en gras et les clés étrangères sont
précédées d'un astérisque.

1. Service (CodeService, NomService)

2. Médecin (MatriculeMed, Nom, Prénom, Spécialité, CodeService)

3. Patient (NumPatient, Nom, Prénom, DateNaissance)

4. Lit (NumLit, État)

5. Admission (NumAdmission, DateEntrée, DateSortie, NumPatient, NumLit)

6. Soin (NumSoin, DateSoin, HeureSoin, TypeSoin, MatriculeMed, NumAdmission)

7. Facture (NumFacture, DateFacturation, MontantTotal, NumAdmission)

Note sur la Facture : Puisqu'une admission a une seule facture et vice-versa (1,1 - 1,1), on aurait
pu fusionner les deux tables, mais garder la facture séparée est plus propre pour la gestion
comptable.

Souhaitez-vous que je génère le code SQL CREATE TABLE correspondant à ce schéma pour créer
la base de données ?

C'est une excellente idée. Passer du schéma logique au code SQL permet de concrétiser la
structure. Voici le script SQL complet pour créer les tables de votre base de données
hospitalière.

Notez que j'ai ajouté des types de données standards (INT, VARCHAR, DATE) et respecté l'ordre
de création pour éviter les erreurs de clés étrangères (on crée d'abord les tables "parentes"
comme Service et Patient avant les tables "enfant" comme Médecin ou Admission).
Script SQL de création

SQL

-- 1. Table Service

CREATE TABLE Service (

CodeService INT PRIMARY KEY,

NomService VARCHAR(100) NOT NULL

);

-- 2. Table Medecin (liée à Service)

CREATE TABLE Medecin (

MatriculeMed INT PRIMARY KEY,

Nom VARCHAR(50) NOT NULL,

Prenom VARCHAR(50),

Specialite VARCHAR(100),

CodeService INT,

FOREIGN KEY (CodeService) REFERENCES Service(CodeService)

);

-- 3. Table Patient

CREATE TABLE Patient (

NumPatient INT PRIMARY KEY,

Nom VARCHAR(50) NOT NULL,

Prenom VARCHAR(50),

DateNaissance DATE,

Adresse VARCHAR(255)

);
-- 4. Table Lit

CREATE TABLE Lit (

NumLit INT PRIMARY KEY,

Etat VARCHAR(20) DEFAULT 'Libre'

);

-- 5. Table Admission (liée à Patient et Lit)

CREATE TABLE Admission (

NumAdmission INT PRIMARY KEY,

DateEntree DATE NOT NULL,

DateSortie DATE,

NumPatient INT NOT NULL,

NumLit INT,

FOREIGN KEY (NumPatient) REFERENCES Patient(NumPatient),

FOREIGN KEY (NumLit) REFERENCES Lit(NumLit)

);

-- 6. Table Soin (liée à Medecin et Admission)

CREATE TABLE Soin (

NumSoin INT PRIMARY KEY,

DateSoin DATE NOT NULL,

HeureSoin TIME,

TypeSoin VARCHAR(100), -- Consultation, examen, intervention...

MatriculeMed INT NOT NULL,

NumAdmission INT NOT NULL,


FOREIGN KEY (MatriculeMed) REFERENCES Medecin(MatriculeMed),

FOREIGN KEY (NumAdmission) REFERENCES Admission(NumAdmission)

);

-- 7. Table Facture (liée à Admission)

CREATE TABLE Facture (

NumFacture INT PRIMARY KEY,

DateFacturation DATE NOT NULL,

MontantTotal DECIMAL(10, 2), -- 10 chiffres au total, 2 après la virgule

NumAdmission INT UNIQUE NOT NULL, -- UNIQUE car 1 facture = 1 admission

FOREIGN KEY (NumAdmission) REFERENCES Admission(NumAdmission)

);

Explications techniques :

 FOREIGN KEY : Ces contraintes assurent l'intégrité référentielle. Par exemple, vous ne
pouvez pas enregistrer un soin pour un médecin qui n'existe pas dans la table Medecin.

 UNIQUE : Pour la table Facture, le NumAdmission est marqué comme UNIQUE pour
respecter la règle de gestion "Une facture correspond à une seule admission".

 DECIMAL(10, 2) : C'est le format idéal pour les montants financiers afin d'éviter les
erreurs d'arrondi des nombres flottants.

 Ordre de suppression : Si vous devez supprimer ces tables, vous devrez le faire dans
l'ordre inverse de leur création pour ne pas briser les liens de parenté.

 Souhaitez-vous que je vous prépare quelques exemples de requêtes d'insertion (INSERT


INTO) pour tester votre base de données ?


 Pour donner vie à votre base de données, voici une série d'exemples concrets allant de
l'insertion de données simples à des requêtes d'extraction plus complexes (Jointures).

 1. Insertion de données (INSERT)
 Il est crucial d'insérer les données dans l'ordre des dépendances.
 SQL
 -- Insertion d'un service et d'un médecin
 INSERT INTO Service (CodeService, NomService) VALUES (1, 'Cardiologie');
 INSERT INTO Medecin (MatriculeMed, Nom, Prenom, Specialite, CodeService)
 VALUES (101, 'Dupont', 'Jean', 'Cardiologue', 1);

 -- Insertion d'un patient et d'un lit
 INSERT INTO Patient (NumPatient, Nom, Prenom, DateNaissance, Adresse)
 VALUES (500, 'Martin', 'Alice', '1985-05-12', '12 rue de la Paix, Paris');
 INSERT INTO Lit (NumLit, Etat) VALUES (10, 'Occupé');

 -- Création d'une admission
 INSERT INTO Admission (NumAdmission, DateEntree, NumPatient, NumLit)
 VALUES (2026, '2026-02-09', 500, 10);

 2. Requêtes de Consultation (SELECT)


 A. Liste des médecins avec le nom de leur service
 On utilise une JOIN (Jointure) pour lier le médecin à son service.
 SQL
 SELECT [Link], [Link], [Link]
 FROM Medecin M
 JOIN Service S ON [Link] = [Link];
 B. Trouver tous les soins effectués pour une admission spécifique
 SQL
 SELECT DateSoin, HeureSoin, TypeSoin
 FROM Soin
 WHERE NumAdmission = 2026;
 C. Calculer le montant total facturé par mois
 SQL
 SELECT STRFTIME('%m-%Y', DateFacturation) AS Mois, SUM(MontantTotal) AS
RevenuMensuel
 FROM Facture
 GROUP BY Mois;

 3. Requêtes d'Analyse (Jointures Multiples)
 D. Savoir quel médecin a soigné quel patient
 Cette requête traverse quatre tables pour obtenir l'information.
 SQL
 SELECT DISTINCT [Link] AS Patient, [Link] AS Medecin
 FROM Patient P
 JOIN Admission A ON [Link] = [Link]
 JOIN Soin S ON [Link] = [Link]
 JOIN Medecin M ON [Link] = [Link];

 4. Mise à jour et Suppression (UPDATE/DELETE)


 E. Libérer un lit après une sortie
 SQL
 UPDATE Lit SET Etat = 'Libre' WHERE NumLit = 10;
 F. Supprimer une facture erronée
 SQL
 DELETE FROM Facture WHERE NumFacture = 99;

 Résumé des commandes utiles :

Commande Rôle

SELECT Lire des données

INSERT Ajouter des données

UPDATE Modifier des données existantes

DELETE Supprimer des données

COUNT() Compter le nombre de lignes

SUM() Additionner des valeurs numériques

 Voulez-vous que je vous aide à rédiger une requête spécifique, par exemple pour calculer
la durée moyenne d'hospitalisation ?

Vous aimerez peut-être aussi