Vous êtes sur la page 1sur 3

Enseignant responsable : Mme Salma Ben Saïd

TD : Bases de Données

Exercice 1

Le directeur d’une clinique vétérinaire souhaite digitaliser son système d’information. Soit le
cahier des charges suivant :
Le système permet la gestion des clients, du personnel, des animaux traités et des médicaments
administrés. La clinique emploie un personnel décrit chacun par : nom, prénom, date de
naissance, adresse, e-mail et numéro de téléphone. Les personnels ont en plus un poste
(vétérinaire ou assistant) et une spécialité, qui est une des espèces animales qu'ils savent le
mieux traiter. Les classes considérées sont : mammifère, reptiles, oiseaux.
La clinique accueille des animaux. Chaque animal a un nom, une espèce, un poids et une taille,
ainsi qu'une date de naissance.
Chaque animal appartient à un propriétaire (client de la clinique) qui peut être propriétaire de
plusieurs animaux. Chaque client est décrit par : nom, prénom, genre, adresse, e-mail et numéro
de téléphone.
Chaque animal est examiné par un vétérinaire qui peut lui prescrire des médicaments pour un
traitement. Chaque médicament est décrit par un nom, molécule et effets. On souhaite garder
l’historique des traitements prescrits par chaque vétérinaire pour chaque animal : début, durée,
médicament et quantité à prendre par jour (on peut prescrire plusieurs médicaments dans un
traitement). Un médicament n’est autorisé que pour certaines espèces.
Travail à Faire

1. Elaborer le modèle conceptuel Entité-Association relatif au cahier de charges décrit ci-


dessus.
2. Traduire le modèle relationnel correspondant.

Exercice 2

Soit le schéma relationnel suivant :

Agence (numAgence, nom, ville, capital)


Client(numClient, nomClient, prenomClient, ville)
Compte(numCompte, datOuverture , #numAgence, #numClient, solde)
Emprunt(numEmprunt, datEmprunt, #numCompte, montant, taux, duree)

1/3
Enseignant responsable : Mme Salma Ben Saïd

TD : Bases de Données

Tableau descriptif des données


numAgence, numClient, Entier de 20 chiffres maximum
numCompte, numEmprunt, duree
nom, nomClient, prenomClient, ville Chaine de longueur 80 caractères au maximum
datEmprunt /datOuverture Date / par défaut la date du jour
taux Réel à virgule fixe compris entre 8% et 20%
capital, solde, montant Réel à virgule flottante

Travail à Faire

1. Ecrire les commandes SQL permettant de créer toutes les tables en spécifiant toutes les
contraintes indiquées au niveau du schéma relationnel et celles spécifiées au niveau du tableau
descriptif tout en respectant les types de données imposés.
2. Ecrire la commande SQL permettant de supprimer la colonne duree de la table Emprunt.
3. Ecrire la commande SQL permettant d’ajouter une colonne nommée etatCompte de type
exactement un entier prenant la valeur 0 ou 1 et par défaut prenant la valeur 1( 1 : compte actif/
0 : compte bloqué).
4. Ecrire les commandes SQL permettant d'insérer une ligne de données à chacune des tables en
mettant des valeurs de données de votre choix.
5. En supposant que d’autres données ont été insérées, mettre à jour l’emprunt du client numéro
4578613 réalisé à la date du cinq décembre 2021 en attribuant au montant la valeur 25000 et
au taux la valeur 12%.
6. Ecrire les requêtes SQL permettant de :
a. Afficher la liste des agences triées par ordre Croissant de la ville et par ordre dédroissant
du capital.
b. Afficher la liste des clients qui ont ouvert un compte au mois de Novembre de l’année
2022.
c. Afficher le nombre de comptes et la somme du solde total du client numéro 5674. Utiliser
des alias de colonnes pour l’affichage.
d. Afficher en une seule colonne utilisant un alias et en éliminant les doublons, la liste des
noms, prénoms et villes de tous les clients selon cet affichage :
Nom : nomClient / Prenom : prenomClient / Ville : ville
Remarque : quelques Fonctions prédénies de Oracle sont listées à l’annexe page suivante.

Bon travail

2/3
Enseignant responsable : Mme Salma Ben Saïd

TD : Bases de Données

ANNEXE

SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;


SELECT EXTRACT(MONTH FROM SYSDATE) FROM DUAL;
SELECT extract(DAY from SYSDATE) FROM DUAL;

SELECT MONTHS_BETWEEN(TO_DATE('2024-02-29', 'YYYY-MM-DD'), SYSDATE) FROM dual;


SELECT ADD_MONTHS(SYSDATE, 3) FROM DUAL;
SELECT LAST_DAY(SYSDATE) FROM DUAL; -- dernier jour du mois

SELECT TO_DATE('2024-02-29', 'YYYY-MM-DD') FROM DUAL;


SELECT TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') FROM DUAL;
SELECT TO_NUMBER('53') FROM DUAL;

SELECT Instr(nomClient,'z')FROM Client; -- Retourne 1 ou 0


SELECT SUBSTR(nomClient,1,3)FROM Client;
SELECT LENGTH(nomClient)FROM Client;
SELECT REPLACE(nomClient,'Ben Foulen','nom')FROM Client;
SELECT TRIM(' BenFoulen')FROM Client; -- LTRIM / RTRIM

3/3

Vous aimerez peut-être aussi