Vous êtes sur la page 1sur 27

Année universitaire

2020/2021

Rapport Projet
Base de Données

Encadré par
Madame Zaibi Dorra

Réalisé par
Yousfi Houssem et Zgolli Jihene
1
Sommaire

INTRODUCTION

1. OUTILS ET ENVIRONNEMENT DE DEVELOPPEMENT

2. MODELISATION DE LA BASE DE DONNEES


2.1. Règles de gestion et dictionnaire des données
2.2. Modélisation conceptuelle
2.3. Modélisation relationnelle

3. IMPLEMENTATION DE LA BASE DE DONNEES


3.1. Description du schéma relationnel cabinet dans le langage
SQL
3.2. Création de l’utilisateur cabinet sous Oracle
3.3. Génération des données

4. EXPLOITATION DE LA BASE DE DONNEES


4.1. Génération des données
4.2. Interrogation de la base de données

Conclusion

2
INTRODUCTION

Une base de données (son abréviation est BD, en anglais DB, (database) est une
entité dans laquelle il est possible de stocker des données de façon structurée et
avec le moins de redondance possible.
Ces données doivent pouvoir être utilisées par des programmes, par des
utilisateurs différents.
L’objectif de ce projet est de se familiariser à la modélisation d’une base de
données relationnelle.
Le projet sera ensuite concrétisé par sa mise en place dans un serveur base de
données Oracle.
Le cycle de vie d’une base de données comporte deux phases.
Une première phase de conception de la base de données notamment
l’élaboration du diagramme Entité/Association et sa traduction en un schéma
relationnel documenté sous forme de diagramme relationnel.
La description exhaustive des données est capturée tout d’abord dans le
dictionnaire des données ensuite dans le dictionnaire des tables relationnelles.
La deuxième phase est une phase d’implémentation ou de déploiement de la base
de données et nécessite l’installation au préalable d’un système SGBD (Système
de Gestion de Base de Données).
On a décidé de traiter un système de gestion d’un cabinet dentaire

3
1. Outil et environnement du travail :

Nous avons utilisé le moteur de recherche Google pour approfondir notre


connaissance de l’univers du discours.

Nous avons eu recours à l’outil LOOPING pour l’élaboration du diagramme


Entité/Association .

Nous avons aussi téléchargé et installé la version Oracle 11G Express Edition
sous Windows 10 et téléchargé et installé l’outil de développement
SQLDEVELOPER.

2. Modélisation de la Base de Donnée:

La réalisation du modèle conceptuel de données est la première étape pour


réaliser les tables de notre base de données.
Cette étape est une sorte de traduction du cahier des charges,qui permet de
référencer toutes les données que l’on souhaite stocker dans la base.
Juste après le recueil d’information sur un cabinet dentaire .
On disposait d’un dictionnaire de données rassemblant l’ensemble des opérations
et traitements effectués par le dentiste ainsi que quelques outils l’aidant pour les
exécuter.
Il nous fallut dés alors modéliser ceux-ci, pour en effectuer une représentation
sous forme d’un MCD.

Après un brainstorming tout en mettant en valeur ces règles, nous avons dressé
les tables, en se basant sur les informations déjà trouvées .

4
2.1 Règles de gestion et dictionnaire des données :

Au terme de la première phase de collecte d’information nous avons abouti aux


spécifications des règles de gestion suivantes.

R1: Un dentiste examine un ou plusieurs patients ,chaque dentiste se caractérise


par une matricule , nom ,prénom, un numéro de téléphone , un
E_mail,faculté,adresse .

R2:Un patient prend un RDV chez le dentiste dont il est précisé la date et l’heure .

R3: chaque patient a un règlement ,un règlement a un mode de paiement bien


déterminé , une avance à payer , montant total à payer .

R4: Chaque jour ,le dentiste effectue des consultations ,une consultation est
caractérisé par une date et un type de traitement ,chaque jour les patients passent
des consultations.

Nous avons intitulé notre future base de données cabinet . Elle a ainsi pour but de
gérer les patients, c'est à dire la gestion des dossiers, gestion des rendez-vous,
gestion des consultations , gestion des règlements.

Le dictionnaire des données :

Après avoir collecté les informations nécessaire pur la création d’un système de
gestion d’ un cabinet dentaire et Pour élaborer le diagramme conceptuel, il est
important d’élaborer à priori une synthèse des données élémentaires, brutes et
utiles que nous avons identifiés.

5
Ainsi On a créé le dictionnaire de données suivant :
Propriété description Type remarques
code_patient Table Patient Entier Unique(obligatoire)
nom // Chaîne
prénom // Chaîne
num_tel // Entier
profession // Chaîne
date de naissance // Date
CIN // Entier Unique
sexe // Chaîne F OU M
adresse // Chaîne
matricule_dentiste Table Dentiste Entier Unique(obligatoire)
nom_dent // Chaîne
prénom_dent // Chaîne
téléphone // Entier
adresse // Chaîne
faculté // Chaîne
E_mail // Chaîne «--@---»
num_règ Table Règlement Entier Unique (obligatoire)
mode_paiement // Chaîne Par chèque ou en
espèce
avance // Réel
Montant_à_ payer // Réel
code_consultation Table Entier Unique (obligatoire)
Consultation
date_consultation // Date
type_traitement // Chaîne
num_ RDV Table RDV Entier Unique (obligatoire)
date_RDV // Date
nom_patient // Chaîne
prénom_patient // Chaîne
num_ordonn Table Ordonnance Entier Unique (obligatoire)
nom_malade // Chaîne
prénom_malade // Chaîne
nom_médecin // Chaîne
prénom_médecin // Chaîne
médicaments // Text
durée_ traitement // Chaîne
code_médicament Table Entier Unique (obligatoire)
Médicament
nom_médicament // Chaîne
délai // Date

Tableau 1 – Dictionnaire de données cabinet

6
2.2 Modélisation conceptuelle :

Nous procédons dans la suite à un classement de l’ensemble des propriétés


décrits dans le tableau 1 les différentes entités et associations que nous avons
identifiées.
Les tableaux 2 et 3 suivants récapitulent l’ensemble des entités et des
associations découvertes.

Entité Identifiant Autres propriétés


Patient code patient nom,prénom,num_tel,profession,adresse,
date de naissance,CIN, sexe

Dentiste matricule nom_dent,prénom,_dent ,téléphone,adresse,faculté


dentiste ,E-mail

Règlement num_règ mode_paiement,avance,montant_a_ payer

Consultation code Date_cons,type_traitement


consultation
RDV num_RDV Date_RDV,nom patient, prénom patient

Ordonnance num_ordonn nom malade,prénom malade ,nom médecin,


Prénom médecin, médicaments
Durée_traitement

Médicament code Nom_médic,délai


médicament

Tableau 2: Liste des entités

7
Ci-dessous les associations entre les différentes entités du tableau 2 :

Associations Entités identifiants Autres propriétes


Examiner Dentiste matricule dentiste
Patient code patient
Prendre Patient code patient
RDV num_RDV
Donner Dentiste matricule dentiste
RDV num_RDV
Avoir Patient code patient
Règlement num-règ
Effectuer Dentiste matricule dentiste
Consultation code consultation
Passer Patient code patient
Consultation code consultation
Trouver Ordonnance num_ordonn nombre de fois
Médicament code médicament
Produire Consultation code consultation
Ordonnance num_ordonn

Tableau3 :Listes des association

8
Le diagramme conceptuel nous permet de compléter notre réflexion par la
précision des cardinalités des différentes associations.

Figure 1 : Diagramme Entité/Association «cabinet»

9
2.3 Modélisation relationnelle :

Nous procédons dans la suite à la traduction du diagramme MCD dans le modèle


relationnel et obtenir un schéma normalisé dit " 3ème forme normale ".
Relation Clé primaire Clé étrangère Autres attributs
Patient code_ patient nom,prénom,num_tel,profession,
adresse,
Date_de_naissance,CIN, sexe

Dentiste matricule_dentiste Nom_dent,préno_dent,téléphone,


adresse,faculté,
E-mail

Règlement num_règ code_ patient mode_paiement,avance,


montant _à_ payer

Consultation code _consultation code_patient Date_cons,type_traitement


matricule_dentiste

RDV num_RDV code_patient Date_RDV,heure_RDV,nom_patient


matricule_dentiste ,
prénom _patient

Médicament code_médicament Nom_médi,délai


Ordonnance num-ordonn code consultation Nom_malade,prénom_malade,
nom_médecin;prénom_médecin
médicaments
Durée_traitement

Trouver num-ordonn nombre de fois


code_médicament

examiner matricule_dentiste
code_ patient

Tableau 4 : Schéma relationnel «cabinet»

10
Schéma relationnel :

Grâce à ce tableau on obtient le schéma relationnel suivant :


Clé primaire : souligné
Clé étrangère : Précédé par un ‘#’
Patient = (code_patient , nom , prénom , CIN , profession, num_tél , adresse ,
date_de_naissance, sexe);

Dentiste_ = (matricule_dentiste_ , nom_dent , prénom_dent , téléphone, adresse,


faculté , E_mail );

Règlement_ = (num_règ, mode_paiement, avance , montant_a_payer , #code_patient);

Consultation = (code_consultation , date_cons, type_traitement, #code_patient,


#matricule_dentiste);

RDV = (num_RDV , date_RDV, nom_patient,prénom_patient , #code_patient,


#matricule_dentiste);

Médicament = (code_médicament , nom_médic , délai );

Ordonnance_ = (num_ordonn , nom_malade, prénom_malade , nom_médecin ,


prénom_médecin , médicaments ,durée_traitement , #code_consultation);

trouver = (#num_ordonn, #code_médicament,nombre_de_fois );

Examiner =( #code_patient, #matricule_dentiste);

11
3. Implémentation de la base de données :
Le tableau 1 a permis de mettre en évidence les contraintes métiers c’est à dire
les contrôles que doivent vérifier les différentes propriétés prises individuellement,
notamment l’ensemble des valeurs possible, l’unicité de la valeur ou encore le
caractère obligatoire de la valeur.

Le tableau 4 met en évidence tous les contrôles structurels qui vont garantir, si
elles sont implémentées, la cohérence des données dans la base.

Les deux types de contraintes doivent apparaître dans la définition des différentes
relations. Nous avons ainsi opté pour décrire le schéma relationnel cabinet dans
le langage SQL dialecte Oracle. Cette étape nous permettra d’entamer de plein
pied la phase implémentation.

3.1 Description du schéma relationnel cabinet dans le langage SQL

Dans la terminologie des SGBD, une relation est appelée TABLE.


La commande CREATE TABLE du langage SQL permet de décrire les colonnes
de la table en question : le domaine des valeurs possibles, les contraintes métier
et les contraintes structurelles. La description du domaine des valeurs est
obligatoire alors que la description des contraintes peur être ajoutée
ultérieurement à la table par la commande ALTER TABLE ADD.

ci-dessous la création des tables de la base de donnée cabinet.


CREATE TABLE Patient(
code_patient number(10) CONSTRAINT cp_pk PRIMARY KEY ,
nom VARCHAR(50),
prénom VARCHAR(50),
CIN number(10) ,
profession VARCHAR(150),
num_tél number(10) NOT NULL,
adresse VARCHAR(150),
date_de_naissance DATE,
sexe_ VARCHAR(7));

12
CREATE TABLE Dentiste(
matricule_dentiste NUMBER (10)CONSTRAINT md_pk PRIMARY KEY ,
nom_dent VARCHAR(50),
prénom_dent VARCHAR(50),
téléphone number(10),
adresse VARCHAR(150),
faculté VARCHAR(300),
E_mail VARCHAR(150));

CREATE TABLE Règlement_(


num_règ NUMBER(10) CONSTRAINT règ_pk PRIMARY KEY ,
mode_paiement VARCHAR(100) NOT NULL,
avance REAL,
montant_a_payer REAL,
code_patient NUMBER(10));

CREATE TABLE Consultation(


code_consultation NUMBER(10)CONSTRAINT con_pk PRIMARY KEY ,
date_cons DATE,
type_traitement VARCHAR(1000),
code_patient NUMBER(10),
matricule_dentiste NUMBER (10));

CREATE TABLE RDV(


num_RDV number(10) CONSTRAINT rdv_pk PRIMARY KEY ,
date_RDV DATE,
nom_patient VARCHAR(50),
prénom_patient VARCHAR(50),
code_patient NUMBER(10),
matricule_dentiste NUMBER (10));

CREATE TABLE Médicament(


code_médicament NUMBER (10) CONSTRAINT cod_pk PRIMARY KEY ,
nom_médic VARCHAR(1000),
délai DATE NOT NULL);

13
CREATE TABLE Ordonnance_(
num_ordonn NUMBER (10) CONSTRAINT ord_pk PRIMARY KEY ,
nom_malade VARCHAR(50),
prénom_malade VARCHAR(50),
nom_médecin VARCHAR(50),
prénom_médecin VARCHAR(50),
médicaments VARCHAR (1000),
durée_traitement VARCHAR(100),
matricule_dentiste NUMBER (10),
code_consultation NUMBER(10));

CREATE TABLE trouver(


nombre_de_fois NUMBER(10),
code_médicament NUMBER (10) ,
num_ordonn NUMBER(10) );

CREATE TABLE examiner (


code_patient NUMBER(10),
matricule_dentiste NUMBER (10));

Ci-après la description des clés primaires composés des table trouver et


examiner .

ALTER TABLE examiner ADD CONSTRAINT ex_pk PRIMARY KEY


( code_patient,matricule_dentiste);

ALTER TABLE trouver ADD


CONSTRAINT TROUV_PK primary key( code_médicament,num_ordonn);

14
Ci-après la description des clés étrangère de chaque table.

ALTER TABLE Règlement_ ADD CONSTRAINT règ_pat_fk FOREIGN


KEY(code_patient) REFERENCES Patient (code_patient);

ALTER TABLE Consultation ADD CONSTRAINT con_pat_fk FOREIGN


KEY(code_patient) REFERENCES Patient (code_patient);

ALTER TABLE Consultation ADD CONSTRAINT con_dent_fk FOREIGN


KEY(matricule_dentiste) REFERENCES Dentiste (matricule_dentiste);

ALTER TABLE RDV ADD CONSTRAINT rdv_dent_fk FOREIGN


KEY(matricule_dentiste) REFERENCES Dentiste (matricule_dentiste);

ALTER TABLE RDV ADD CONSTRAINT rdv_pat_fk FOREIGN


KEY(code_patient) REFERENCES Patient (code_patient);

ALTER TABLE Ordonnance_ ADD CONSTRAINT ord_con_fk FOREIGN


KEY(code_consultation) REFERENCES consultation (code_consultation);

ALTER TABLE trouver ADD CONSTRAINT MED_FK FOREIGN


KEY(code_médicament)REFERENCES médicament(code_médicament);

ALTER TABLE trouver ADD CONSTRAINT ord_fk FOREIGN KEY (num_ordonn)


REFERENCES Ordonnance_(num_ordonn);

ALTER TABLE examiner ADD CONSTRAINT p_fk FOREIGN KEY(code_patient)


REFERENCES Patient (code_patient);

ALTER TABLE examiner ADD CONSTRAINT d_fk FOREIGN KEY


(matricule_dentiste) REFERENCES Dentiste (matricule_dentiste);

15
Enfin nous annexons la description des contraintes

ALTER TABLE Patient ADD


CONSTRAINT pat_sexe_c
CHECK(upper(sexe_) in ('F', 'M')) ;

ALTER TABLE Patient ADD CONSTRAINT pat_cin_u UNIQUE (CIN);

ALTER TABLE Dentiste ADD CONSTRAINT den_email CHECK (E_mail like


'%@%');

ALTER TABLE Règlement_ ADD CONSTRAINT reg_mode CHECK


(MODE_PAIEMENT IN ('espèce','chèque'));

16
Il est possible de produire à partir de à partir de l’outil DATA MODELER intégré
dans SQLDEVELOPER de produire, en mode reverse-engineering le diagramme
relationnel recouvrant l’ensemble des description ci-dessous. C’est le diagramme
relationnel associé à la base de donnée cabinet tel que schématisé ci-dessous.

Figure 2 : Diagramme relationnel « cabinet »

17
3.2 Scénario Création d’un schéma base de données sous Oracle

le scénario suivant doit être exécuté sous un utilisateur administrateur d’Oracle.

E1 : Création d’un utilisateur caractérisé par un LOGIN et un MOT DE PASSE.


E2 : Attribuer à cet utilisateur le privilège de pouvoir se connecter au serveur
Oracle et de créer une session au niveau du serveur. Pour ceci il suffit
d’accorder à l’utilisateur soit le rôle CONNECT soit le droit d’accès CREATE
SESSION.
E3 : Attribuer à l’utilisateur le privilège de pouvoir créer des objets base de
données. Ainsi, dans le cas de notre base de données nous devons créer
des objets de type TABLE. C’est pour ceci qu’il faut attribuer à l’utilisateur au
moins le privilège CREATE TABLE. En effet, il existe un privilège pour
chaque type d’objet. Exemple de type d’objets : VIEW, PROCEDURE,
TRIGGER, etc.
E4 : Attribuer à l’utilisateur un espace pour le stockage des lignes des tables.
Autrement dit il faut attribuer un quota sur un TABLESPACE déjà défini au
niveau du serveur Oracle.
E5 : Muni de tous ces privilèges, il devient possible de se connecter et exécuter
le fichier script des commandes SQL.
Ainsi un schéma base de données est un espace de stockage authentifié ou
protégé par un login et un mot de passe et bénéficiant des privilèges nécessaires
pour pouvoir créer des objets. L’espace de stockage n’est pas supposé être infini.

Script SQL de création de l’utilisateur cabinet

18
4. Exploitation de la base de données :
4.1 Génération des données :
L’insertion des données dans la base de données en utilisant la commande
INSERT INTO TABLE ,elle permet d’insérer des enregistrements dans une table .

Pour la table Patient ci-dessous quelques commandes d’insertion effectuées :


INSERT INTO "cabinet".PATIENT (CODE_PATIENT, NOM, "PRÉNOM", CIN, PROFESSION,
"NUM_TÉL", ADRESSE, DATE_DE_NAISSANCE, SEXE_) VALUES
(1235578187,'Stiant','Dory',5478956771,'Technical Writer',4315810677,'4874
Farwell Parkway',to_date('01/23/2015', 'MM/DD/RRRR'),'F');

INSERT INTO "cabinet".PATIENT (CODE_PATIENT, NOM, "PRÉNOM", CIN, PROFESSION,


"NUM_TÉL", ADRESSE, DATE_DE_NAISSANCE, SEXE_) VALUES
(1281101697,'Emlyn','Avictor',8968377778,'Administrative Assistant
III',3509925381,'81 Doe Crossing Crossing',to_date('03/22/1930',
'MM/DD/RRRR'),'M');

19
Pour la table Dentiste ci-dessous quelques commandes d’insertion effectuées :

INSERT INTO "cabinet".DENTISTE (MATRICULE_DENTISTE, NOM_DENT,


"PRÉNOM_DENT", "TÉLÉPHONE", ADRESSE, "FACULTÉ", E_MAIL) VALUES
(6557747404,'Goggins','Alvis',6191011979,'3 Kennedy Parkway','Florida
Metropolitan University','agoggins26@indiatimes.com');
INSERT INTO "cabinet".DENTISTE (MATRICULE_DENTISTE, NOM_DENT,
"PRÉNOM_DENT", "TÉLÉPHONE", ADRESSE, "FACULTÉ", E_MAIL) VALUES
(4343918209,'Linner','Electra',8104830383,'05243 Utah Plaza','University of
Nevada - Reno','elinner27@jalbum.net');

Pour la table Règlement ci-dessous quelques commandes d’insertion effectuées :


INSERT INTO "cabinet"."RÈGLEMENT_" ("NUM_RÈG", MODE_PAIEMENT, AVANCE,
MONTANT_A_PAYER, CODE_PATIENT) VALUES
(1,'chèque',77,4214,3785149248);

INSERT INTO "cabinet"."RÈGLEMENT_" ("NUM_RÈG", MODE_PAIEMENT, AVANCE,


MONTANT_A_PAYER, CODE_PATIENT) VALUES
(2,'chèque',270,1814,2901622529);

Pour la table Consultation ci-dessous quelques commandes d’insertion effectuées :


INSERT INTO "cabinet".CONSULTATION (CODE_CONSULTATION, DATE_CONS,
TYPE_TRAITEMENT, CODE_PATIENT, MATRICULE_DENTISTE)
VALUES (1033274645, to_date('11/05/2015', 'MM/DD/RRRR'), 'Military operations involving
unspecified fire, conflagration and hot substance, military personnel, sequela',
2901622529, 8423987469);

20
Pour la table RDV ci-dessous quelques commandes d’insertion effectuées :
INSERT INTO "cabinet".RDV (NUM_RDV, DATE_RDV, NOM_PATIENT,
"PRÉNOM_PATIENT", CODE_PATIENT, MATRICULE_DENTISTE)
VALUES (5916458871, to_date('07/11/2016', 'MM/DD/RRRR'), 'Pineaux', 'Brandon',
3785149248, 2078289314);

INSERT INTO "cabinet".RDV (NUM_RDV, DATE_RDV, NOM_PATIENT,


"PRÉNOM_PATIENT", CODE_PATIENT, MATRICULE_DENTISTE)
VALUES (9173180393, to_date('02/10/2020', 'MM/DD/RRRR'), 'Goding', 'Goldarina',
2901622529, 8423987469);

Pour la table Ordonnance ci-dessous quelques commandes d’insertion


effectuées :

INSERT INTO "cabinet".ORDONNANCE_ (NUM_ORDONN, NOM_MALADE,


"PRÉNOM_MALADE", "NOM_MÉDCIN", "PRÉNOM_MÉDECIN",
"MÉDICAMENTS", "DURÉE_TRAITEMENT", MATRICULE_DENTISTE)
VALUES (6253133234, 'Pineaux', 'Brandon', 'Aspray', 'Eveleen', 'Lorazepam', 'Weekly',
3763097709);

Pour la table Médicament ci-dessous quelques commandes d’insertion effectuées :


INSERT INTO "cabinet"."MÉDICAMENT" ("CODE_MÉDICAMENT", "NOM_MÉDIC",
"DÉLAI")
VALUES (7618404201, 'Lorazepam', to_date('08/14/2018', 'MM/DD/RRRR'));

INSERT INTO "cabinet"."MÉDICAMENT" ("CODE_MÉDICAMENT", "NOM_MÉDIC",


"DÉLAI")
VALUES (5516532755, 'Poison Ivy', to_date('04/05/2018', 'MM/DD/RRRR'));

Pour la table trouver ci-dessous quelques commandes d’insertion effectuées :


INSERT INTO "cabinet".TROUVER (NOMBRE_DE_FOIS, "CODE_MÉDICAMENT",
NUM_ORDONN)
VALUES (1, 7618404201, 6253133234);

INSERT INTO "cabinet".TROUVER (NOMBRE_DE_FOIS, "CODE_MÉDICAMENT",


NUM_ORDONN)
VALUES (2, 5516532755, 6086129538);

pour la table examiner ci-dessous quelques commandes d’insertion effectuées :


INSERT INTO "cabinet".EXAMINER (CODE_PATIENT, MATRICULE_DENTISTE)
VALUES (3785149248, 2078289314);

INSERT INTO "cabinet".EXAMINER (CODE_PATIENT, MATRICULE_DENTISTE)


VALUES (2901622529, 8423987469);

21
4.2 Interrogation de la base de données :

Donner les noms des dentistes qui ont pris une avance inférieure ou égale à 200
dinars .

select nom_dent, prénom_dent from dentiste,examiner


where examiner.matricule_dentiste= dentiste.matricule_dentiste
and code_patient in (select code_patient from règlement_
where avance <=200);

Donner le numéro de téléphone du patient ayant pris le médicaments SUPRAX.

select num_tél from patient where nom in (select nom_malade


from ordonnance_ where médicaments='SUPRAX');

22
Quels sont les patients qui ont pris un rendez-vous chez Dr Lackham le 29 avril ?

select nom_patient, prénom_patient from RDV where


date_rdv='29-04-21' and matricule_dentiste in
( select matricule_dentiste from dentiste where nom_dent ='Lackham');

Quels sont les patients qui ont payé plus que 100 dinars ?

select nom ,prénom from patient where code_patient in


( select règlement_.code_patient from examiner, règlement_
where examiner.code_patient=règlement_.code_patient
and montant_a_payer>1000);

23
Quels sont les numéro de téléphone des patients ayant passé une consultation
le 11 mars 2020 qui ont pris un médicament dont le délai est 22 mars 2021?

select num_tél from patient where code_patient in


( select consultation.code_patient from consultation,ordonnance_
where consultation.code_consultation =ordonnance_.code_consultation and
consultation.date_cons='11-03-20' and ordonnance_.médicaments in
(select médicament.nom_médic from médicament where délai ='22-03-21'));

Donner le nombre de consultation effectué par Dr Charlot le 21 février 2020 .

select count(*) as nombre_cons from consultation


where date_cons='21-02-20'and matricule_dentiste in ( select matricule_dentiste
from dentiste where nom_dent='Charlot');

24
Quels sont les patients dont leur durée de traitement est mensuel?
select nom from patient, ordonnance_, consultation where
ordonnance_.code_consultation=consultation.code_consultation
and consultation.code_patient=patient.code_patient and
durée_traitement='Monthly';

Quels sont les patients qui ont payé par chèque?


select patient.nom, patient.prénom from règlement_, patient where
patient.code_patient=règlement_.code_patient and
mode_paiement='chèque';

25
Donner les adresses des dentistes ayant effectués des consultation le 11 mars
2021

select adresse from dentiste where matricule_dentiste


in ( select matricule_dentiste from consultation
where consultation.date_cons='11-03-20' ) ;

Quels sont les patients ayant pris un rendez_vous le 29 avril 2021 dont ils ont déjà
payé une avance plus que 300 dinars ?

select nom_patient,prénom_patient from rdv where date_rdv='29-04-21'


and code_patient in ( select code_patient from règlement_ where avance >300) ;

26
Conclusion

En somme, grâce aux séances de TP de Base de Données sur SQL developer .


Nous avons pu concrétiser ce qu’on a appris en théorie sur les bases de données
et ainsi mettre en pratique ces notions là pour créer une base de données d’un
dentiste.

27