Sunteți pe pagina 1din 2

Soit la base de données suivante permettant de gérer les consultations entre des médecins

identifiés par leurs numéros RPPS (répertoire partagé des professionnels de santé) et des
patients identifiés par leur numéro d’assurance sociale et associés à un médecin traitant.
PATIENT (numAS, nomP, prenomP, sexe, dateNaiss, numRPPS)
MEDECIN (numRPPS, nomM, prenomM, specialite, ville, adresse)
CONSULTE (numRPPS, numAS, dateC, diagnostic, numOrd)
ORDONNANCE (numOrd, idMed, nbBoites)
MEDICAMENT(idMed, nom, categorie)
Le patient est identifié par son numAS numéro d'assurance sociale et son médecin traitant
est numRPPS. Le médecin est identifié par numRPPS et il peut avoir une spécialité. Un
patient consulte un médecin à une certaine date. Lors d’une consultation, le médecin
effectue un diagnostic et lui prescrit une ordonnance dont l'identifiant est numOrd. Une
ligne de l’ordonnance du médecin ‘numOrd’ prévoit de donner un nbBoites du
médicament idMed.

Attention à bien définir les clés primaires (Champs en gras) et étrangères (Champs
soulignés). Voici les autres contraintes portant sur ces tables.

1. Les données nomP, prenomP, nomM, prenomM et diagnostic doivent toujours être
connues.
2. La valeur « nbBoites » a une valeur par défaut à 1 et prend des valeurs positives. Le
champ sexe peut avoir uniquement les valeurs ‘F’ et ‘M’.
3. Il ne peut pas y avoir deux médicaments avec le même nom et la même catégorie.
4. Les spécialités autorisées sont : 'Médecine Générale', 'Chirurgie', 'Pédiatrie',
'Psychiatrie' et 'Radiologie'.
5. La suppression ou la modification d'un médecin doit entraîner la suppression ou la
modification de ses consultations. La suppression d'un patient doit entraîner la
suppression de ses consultations. La suppression ou la modification d'un médicament,
référencée dans ORDONNANCE, ne sont pas autorisées. La modification d'un médecin
doit entraîner la modification de ses patients. La suppression d'un médecin doit entraîner
la modification de ses patients en donnant la valeur nulle au numRPPS. La modification
d'un patient doit entraîner la modification de ses consultations.
Écrivez des instructions SQL pour la création d’une BD de tel schéma, sans oublier
– les contraintes d’intégrité référentielle ;
– la politique d’effacement et de modification liées à ces contraintes;
– les 5 contraintes précédentes (les domaines, les assertions et les triggers ne sont
pas autorisés).
CREATE TABLE MEDECIN (
numRPPS INTEGER PRIMARY KEY,
nomM VARCHAR(40) NOT NULL,
prenomM VARCHAR(40) NOT NULL,
specialite VARCHAR(40) CHECK(specialite IN ('Médecine
Générale', 'Chirurgie', 'Pédiatrie', 'Psychiatrie',
'Radiologie'),
ville VARCHAR(40),
adresse VARCHAR(100));

CREATE TABLE PATIENT (


numAS INTEGER PRIMARY KEY,
nomP VARCHAR(40) NOT NULL,
prenomP VARCHAR(40) NOT NULL,
sexe CHAR(1) CHECK(sexe IN ('M', 'F'),
dateNaiss DATE,
numRPPS INTEGER
FOREIGN KEY (numRPPS) REFERENCES MEDECIN(numRPPS)
ON DELETE SET NULL ON UPDATE CASCADE);
CREATE TABLE ORDONNANCE
(numOrd INTEGER,
idMed INTEGER,
nbBoites INTEGER DEFAULT 1 CHECK(nbBoites>=0),
PRIMARY KEY (numOrd, idMed)
FOREIGN KEY (idMed) REFERENCES MEDICAMENT(idMed)
ON DELETE NO ACTION ON UPDATE NO ACTION)

CREATE TABLE MEDICAMENT


(idMed INTEGER PRIMARY KEY,
NOM VARCHAR(20),
CATEGORIE VARCHAR(20),
UNIQUE (numOrd, idMed)
)

CREATE TABLE CONSULTE


(numRPPS INTEGER,
numAS INTEGER,
dateC DATE,
diagnostic VARCHAR(100) NOT NULL,
numOrd INTEGER,
PRIMARY KEY (numRPPS, numAS, date),
FOREIGN KEY (numAS) REFERENCES PATIENT(numAS)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (numRPPS) REFERENCES MEDECIN(numRPPS)
ON DELETE CASCADE ON UPDATE CASCADE);

S-ar putea să vă placă și