Vous êtes sur la page 1sur 4

TP1 - PREMIÈRES REQUÊTES

 Vue d'ensemble

Question à laquelle ce e activité va perme re de répondre :


- Suis-je capable de mobiliser mes connaissances sur la syntaxe SQL pour écrire des
requêtes répondant à la question posée et véri er que le résultat est juste ?
Objectifs pédagogiques visés :
- Lire un schéma logique
- Écrire un schéma logique sous son format graphique
- Véri er la validatité de requêtes simples

 Activités à réaliser

Connectez-vous à la base de données de votre environnement en utilisant l’outil


pgAdmin4.

 Script perme ant la création de la bases de données (à télécharger uniquement si


vous avez installé la base de données sur votre matériel personnel.)

install_database_soins.sql (8 ko)
restore_database_soins.sql (0 ko)

Description de la base de données


SOINS
Les requêtes SQL à exprimer sont relatives à la base de données SOINS constituée des
relations dont le schéma est décrit de manière linéaire ci-dessous (les clefs primaires des
relations sont soulignées, et les attributs qui référencent une autre relation sont en
soulignement pointillé).

MEDECIN (medecin_id, nom, prenom, adresse, tel, specialite)

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
PATIENT (patient_id, nom, prenom, numsecu, rattachement, medecin_referent) où
rattachement référence PATIENT (patient_id) et medecin_referent référence MEDECIN
(medecin_id)

VISITE (medecin, patient, date_visite, prix) où medecin référence MEDECIN (medecin_id) et


patient référence PATIENT (patient_id)

PRESCRIPTION (prescription_id, medicament, medecin, patient, date_visite, duree, posologie,


modalites) où le triplet d’attributs (medecin, patient, date_visite) référence VISITE (medecin,
patient, date_visite)

Notez que :

L’attribut rattachement de la relation PATIENT est renseigné quand une personne


(appelée ayant-droit) béné cie de l’assurance maladie, non pas en son nom propre,
mais par sa relation avec une autre personne (appelée assuré) qui en béné cie. Par
exemple, les enfants sont rattachés à l’un de leurs parents, ce qui leur donne droit à
l’assurance maladie.

L’attribut medecin_referent de la relation PATIENT désigne le médecin qu’un patient a


choisi pour suivre son dossier médical.

Les attributs duree et posologie seront traités de manière très simple dans cet exemple
: la durée désigne un nombre de jours de traitement et la posologie le nombre de
prises par jour.

Question 1 : Commencez par représenter graphiquement le schéma logique décrit


précédemment.

Pattern matching et tris


 Avertissement

Avant de commencer, prenez le temps d’observer les enregistrements des différentes


tables. Par exemple, la requête suivante :
SELECT distinct medicament FROM prescription
vous permettra de comprendre comment les médicaments sont orthographiés a n
d’effectuer la requête adéquate.

Question 2 : Af chez les prescriptions qui contiennent du “doliprane”.

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
Question 3 : Af chez toutes les prescriptions de “ventoline” ordonnées par durée de
traitement décroissante.
Question 4 : Af chez les prescriptions de “ventoline” ayant une durée supérieure à 90
jours.

Jointures
 Activités à réaliser

Lorsque vous réalisez des requêtes avec des jointures, utilisez le plus petit nombre
possible de tables nécessaires. On parle généralement de critère de minimalité.
Parfois il est nécessaire d’utiliser plusieurs fois la même table. On dit alors que cette
table a des rôles différents. Utiliser la notion d’alias a n de renommer les tables.

Question 5 : Af chez les noms des patients et les identi ants des médecins qu’ils ont
visités le 15 janvier 2018.
Question 6 : Af chez pour chaque ayant-droit, les numéros de sécurité sociale, nom et
prénom de l’assuré auquel il est rattaché.
Question 7 : Af chez les noms des patients et de leur médecin référent.
Question 8 : Af chez les personnes qui ont un ayant-droit.

Négation et listes
 Avertissement

Attention à ne pas confondre les situations suivantes :


- Un attribut peut être différent d’une valeur : attribut NOT LIKE chaine ou
attribut != valeur
- Un attribut peut ne pas avoir de valeur : attribut IS NULL
- Un attribut peut ne pas être présent dans une liste (donné par un SELECT imbriqué
par exemple) : attribut NOT IN (…)

Question 9 : Af chez les médecins qui ne sont pas généralistes


Question 10 : Af chez les patients qui n’ont pas de médecin référent

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
Comptages et aggrégations
 Activités à réaliser

Avant de débuter, exécutez et comparez le résultat rendu par l’ensemble de requêtes


suivant :

SELECT COUNT(*) FROM PATIENT;

SELECT COUNT(patient_id) FROM PATIENT;

SELECT COUNT(rattachement) FROM PATIENT;

SELECT count(DISTINCT rattachement) FROM PATIENT;

Question 11 : Af chez le nombre total de médecins


Question 12 : Af chez le nombre de médecins par spécialité

 Activités à réaliser

Après avoir réalisé le TP vous pouvez consulter la correction.

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com

Vous aimerez peut-être aussi