Exercices: Modèle relationnel et langage SQL
Une relation Eleve(id, nom, prenom, classe) a pour clef primaire id. a) Expliquer ce qu'est une relation, un attribut et un domaine, en prenant des exemples dans Eleve.…
Une relation Eleve(id, nom, prenom, classe) a pour clef primaire id.
- a) Expliquer ce qu'est une relation, un attribut et un domaine, en prenant des exemples dans
Eleve.
- b) Expliquer le rôle d'une clef primaire et pourquoi deux élèves ne peuvent pas avoir le même
id.
- c) Donner le schéma de la relation.
On considère la table Livre(id, titre, auteur, annee, prix) contenant, entre autres, les livres suivants : (1, "Germinal", "Zola", 1885, 7.50), (2, "Candide",…
On considère la table Livre(id, titre, auteur, annee, prix) contenant, entre autres, les livres suivants : (1, "Germinal", "Zola", 1885, 7.50), (2, "Candide", "Voltaire", 1759, 5.00), (3, "Nana", "Zola", 1880, 8.00).
- a) Écrire la requête SQL qui renvoie les titres des livres de Zola.
- b) Écrire la requête qui renvoie tous les livres triés par prix croissant.
- c) Donner le résultat de la requête
SELECT titre FROM Livre WHERE annee < 1882;.
Avec la table Livre(id, titre, auteur, annee, prix) de l'exercice précédent : a) Écrire la requête qui ajoute le livre (4, "Au bonheur des dames", "Zola", 1883, 9.00).…
Avec la table Livre(id, titre, auteur, annee, prix) de l'exercice précédent :
- a) Écrire la requête qui ajoute le livre (4, "Au bonheur des dames", "Zola", 1883, 9.00).
- b) Écrire la requête qui passe le prix du livre d'
id2 à 6,00.
- c) Écrire la requête qui supprime les livres publiés avant 1800.
Une médiathèque de Nantes utilise les tables Adherent(num, nom, ville) et Emprunt(id, num_adherent, titre, date_emprunt), où num_adherent est une clef étrangère vers…
Une médiathèque de Nantes utilise les tables Adherent(num, nom, ville) et Emprunt(id, num_adherent, titre, date_emprunt), où num_adherent est une clef étrangère vers Adherent(num).
- a) Expliquer le rôle de la clef étrangère.
- b) Écrire la requête qui renvoie le nom des adhérents et les titres qu'ils ont empruntés.
- c) Écrire la requête qui renvoie le nombre d'emprunts de chaque adhérent (numéro et nombre).
- d) Écrire la requête qui renvoie sans doublon les villes des adhérents ayant emprunté au moins un livre.
La table Vente(id, produit, magasin, quantite, prix_unitaire) recense les ventes d'une chaîne de boulangeries. a) Écrire la requête qui calcule le chiffre d'affaires…
La table Vente(id, produit, magasin, quantite, prix_unitaire) recense les ventes d'une chaîne de boulangeries.
- a) Écrire la requête qui calcule le chiffre d'affaires total ($\text{quantité} \times \text{prix unitaire}$).
- b) Écrire la requête qui donne, pour chaque magasin, la quantité totale vendue.
- c) Écrire la requête qui renvoie le prix unitaire moyen des ventes du produit « baguette ».
- d) Écrire la requête qui renvoie les trois ventes de plus grande quantité.
Voici une table unique Commande(num, client, adresse_client, produit, prix) : (1, "Durand", "12 rue Verte, Rennes", "stylo", 2,00) (2, "Durand", "12 rue Verte, Rennes",…
Voici une table unique Commande(num, client, adresse_client, produit, prix) :
(1, "Durand", "12 rue Verte, Rennes", "stylo", 2,00)
(2, "Durand", "12 rue Verte, Rennes", "cahier", 3,50)
(3, "Morel", "5 av. Foch, Brest", "stylo", 2,00)
- a) Repérer la redondance présente dans cette table.
- b) Décrire une anomalie de mise à jour, une anomalie d'insertion et une anomalie de suppression.
- c) Proposer un schéma à trois relations, avec clefs primaires et étrangères, qui supprime ces anomalies.
Un lycée gère les relations Eleve(id, nom, classe), Matiere(code, intitule) et Note(id_eleve, code_matiere, valeur). La clef primaire de Note est le couple (id_eleve,…
Un lycée gère les relations Eleve(id, nom, classe), Matiere(code, intitule) et Note(id_eleve, code_matiere, valeur). La clef primaire de Note est le couple (id_eleve, code_matiere).
- a) Donner les clefs étrangères du schéma.
- b) Écrire la requête qui renvoie, pour chaque élève (nom), sa moyenne en « Mathématiques ».
- c) Écrire la requête qui renvoie les noms des élèves de classe « T1 » dont la moyenne en « NSI » dépasse 14.
- d) Expliquer pourquoi l'insertion d'une note avec un
id_eleveinexistant doit être refusée et par quel mécanisme.
Soit la table Film(id, titre, realisateur, annee) et la table Projection(id_film, salle, heure) où id_film est une clef étrangère. a) Écrire la requête qui renvoie les…
Soit la table Film(id, titre, realisateur, annee) et la table Projection(id_film, salle, heure) où id_film est une clef étrangère.
- a) Écrire la requête qui renvoie les titres des films projetés dans au moins deux salles différentes.
- b) Écrire la requête qui renvoie les réalisateurs dont aucun film n'est projeté.
- c) Expliquer la différence entre
WHEREetHAVINGen justifiant l'usage nécessaire de l'un d'eux dans la question a).
On considère la relation Inscription(num_etudiant, nom_etudiant, code_cours, intitule_cours, enseignant), avec la clef primaire (num_etudiant, code_cours). Un cours a un…
On considère la relation Inscription(num_etudiant, nom_etudiant, code_cours, intitule_cours, enseignant), avec la clef primaire (num_etudiant, code_cours). Un cours a un seul intitulé et un seul enseignant.
- a) Montrer que cette relation présente des redondances et des anomalies d'insertion, de suppression et de mise à jour.
- b) Proposer une décomposition en relations sans redondance, en précisant clefs primaires et étrangères.
- c) Écrire en SQL les instructions
CREATE TABLEcorrespondantes.
- d) Écrire la requête qui reconstitue la liste (nom d'étudiant, intitulé du cours, enseignant).