Académique Documents
Professionnel Documents
Culture Documents
Exercice 2 (6pts)
Travail à faire :
1- Proposer une clé primaire pour la relation Assurance.
La clé primaire = { NumAssurance, NumImmat }
Assurance (NumAssurance, NumImmat NumCond, NumPers, Nom, Prenom, Adresse,
NumAssuré, TypeAss, Bonus)
La relation R1 n’est pas à la 3ème FN car des attributs non clé dépendent d’autres attributs non clé.
Exemples :
Travail demandé :
1- Créer la table Analyse en spécifiant les contraintes d’intégrités nécessairest
Create table Analyse (
CodeEchantillon char(10) references Echantillon (CodeEchantillon),
RéférenceType char(10) references TypeAnalyse(RéférenceType),
Date_Réalisation date,
Constraint AnalysePK Primary Key (CodeEchantillon, RéférenceType)
);
b- Donnez les noms, prénoms et adresses complètes des clients (rue, code postal et
ville) ayant fourni des échantillons en 2022.
SELECT Nom, Prenom, Rue, CodePostal, Ville
FROM CLIENT C, ECHANTILLON E
WHERE C.CodeClient = E.CodeClient
AND DateEchantillon BETWEEN '01/01/2022' AND '31/12/2022' ;
c- Donner la recette (la somme d’argent encaissée) du laboratoire pour le mois de Décembre
2022.
SELECT Sum(Prix) As Recette
FROM TypeAnalyse A1, Analyse A2
WHERE A1.RéférenceType=A2.RéférenceType
AND Date_Réalisation BETWEEN '01/12/2022' AND '31/12/2022' ;
d- Donnez les noms, prénoms des clients attendant le résultat d’une analyse (échantillon non
analysé).
SELECT Nom, Prenom
FROM Client C, Echantillon E
WHERE C.CodeClient=E.CodeClient
AND CodeEchantillon NOT IN (SELECT CodeEchantillon FROM Analyse) ;
e- Donnez pour chaque client par ordre alphabétique (nom et prénom) le nombre de ses
échantillons déposés ainsi que la date de dépôt de son échantillon le plus ancien et la date
de dépôt de son échantillon le plus récent.
SELECT Nom, Prenom, count (*) As NbrEchantillons, Min (DateEchantillon) As
AncienEchantillon, Max (DateEchantillon) As RécentEchantillon
FROM Client C, Echantillon E
WHERE C.CodeClient = E. CodeClient
Group BY Nom, Prenom;
f- Donnez les codes et dates des échantillons pour lesquels plus de 5 analyses ont été
réalisées.
SELECT E.CodeEchantillon, DateEchantillon
FROM ECHANTILLON E, Analyse A
WHERE E.CodeEchantillon = A.CodeEchantillon
GROUP BY E.CodeEchantillon, DateEchantillon
HAVING Count (*) >5;