Pour chaque question, une seule réponse est correcte.
1. Dans le modèle relationnel, comment appelle-t-on une ligne d’une table ?
Correction publiée après la séance.
2. Qu’est-ce que le domaine d’un attribut ?
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 ?
num sont rangées dans l’ordre croissant.num, et num n’est jamais vide.num désigne une ligne d’une autre table.num sont 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 ?
id_film est la clé primaire de la table Seances.id_film désigne une ligne de la table des films, par la clé primaire de cette ligne.id_film est rangé par ordre croissant.id_film est 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 ?
pays à la table des filmsCorrection 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 ?
Correction publiée après la séance.
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.
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).
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.
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.
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.
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.
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.
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 :
realisateur à la table Films ;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.
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.
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 ?
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é.
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.
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.
La base du cinéma a le schéma relationnel suivant :
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 ?
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 ?
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 ?
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 ?
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.
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 ?
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.
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 ?
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 ?
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 ?
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 ?
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.
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).
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.
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.
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 ?
Correction publiée après la séance.