NSI (terminale) · Chapitre 11 · Exercice d'entraînement
Deux guichets, une seule place
Bases de données : le modèle relationnel · Contraintes d'intégrité et rôle du SGBD · niveau 3 (difficile)
Énoncé
Deux guichets, une seule place. Un théâtre vend ses billets depuis deux guichets, A et B, reliés à la même base. Pour le spectacle numéro , il reste une place. Chaque guichet exécute la même procédure :
- (L) lire le nombre de places restantes ;
- (T) si , vendre un billet au client ;
- (E) écrire comme nouveau nombre de places restantes.
- Les deux guichets reçoivent un client presque en même temps, et les étapes s'enchaînent ainsi : L de A, L de B, T de A, T de B, E de A, E de B. Dresser un tableau donnant, après chaque étape, la valeur stockée dans la base et ce que chaque guichet a fait. Combien de billets ont été vendus ? Que vaut finalement le nombre de places ?
- Pourquoi un programme qui teste bien « » produit-il quand même une erreur ?
- Expliquer comment la gestion des accès concurrents par le SGBD empêche ce problème.
- Autre situation : un virement de euros d'un compte X vers un compte Y consiste à retirer de X puis à ajouter à Y. Que se passe-t-il si le serveur tombe en panne entre les deux opérations ? Quel service du SGBD l'évite ?
Un exercice à chercher : son corrigé n'est pas publié. Sur Adloun, le tuteur guide par questions, sans donner la réponse.