Bases de donnees
Examen
Yousra Lembachar
On considere la base de donnees suivante qui contient les informations sur les artistes, les scenes,
les concerts et les tickets dun festival. Les cles primaires des tables sont soulignees et les cles
etrangeres en gras.
ARTISTE SCENE CONCERT
idArtiste nomArtiste idArtiste idScene tarif
idScene nomScene
1 Rihanna 1 1 1200
1 OLM SOUISSI
2 Deep Purple 2 1 600
2 BOUREGREG
3 Gnawa Diffusion 3 2 600
idTicket idArtiste nbrPlaces
T1 1 5
T2 1 2
T3 2 1
Figure 1 Base de donnees
Exercice 1
On considere les transations T1 et T2 :
T1(UPDATE CONCERT SET tarif = 1600 WHERE idArtiste = 1)
T2(UPDATE CONCERT SET tarif = tarif + 200)
Avec un niveau disolation READ UNCOMMITTED, quels sont les etats finaux possibles du tarif
du premier concert si T1 et T2 sont executees en concurrence, en partant de letat de la base
de donnees illustre dans la figure 1 ?
Comment assurer un seul etat final pour le tarif ?
1
Exercice 2
Ecrire en SQL les requetes suivantes :
Le nombre de tickets payes par concert ainsi que le total des ventes. Nommez la premiere
colonne NbrTickets et la seconde TotalVentes.
Creer une vue qui liste les noms dartistes et les noms des scenes ou ils jouent, ainsi que le
tarif du concert.
Ecrire la requete qui permet de supprimer les deux cles etrangeres (f k1 et f k2 ) de la table
CONCERT.
Ecrire un ou plusieurs declencheurs qui implementent le comportement de la cle etrangere
CONCERT(idArtiste) qui reference ARTISTE(idArtiste) avec un comportment SET NULL.
Ecrire un ou plusieurs declencheurs qui permettent de renforcer les contraintes dintegrite
suivantes :
Le maximum de places vendues lors dun concert est de 100 places.
Le tarif minimum par concert est de 300dhs et le tarif maximum par concert est de 1600dhs.
Exercice 3
Optimiser les requetes suivantes :
SELECT * FROM ARTISTE WHERE idArtiste IN (SELECT [Link] FROM CONCERT,TICKET
WHERE [Link] = [Link] HAVING tarif < 1000); (4 optimisations
a faire)
Exercice 4
Expliquer les niveaux disolation dune transaction
Donner deux raisons pour optimiser une requete
Definir lintegrite referentielle
Quelle est la difference entre un declencheur par ligne et un declencheur par operation ?
Quelle est la difference entre UNION et UNION ALL ?