Exercice 1 : QCM
Pour chaque question, une seule réponse est correcte.
1. Dans le modèle relationnel, comment appelle-t-on une ligne d’une table ?
- A. Un attribut
- B. Un n-uplet
- C. Un domaine
- D. Un schéma
Correction publiée après la séance.
2. Qu’est-ce que le domaine d’un attribut ?
- A. Le nom de la table qui contient l’attribut
- B. L’ensemble des valeurs que l’attribut peut prendre
- C. Le nombre de lignes de la table
- D. La valeur de l’attribut dans la première ligne
Correction publiée après la séance.
3. Une table a pour clé primaire l’attribut num. Quelle règle cette clé impose-t-elle ?
- A. Les valeurs de
numsont rangées dans l’ordre croissant. - B. Deux lignes n’ont jamais la même valeur de
num, etnumn’est jamais vide. - C. Chaque valeur de
numdésigne une ligne d’une autre table. - D. Les valeurs de
numsont forcément des entiers.
Correction publiée après la séance.
4. Dans le schéma Seances(id_seance, #id_film, #num_salle, jour, heure), que signifie le dièse placé devant id_film ?
- A.
id_filmest la clé primaire de la table Seances. - B.
id_filmdésigne une ligne de la table des films, par la clé primaire de cette ligne. - C.
id_filmest rangé par ordre croissant. - D.
id_filmest un entier.
Correction publiée après la séance.
5. Laquelle de ces opérations modifie la structure d’une base de données, et non son contenu ?
- A. Enregistrer un nouveau film
- B. Corriger l’année d’un film
- C. Ajouter un attribut
paysà la table des films - D. Supprimer une séance annulée
Correction publiée après la séance.
6. Quelle contrainte d’intégrité empêche d’enregistrer une séance dans une salle qui n’existe pas ?
- A. La contrainte de domaine
- B. La contrainte de relation
- C. La contrainte de référence
- D. Aucune : le SGBD accepte l’opération
Correction publiée après la séance.
Exercice 2 : les services rendus par un SGBD
Un cinéma vend ses places à la caisse et sur son site. Toutes les ventes sont enregistrées dans une base de données gérée par un SGBD. Pour chacune des situations a) à d), nommer le service du SGBD qui intervient.
Indice
Le cours présente quatre services : la persistance des données, la gestion des accès concurrents, l’efficacité de traitement des requêtes et la sécurisation des accès. Chaque situation en illustre un.
a) Un spectateur à la caisse et un autre sur le site achètent au même instant la dernière place de la séance de 20 h 30 : une seule des deux ventes aboutit.
b) Une coupure de courant survient pendant l’enregistrement d’une vente. Au redémarrage, cette vente est soit enregistrée en entier, soit absente, et toutes les ventes précédentes sont toujours là.
c) Un caissier peut enregistrer des ventes, mais il ne peut ni modifier le prix des places, ni consulter les recettes du cinéma.
d) La base contient plusieurs millions de ventes, et pourtant retrouver une vente à partir de son numéro est immédiat.
e) Le gérant propose de remplacer la base par un fichier CSV que la caisse et le site modifient tous les deux. Expliquer ce qui pourrait se produire dans la situation a).
Indice
Chaque programme lit le fichier, voit une place libre, enregistre sa vente, puis réécrit le fichier : que devient la vente enregistrée par le premier ?
Correction publiée après la séance.
Exercice 3 : lire une table et son schéma (exercice guidé)
Le cinéma enregistre ses films dans la table suivante, où la durée est donnée en minutes.
| id_film | titre | annee | duree |
|---|---|---|---|
| 1 | Le Voyage de Chihiro | 2001 | 125 |
| 2 | Intouchables | 2011 | 112 |
| 3 | La Grande Vadrouille | 1966 | 132 |
| 4 | Le Roi lion | 1994 | 88 |
a) Quel est le nom de cette relation ? Donner ses attributs, puis son nombre de n-uplets.
Indice
Les attributs sont les colonnes, les n-uplets sont les lignes, sans compter la ligne des noms de colonnes.
b) Proposer un domaine pour chaque attribut, puis écrire le schéma de la relation avec ses domaines, dans la notation du cours.
Indice
Pour chaque colonne, se demander si ses valeurs sont des entiers ou des chaînes de caractères. Dans la notation du cours, un entier s’écrit INT et une chaîne de caractères TEXT.
c) Le domaine de l’attribut duree peut être plus restreint que l’ensemble des entiers. Proposer une restriction, et donner une valeur qu’elle empêcherait d’enregistrer.
Indice
Quelles valeurs entières n’ont aucun sens pour une durée de film ?
d) Un nouveau film intitulé Le Roi lion est sorti en 2019. Pourquoi l’attribut titre ne peut-il pas servir de clé primaire ? Écrire le schéma de la relation, sans les domaines, en soulignant sa clé primaire.
Indice
Une clé primaire doit rester unique, pour tous les films que le cinéma enregistrera.
e) Classer les opérations suivantes selon qu’elles modifient la structure de la base ou son contenu :
- enregistrer le film Le Roi lion de 2019 ;
- ajouter un attribut
realisateurà la table Films ; - corriger la durée d’un film ;
- créer une table Salles ;
- supprimer le film n° 3.
Indice
La structure comprend les tables, leurs attributs et leurs domaines ; le contenu est l’ensemble des n-uplets enregistrés.
Correction publiée après la séance.
Exercice 4 : choisir une clé primaire
Le cinéma propose une carte d’abonnement. Les abonnés sont enregistrés dans la table Abonnes ; Hugo Moreau n’a pas donné d’adresse électronique.
| num_carte | nom | prenom | date_naissance | |
|---|---|---|---|---|
| A1027 | Bernard | Lucie | 2008-03-14 | lucie.bernard@exemple.fr |
| A1028 | Moreau | Hugo | 2007-11-02 | |
| A1031 | Bernard | Lucie | 1975-06-30 | l.bernard@exemple.fr |
| A1032 | Petit | Nadia | 2008-03-14 | nadia.petit@exemple.fr |
a) En s’appuyant sur les données, expliquer pourquoi l’attribut nom ne peut pas être la clé primaire de cette table. Même question pour le groupe d’attributs (nom, prenom), puis pour l’attribut date_naissance.
Indice
Chercher, pour chaque proposition, deux lignes qui ont la même valeur.
b) Toutes les adresses électroniques présentes dans la table sont différentes. Pourquoi l’attribut email ne peut-il pas, pour autant, servir de clé primaire ?
Indice
Une clé primaire respecte deux règles. Les données respectent-elles la seconde ? Et la première restera-t-elle vraie pour tous les abonnés à venir ?
c) Quel attribut choisir comme clé primaire ? Écrire le schéma de la relation en soulignant cette clé.
Indice
Le cinéma attribue lui-même un numéro différent à chaque carte.
d) Les abonnés notent de 1 à 5 les films qu’ils ont vus, une seule fois par film. Les notes sont enregistrées dans la table Avis(#num_carte, #id_film, note). Expliquer pourquoi aucun attribut seul ne peut servir de clé primaire, puis indiquer quel groupe d’attributs peut jouer ce rôle.
Indice
Un abonné peut noter plusieurs films, et un film peut être noté par plusieurs abonnés. Qu’est-ce qui ne peut pas se répéter ?
Correction publiée après la séance.
Exercice 5 : lire un schéma relationnel
La base du cinéma a le schéma relationnel suivant :
- Films(id_film, titre, annee, duree)
- Salles(num_salle, nb_places)
- Seances(id_seance, #id_film, #num_salle, jour, heure)
La table Films a le contenu de l’exercice 3. Voici le contenu des deux autres tables.
Salles
| num_salle | nb_places |
|---|---|
| 1 | 180 |
| 2 | 95 |
| 3 | 40 |
Seances
| id_seance | id_film | num_salle | jour | heure |
|---|---|---|---|---|
| 1 | 2 | 1 | samedi | 14:00 |
| 2 | 2 | 3 | samedi | 20:30 |
| 3 | 4 | 2 | samedi | 16:00 |
| 4 | 1 | 1 | dimanche | 15:00 |
| 5 | 4 | 2 | dimanche | 11:00 |
a) Lire ce schéma à l’aide des trois questions du cours : quelles sont les tables, quels sont leurs attributs, et quels liens les clés étrangères établissent-elles ?
Indice
Pour chaque attribut précédé d’un dièse, chercher la table dont il reprend la clé primaire.
b) Quel film est projeté lors de la séance 3, et combien de places compte la salle où elle a lieu ?
Indice
Lire la ligne de la séance 3, puis chercher la valeur de id_film dans la table Films et celle de num_salle dans la table Salles.
c) Quels films peut-on voir le samedi, et dans quelles salles ?
Indice
Repérer les séances du samedi, puis faire pour chacune la même recherche qu’à la question b).
d) Quel film n’a aucune séance ?
Indice
Pour chaque film, chercher son identifiant dans la colonne id_film de la table Seances.
e) Un même film peut-il être projeté dans plusieurs salles ? Une même salle peut-elle accueillir plusieurs films ? Répondre en s’appuyant sur les données, puis expliquer comment le schéma le permet.
Indice
Chaque séance relie un film et une salle. Qu’est-ce qui empêcherait deux séances de désigner le même film, ou la même salle ?
f) Pourquoi le titre du film n’est-il pas écrit dans la table Seances ?
Indice
Combien de fois le titre d’Intouchables serait-il écrit ? Que faudrait-il faire pour corriger ce titre ?
Correction publiée après la séance.
Exercice 6 : anomalies d’une table unique
Avant d’utiliser cette base, le cinéma enregistrait ses réservations dans une seule table, où la durée du film est en minutes et la salle donnée par son numéro.
| num_reservation | spectateur | titre | duree | jour | heure | salle | |
|---|---|---|---|---|---|---|---|
| 501 | Chloé Roux | chloe.roux@exemple.fr | Intouchables | 112 | samedi | 14:00 | 1 |
| 502 | Sami Haddad | sami.haddad@exemple.fr | Intouchables | 112 | samedi | 14:00 | 1 |
| 503 | Chloé Roux | chloe.roux@exemple.fr | Le Roi lion | 88 | samedi | 16:00 | 2 |
| 504 | Malik Benali | m.benali@exemple.fr | Intouchables | 115 | samedi | 20:30 | 3 |
a) Quelles informations sont recopiées dans plusieurs lignes ? Comment appelle-t-on ce défaut ?
Indice
Comparer les lignes deux à deux : spectateur, film, séance.
b) La durée d’Intouchables n’est pas la même dans toutes les lignes. Comment cette incohérence a-t-elle pu se produire ? Quelle anomalie révèle-t-elle ?
Indice
La durée est recopiée à chaque réservation : que se passe-t-il si on la corrige dans une ligne seulement ?
c) Le cinéma veut programmer une séance de La Grande Vadrouille le dimanche à 18 h, avant que quiconque l’ait réservée. Pourquoi est-ce impossible avec cette table ? Quelle anomalie est-ce ?
Indice
Que décrit chaque ligne de la table ? Quelles colonnes resteraient vides ?
d) Malik Benali annule la réservation 504, et l’on supprime la ligne. Quelles informations perd-on en même temps ? Quelle anomalie est-ce ?
Indice
La séance du samedi à 20 h 30 figure-t-elle dans une autre ligne ?
e) Proposer un découpage en plusieurs tables qui supprime ces anomalies : reprendre les tables Films, Salles et Seances de l’exercice 5, et ajouter une table des spectateurs et une table des réservations. Écrire le schéma relationnel, en soulignant les clés primaires et en précédant les clés étrangères d’un dièse.
Indice
Une réservation relie un spectateur à une séance : elle a donc deux clés étrangères.
f) Vérifier que ce découpage supprime chacune des trois anomalies des questions b) à d).
Indice
Pour chaque anomalie, dire dans quelle table l’information concernée est désormais écrite, et combien de fois.
Correction publiée après la séance.
Exercice 7 : opération acceptée ou refusée ?
On reprend la base de l’exercice 5, avec le contenu de ses trois tables. En plus des clés primaires et étrangères, le cinéma a restreint deux domaines : la durée d’un film et le nombre de places d’une salle sont des entiers strictement positifs.
On tente les opérations suivantes, l’une après l’autre. Pour chacune, indiquer si le SGBD l’accepte ou la refuse, et justifier en nommant la contrainte d’intégrité concernée.
Indice
Pour chaque opération, vérifier les trois contraintes : les valeurs appartiennent-elles à leur domaine ? La clé primaire reste-t-elle unique et non vide ? Chaque clé étrangère désigne-t-elle encore une ligne qui existe ?
- Ajouter à la table Films la ligne (5, Le Roi lion, 2019, 118).
- Ajouter à la table Films la ligne (2, Astérix et Obélix : Mission Cléopâtre, 2002, 107).
- Ajouter à la table Salles la ligne (4, 0).
- Ajouter à la table Seances la ligne (6, 3, 7, dimanche, 18:00).
- Ajouter à la table Seances une séance sans identifiant, pour le film 3, en salle 2, le dimanche à 18:00.
- Ajouter à la table Seances la ligne (6, 3, 2, dimanche, 18:00).
- Supprimer de la table Films le film 3, La Grande Vadrouille.
- Supprimer de la table Films le film 5, Le Roi lion de 2019.
- Changer le numéro de la salle 2 en 5.
Correction publiée après la séance.