A. Étude du schéma relationnel TD 2 : La bibliothèque de M. Bouquin (p. 79) 1. Affichez le schéma relationnel de la base. 2. Proposez sous forme textuelle le schéma de la base de données, en précisant les clés primaires et les clés étrangères. AUTEURS (N de l auteur, Nom, Prénom, Année de naissance, Ville de naissance) Clé primaire : N de l auteur GENRES (Code du genre, Libellé du genre) Clé primaire : Code du genre LIVRES (N du livre, Titre du livre, Année de parution, Prix d achat, N de l auteur, Code du genre) Clé primaire : N du livre Clés étrangères : N de l auteur en référence à N de l auteur de la table AUTEURS Code du genre en référence à Code du genre de la table GENRES B. Interrogation de la base de données 1. Requêtes faisant intervenir les opérations de projection et de tri a) Liste des titres de livres dans l ordre alphabétique. Select [Titre du livre] From LIVRES Order by [Titre du livre] Seul le champ [Titre du livre] est projeté, le tri a pour critère le [Titre du livre] et il est croissant (ordre implicite).
Titre du livre EUGÉNIE GRANDET HERNANI LA CHARTREUSE DE PARME LA DAME AUX CAMÉLIAS LE PÈRE GORIOT LE ROUGE ET LE NOIR L ÉCOLE DES FEMMES LES CONTEMPLATIONS LES FLEURS DU MAL LES MISÉRABLES LES PRÉCIEUSES RIDICULES LES TROIS MOUSQUETAIRES MADAME BOVARY POÈMES SATURNIENS TARTUFFE VINGT ANS APRÈS b) Liste des livres (titre et année de parution) dans l ordre chronologique. Select [Titre du livre], [Année de parution] From LIVRES Order by [Année de parution] La requête, dans sa rédaction, est sans ambiguïté, elle indique ce qui doit être projetée et le critère de tri ne peut être que l année de parution. Titre du livre Année de parution LES PRÉCIEUSES RIDICULES 1659 L ÉCOLE DES FEMMES 1662 TARTUFFE 1669 HERNANI 1830 LE ROUGE ET LE NOIR 1831 EUGÉNIE GRANDET 1833 LE PÈRE GORIOT 1834 LA CHARTREUSE DE PARME 1839 LES FLEURS DU MAL 1841 LES TROIS MOUSQUETAIRES 1844 VINGT ANS APRÈS 1845 LA DAME AUX CAMÉLIAS 1848 LES CONTEMPLATIONS 1856 MADAME BOVARY 1857 LES MISÉRABLES 1862 POÈMES SATURNIENS 1866 2. Requêtes faisant intervenir l opération de restriction a) Quelle est la requête qui a permis d obtenir le résultat ci-dessous? Exprimez-la d abord en langage courant puis en SQL.
Titre du livre Année de parution Prix d achat LES CONTEMPLATIONS 1856 9,00 POÈMES SATURNIENS 1866 8,00 LES FLEURS DU MAL 1841 8,00 Il s agit de la liste des livres de poésie avec leur titre, leur année de parution et leur prix d achat. Select [Titre du livre], [Année de parution], [Prix d achat] From LIVRES Where [Code du genre] = "P" L opération de restriction porte sur le [Code du genre] qui doit être égal à "P". b) Liste des auteurs (nom, prénom, année de naissance) nés à Paris. Nom Prénom Année de naissance BAUDELAIRE Charles 1821 DUMAS Alexandre 1824 MOLIÈRE Jean-Baptiste 1622 SAND George 1804 ZOLA Emile 1840 Select Nom, Prénom, [Année de naissance] From AUTEURS Where [Ville de naissance] = "Paris" Order by Nom Les champs projetés sont toujours ceux qui sont énumérés après le Select. Une restriction est opérée sur la proposition (condition) [Ville de naissance] = "Paris" et enfin un tri croissant sur le nom des auteurs est effectué. N du livre c) Quelle est la requête qui a permis d obtenir le résultat ci-dessous? Exprimez-la d abord en langage courant puis en SQL. Titre du livre Année Prix N de parution d achat de l auteur 2 HERNANI 1830 16,00 01 T 7 LES CONTEMPLATIONS 1856 9,00 01 P 11 POÈMES SATURNIENS 1866 8,00 07 P 13 LES FLEURS DU MAL 1841 8,00 11 P 14 LES PRÉCIEUSES RIDICULES 1659 5,00 12 T 15 TARTUFFE 1669 4,00 12 T 16 L ÉCOLE DES FEMMES 1662 7,00 12 T Il s agit de la liste des livres qui ne sont pas des romans. Select * From LIVRES Where [Code du genre] < > "R" 3. Requêtes faisant intervenir l opération de jointure a) Liste des titres de livres avec le nom de leur auteur. Code du genre
Titre du livre Nom Prénom EUGÉNIE GRANDET BALZAC Honoré HERNANI HUGO Victor LA CHARTREUSE DE PARME STENDHAL Henri LA DAME AUX CAMÉLIAS DUMAS Alexandre LE PÈRE GORIOT BALZAC Honoré LE ROUGE ET LE NOIR STENDHAL Henri L ÉCOLE DES FEMMES MOLIÈRE Jean-Baptiste LES CONTEMPLATIONS HUGO Victor LES FLEURS DU MAL BAUDELAIRE Charles LES MISÉRABLES HUGO Victor LES PRÉCIEUSES RIDICULES MOLIÈRE Jean-Baptiste LES TROIS MOUSQUETAIRES DUMAS Alexandre MADAME BOVARY FLAUBERT Gustave POÈMES SATURNIENS VERLAINE Paul TARTUFFE MOLIÈRE Jean-Baptiste VINGT ANS APRÈS DUMAS Alexandre Select [Titre du livre], Nom, Prénom From AUTEURS, LIVRES Order by [Titre du livre] Outre la projection et le tri, la jointure s exprime par une restriction (Where) sur la condition AUTEURS.[N de l auteur] = LIVRES.[N de l auteur] (qui exprime l égalité entre la clé primaire de AUTEURS et la clé étrangère de LIVRES qui la référence) du produit AUTEURS, LIVRES. Sans cette condition, chaque livre serait associé à chaque auteur (ou vice-versa ). Ou, si l on veut cette liste par auteur : Select Nom, Prénom, [Titre du livre] From AUTEURS, LIVRES Order by Nom, Prénom Nous avons changé le critère de tri. L ordre alphabétique par titres se justifie autant que l ordre alphabétique par auteurs, l intitulé de la requête ne permet pas de savoir quel est celui voulu par celui (ou celle) qui pose cette question. b) Liste des livres (titre, année de parution) classés selon le nom de leur genre.
Libellé du genre Titre du livre Année de parution POÉSIE POÈMES SATURNIENS 1866 POÉSIE LES FLEURS DU MAL 1841 POÉSIE LES CONTEMPLATIONS 1856 ROMAN LES MISÉRABLES 1862 ROMAN EUGÉNIE GRANDET 1833 ROMAN LA CHARTREUSE DE PARME 1839 ROMAN LA DAME AUX CAMÉLIAS 1848 ROMAN LE ROUGE ET LE NOIR 1831 ROMAN LES TROIS MOUSQUETAIRES 1844 ROMAN MADAME BOVARY 1857 ROMAN VINGT ANS APRÈS 1845 ROMAN LE PÈRE GORIOT 1834 THÉÂTRE L ÉCOLE DES FEMMES 1662 THÉÂTRE HERNANI 1830 THÉÂTRE LES PRÉCIEUSES RIDICULES 1659 THÉÂTRE TARTUFFE 1669 Select [Libellé du genre], [Titre du livre], [Année de parution] From GENRES, LIVRES Where GENRES.[Code du genre] = LIVRES.[Code du genre] Order by [Libellé du genre] Ici pas d ambiguïté, l ordre de tri est précisé ainsi que la projection des champs à afficher (le [Libellé du genre] du genre doit être projeté puisque c est le critère de tri). La jointure entre LIVRES et GENRES est indispensable puisque le [Libellé du genre] n est pas présent dans LIVRES où seul figure le [Code du genre], clé étrangère qui permet d «aller chercher» à quel [Libellé du genre] il correspond dans la table GENRES. c) Liste des livres écrits par Victor Hugo. Titre du livre Année de parution Prix d achat Code du genre HERNANI 1830 16,00 T LES CONTEMPLATIONS 1856 9,00 P LES MISÉRABLES 1862 18,50 R Select [Titre du livre], [Année de parution], [Prix d achat], [Code du genre] From AUTEURS, LIVRES And Nom = "HUGO" Une jointure entre LIVRES et AUTEURS est opérée puisque le Nom de l auteur, critère de la restriction, ne se trouve pas dans la table LIVRES mais dans la table AUTEURS.
4. Requêtes faisant intervenir l opérateur Et a) Que signifie la requête suivante? Select [Titre du livre], [Année de parution], [Prix d achat], [Code du genre] from LIVRES Where [Prix d achat]<8 And [Code du genre]="t" Order by [Titre du livre] Les pièces de théâtre achetées moins de 8 : Titre du livre Année de parution Prix d achat Code du genre L ÉCOLE DES FEMMES 1662 7,00 T LES PRÉCIEUSES RIDICULES 1659 5,00 T TARTUFFE 1669 4,00 T b) Rédigez en SQL les deux requêtes suivantes : 1. Liste des romans (code R) écrits dans la seconde moitié du XIX e siècle. Select [Titre du livre], [Année de parution] From LIVRES Where [Année de parution] Between 1850 And 1899 And [Code du genre] = "R" Order by [Année de parution]; Titre du livre Année de parution LA DAME AUX CAMÉLIAS 1852 MADAME BOVARY 1857 LES MISÉRABLES 1862 Il se peut que, à l avenir, M. Bouquin achète des livres plus contemporains (au-delà de 1900!) donc le Between s impose pour éliminer les livres parus au XX e siècle (ou au XXI e ). 2. Liste des romans écrits par Victor Hugo. Select [Titre du livre], [Année de parution], [Prix d achat] From AUTEURS, LIVRES And Nom = "HUGO" And [Code du genre] = "R" Titre du livre Année de parution Prix d achat LES MISÉRABLES 1862 18,50 La jointure avec la table AUTEURS s impose puisque, dans la table LIVRES, on n a que le N de l auteur : il faut donc aller chercher le nom de Hugo dans le champ NOM de cette table.