0% ont trouvé ce document utile (0 vote)
80 vues10 pages

Base de Données Hospitalière TP

tp

Transféré par

randa.allalou
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)
80 vues10 pages

Base de Données Hospitalière TP

tp

Transféré par

randa.allalou
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

Nom et Prénom Allalou Randa

Groupe 01

Rapport de TP : Base de Données Hospitalière

1. Introduction

Ce TP consiste à créer une base de données pour la gestion des informations hospitalières,
y compris les informations sur les hôpitaux, services, salles, médecins, patients, infirmiers,
et hospitalisations. Les données doivent respecter certaines contraintes de domaine et nous
devons effectuer plusieurs requêtes spécifiques pour extraire des informations de la base de
données.

Réponses:

CREATE DATABASE HOPITALDB;

USE HOPITALDB;

CREATE TABLE HOPITAL (


CodeHopital INT PRIMARY KEY,
Nom VARCHAR(100),
Adresse VARCHAR(255),
Commune VARCHAR(100),
Mt_service INT
);

CREATE TABLE SERVICE (


Matricule INT PRIMARY KEY,
NomService VARCHAR(100) NOT NULL,
NbLits INT
);

CREATE TABLE SALLE (


Num_Salle INT PRIMARY KEY,
Mat_service INT,
FOREIGN KEY (Mat_service) REFERENCES SERVICES(Matricule)
);

CREATE TABLE MEDECIN (


CodeMedecin INT PRIMARY KEY,
NomMedecin VARCHAR(100),
PrenomMedecin VARCHAR(100),
Ddn DATE,
Sex CHAR(1) CHECK (Sex IN ('H', 'F')),
Specialite VARCHAR(100),
nb_heures FLOAT CHECK (nb_heures <= 80),
Mtr_service INT,
FOREIGN KEY (Mtr_service) REFERENCES SERVICES(Matricule)
);

CREATE TABLE PATIENT (


CodePatient INT PRIMARY KEY,
NomPatient VARCHAR(100),
PrenomPatient VARCHAR(100),
Ddn DATE,
Sex CHAR(1),
Adresse VARCHAR(255),
NumSS INT,
DateEntree DATE,
DateSortie DATE,
No_Salle INT,
FOREIGN KEY (No_Salle) REFERENCES SALLE(Num_Salle)
);

CREATE TABLE INFIRMIER (


CodeInfirmier INT PRIMARY KEY,
NomInfirmier VARCHAR(100),
PrenomInfirmier VARCHAR(100),
DdnI DATE,
Sex CHAR(1)
);

CREATE TABLE SE_CHARGER (


CdMedecin INT,
CdPatient INT,
PRIMARY KEY (CdMedecin, CdPatient),
FOREIGN KEY (CdMedecin) REFERENCES MEDECIN(CodeMedecin),
FOREIGN KEY (CdPatient) REFERENCES PATIENT(CodePatient)
);
CREATE TABLE HOSPITALISATION (
Codehospital INT PRIMARY KEY,
num_lit INT,
type_hospitalisation VARCHAR(50) ,
diagnostic TEXT
);
INSERT INTO HOPITAL (CodeHopital, Nom, Adresse, Commune, Mt_service) VALUES
(1, 'CHU de Mostapha BACHA', 'Place du 1er Mai 1945, Sidi M-Hamed, Algérie', 'Alger' ,1);
INSERT INTO HOPITAL (CodeHopital, Nom, Adresse, Commune, Mt_service) VALUES
(2, 'CHU El harrach Salim Zemirli', 'Route de Baraki BP 71-16004 El Harrach Algérie',
'Alger',2);
--@block
INSERT INTO SERVICES (Matricule, NomService, NbLits) VALUES
(1, 'neurologie', 20);
INSERT INTO SERVICES (Matricule, NomService, NbLits) VALUES
(2, 'radiologie', 25);

--@block
INSERT INTO MEDECIN (CodeMedecin, NomMedecin, PrenomMedecin, Ddn, Sex,
Specialite, Mtr_service) VALUES
(354605 , 'BENALIA', 'Abd El-latif', '1967-12-24', 'M', 'ORL',1);
INSERT INTO MEDECIN (CodeMedecin, NomMedecin, PrenomMedecin, Ddn, Sex,
Specialite, Mtr_service) VALUES
(354606, 'senouci', 'assma', '1988-09-02', 'F', 'Cardiologue',2);
--changement de code medecin est du au contrainte de la cle primaire--
--@block
INSERT INTO PATIENT (CodePatient, NomPatient, PrenomPatient, Ddn, Sex, Adresse,
NumSS, DateEntree, DateSortie, No_Salle) VALUES
(1, 'LAKHAL', 'nora', '1975-05-30', 'F', 'Cité les jardins, Bordj El- kiffane, Alger', 11122,
'2019-05-19', '2019-05-31', 1);
INSERT INTO PATIENT (CodePatient, NomPatient, PrenomPatient, Ddn, Sex, Adresse,
NumSS, DateEntree, DateSortie, No_Salle) VALUES
(2, 'Barkati', 'Fouad', '1981-07-29', 'M', 'Cité Sonalgaz ,Chevally,Alger', 11133, '2019-07-
06', '2019-07-06', 2);
--changement du numss en raison du grandeur de l'entier--
--@block
INSERT INTO salle (Num_Salle, Mat_service)
VALUES (1,1);
INSERT INTO salle (Num_Salle, Mat_service)
VALUES (2,2);
--@block
SELECT * FROM HOPITAL;
SELECT * FROM services;
SELECT * FROM SALLE;
SELECT * FROM MEDECIN;
SELECT * FROM PATIENT;
SELECT * FROM INFIRMIER;
SELECT * FROM SE_CHARGER;
SELECT * FROM HOSPITALISATION;
--@block
ALTER TABLE MEDECIN
ADD CONSTRAINT chk_sex_medecin CHECK (Sex IN ('H', 'F'));

ALTER TABLE INFIRMIER


ADD CONSTRAINT chk_sex_infirmier CHECK (Sex IN ('H', 'F'));
----les tuples ne respect pas la contrainte----
--@block
UPDATE medecin
SET sex='H' where sex='M';
UPDATE INFIRMIER
SET sex='H' where sex='M';
--@block
ALTER TABLE MEDECIN
ADD CONSTRAINT chk_nb_heures CHECK (nb_heures <= 80);
--@block
ALTER TABLE HOSPITALISATION
ADD CONSTRAINT chk_type_hospitalisation CHECK (type_hospitalisation IN
('hebdomadaire', 'mensuel', 'annuel'));
--@block
INSERT INTO PATIENT (CodePatient, NomPatient, PrenomPatient, Ddn, Sex, NumSS)
VALUES
(3, 'LASSAS', 'MOHAMED', '1996-12-12', 'M', 104589);
--@block
INSERT INTO services(Matricule, NomService, NbLits) VALUES
(1, 'Cardiologie', 'OUSSAMA', 'cent sept');
--avant correction--
INSERT INTO services(Matricule, NomService, NbLits) VALUES
(3, 'Cardiologie', 107 );
--apres correction--
--@block
SELECT * FROM PATIENT WHERE Sex = 'F';
--@block
SELECT * FROM MEDECIN WHERE Ddn < '1960-01-01';
--@block
SELECT hopital.nom from hopital,services
where hopital.Mt_service=services.Matricule
AND services.NomService='ORL'
--@block
SELECT hospitalisation.diagnostic
FROM HOSPITALISATION,PATIENT WHERE
hospitalisation.Codehospital = Patient.CodePatient
AND Patient.NomPatient = 'Nora' AND Patient.Ddn = '1975-05-30';
--@block
SELECT COUNT(*)
FROM PATIENT P,SERVICES S WHERE P.No_Salle = S.Matricule
AND S.NomService = 'Urgences';
--@block
SELECT P.*
FROM PATIENT AS P, SALLE AS S ,SERVICES AS SV,HOPITAL AS H
where P.No_Salle = S.Num_Salle
and S.Mat_service = SV.Matricule
and SV.Matricule = H.Mt_service
and SV.NomService = 'urgences' AND H.Nom = 'CHU de Mostapha BACHA';

Conclusion:

Ce TP a couvert la création d’une base de données hospitalière complète avec des tables
bien définies, des contraintes de domaine appropriées, et des insertions de données
correctes. Les requêtes SQL spécifiques ont permis de démontrer comment extraire des
informations utiles de la base de données en fonction de critères particuliers. Ce TP illustre
l’importance d’une bonne conception de base de données pour une gestion efficace et
précise des informations

Vous aimerez peut-être aussi