Télécharger

Transcription

Télécharger
Université Paul Sabatier
TP #2 – SQL LID
Considérons le schéma relationnel de la base de données du service de partage d’histoires:
PROFILS(cprofile, prenom, nom, daten, pays, image, passe)
HISTOIRES(chistoire, titre, texte, auteur#, type, date)
AMITIES(cprofile1#, cprofile2#)
AVIS_POSITIFS(cprofile#, chistoire#, date)
COMMENTAIRES(cprofile#, chistoire#, date, commentaire)
Afin de tester les requêtes, vous devez insérer les tuples nécessaires dans les tables.
Requêtes monotables
Q1. Lister le nom et le prénom des personnes habitant en France.
Q2. Lister le numéro, le nom et le prénom des personnes habitant en France et aux Etas Unis.
Q3. Lister le numéro, le nom et le prénom des personnes n’habitant ni en France, ni aux Etas Unis.
Q4. Lister les nationalités (pays) des personnes (sans redondance dans les résultats).
Q5. Lister les titres des histoires contenant le mot « travail ».
Q6. Lister les commentaires qui contiennent le mot « aime » et qui ne contiennent pas le mot
« déteste ».
Q7*. Proposer une solution simple pour lister les commentaires qui contiennent le verbe « aime » à
n’importe quel temps (futur, passé,…) et conjugué à n’importe quelle personne.
Requêtes multitables (jointures)
Q1. Lister le numéro, le nom et le prénom des personnes ayant déjà écrit une histoire.
Q2. Lister le numéro, le nom et le prénom des personnes ayant déjà écrit une histoire de type
« citation ».
Q3. Lister le titre des histoires ayant eu au moins un commentaire de « Homer Simpson ».
Q4. Pour les histoires qui ont eu au moins un avis positif, lister tous les commentaires (date,
commentaire et titre de l’histoire).
Q5. Lister les titres des histoires écrites par des personnes habitant en France.
Q6. Lister le numéro, le nom et le prénom des personnes habitant en France et qui ont donné un avis
positif sur l’histoire numéro 1 ainsi que sur l’histoire numéro 2.
Requêtes multi-tables (ensemblistes/ imbriquées)
Q1. Lister le numéro, le nom et le prénom des personnes ayant déjà donné un avis positif.
Q2. Lister le numéro, le nom et le prénom des personnes ayant déjà écrit une histoire de type
« citation » ou « blague »
Q3. Lister le numéro, le nom et le prénom des personnes habitant en France et ayant donné un avis
positifs sur l’histoire 1 ainsi que sur l’histoire 2 (imbriquée)
Remarque : la requête ensembliste avec Intersect n’est pas possible en MySQL.
Q4. Lister le numéro, le nom et le prénom des personnes n’ayant jamais fait de commentaire.
Remarque : la requête ensembliste avec Minus ou Except n’est pas possible en MySQL.
Requêtes agrégées et groupements
Q1. Calculer le nombre de commentaires.
Q2. Calculer par code profil le nombre de commentaires effectués.
Q3. Calculer par numéro, nom et prénom de personnes, le nombre d’avis positifs donnés
Q4. Donner le ou les titres d’histoires les plus aimées en termes d’avis positifs.
Y. Pitarch, K. Pinel-Sauvagnat, O. Teste
Université Paul Sabatier
Questions subsidiaires
Q1. Avec le schéma relationnel actuel, une histoire créée par Homer Simpson et ensuite reprise et
partagée par Bart Simpson serait insérée deux fois dans la base de données. Proposer une solution
alternative pour optimiser la mémoire requise.
Q2. Peut-on créer une relation AVIS qui généralise la notion de AVIS_POSITIF, COMMENTAIRE et
AVIS_NEGATIF. On peut supposer que le commentaire est un avis neutre. Quel serai le schéma de
cette relation ?
Y. Pitarch, K. Pinel-Sauvagnat, O. Teste