Exo bac C6.EB3

Cet exercice porte sur les bases de données et le langage SQL.

Des acteurs ayant joué dans différentes pièces de théâtre sont recensés dans une base de données Theatre dont le schéma relationnel est donné ci-dessous :

Dans ce schéma, les clés primaires sont soulignées et les clés étrangères sont précédées du symbole #.

L’attribut idPiece de la relation Role est une clé étrangère faisant référence à l’attribut idPiece de la relation Piece.

L’attribut idActeur de la relation Role est une clé étrangère faisant référence à l’attribut idActeur de la relation Acteur.

Tous les attributs dont le nom est préfixé par id sont des nombres entiers ainsi que l'attribut anneeNaiss. Les autres attributs sont des chaînes de caractères.

1. Expliquer pourquoi il n'est pas possible d'insérer une entrée dans la relation Role si les relations Piece et Acteur sont vides.

2. Dans la pièce « Le Tartuffe », l'acteur Micha Lescot a joué le rôle de Tartuffe.

L’identifiant de Micha Lescot est 389761 et celui de cette pièce est 46721.

Écrire une requête SQL permettant d’ajouter ce rôle dans la table (ou relation) Role.

3. Expliquer ce que fait la requête SQL suivante.

UPDATE Piece
SET langue = "Anglais"
WHERE langue = "Américain" OR langue = "Britannique";

4. Pour chacun des quatre items suivants, écrire une requête SQL permettant d’extraire les informations demandées.

a. Le nom et prénom des artistes nés après 1990.

b. L’année de naissance du plus jeune artiste.

c. Le nom des rôles joués par l'acteur Vincent Macaigne.

d. Le titre des pièces écrites en Russe dans lesquelles l’actrice Jeanne Balibar a joué.

Afficher la correction

1.

Si Piece et Acteur sont vides, il n'est pas possible d'insérer une entrée dans la relation Role car aucune valeur pour les clés étrangères idPiece et idRole ne sont pas possibles => Contrainte de référence.

2.

INSERT INTO Role VALUES(46721, 389761, 'Tartuffe')

3.

La requête SQL permet de modifier l'attribut Langue en lui donnant la valeur 'Anglais' pour tous les enregistrements dont la valeur de cet attribut Langue est soit 'Britannique' soit 'Américain'.

4.a.

SELECT nom, prenom
FROM Acteur
WHERE anneeNaiss > 1990

4.b.

SELECT MAX(anneeNaiss)
FROM Acteur

4.c.

SELECT Role.nomRole
FROM Role
JOIN Acteur ON Role.idActeur = Acteur.idActeur
WHERE Acteur.prenom = 'Vincent'  AND Acteur.nom = 'Macaigne'

4.d.

SELECT Piece.titre
FROM Piece
JOIN Role ON Role.idPiece = Piece.idPiece
JOIN Acteur ON Role.idActeur = Acteur.idActeur
WHERE Acteur.prenom = 'Jeanne' AND Acteur.nom = 'Balibar'