Exercices : bases de données relationnelles

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 ?

Exercice 1 : QCM (suite)

  • 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 ?

Exercice 1 : QCM (suite)

  • A. Les valeurs de num sont rangées dans l’ordre croissant.
  • B. Deux lignes n’ont jamais la même valeur de num, et num n’est jamais vide.
  • C. Chaque valeur de num désigne une ligne d’une autre table.
  • D. Les valeurs de 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 ?

Exercice 1 : QCM (suite)

  • A. id_film est la clé primaire de la table Seances.
  • B. id_film désigne une ligne de la table des films, par la clé primaire de cette ligne.
  • C. id_film est rangé par ordre croissant.
  • D. 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 ?

  • 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

Exercice 1 : QCM (suite)

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.

Exercice 2 : les services rendus par un SGBD (suite)

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).

Exercice 2 : les services rendus par un SGBD (suite)

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.

Exercice 3 : lire une table et son schéma (exercice guidé) (suite)

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.

Exercice 3 : lire une table et son schéma (exercice guidé) (suite)

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.

Exercice 3 : lire une table et son schéma (exercice guidé) (suite)

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 :

  1. enregistrer le film Le Roi lion de 2019 ;
  2. ajouter un attribut realisateur à la table Films ;
  3. corriger la durée d’un film ;
  4. créer une table Salles ;
  5. 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.

Exercice 4 : choisir une clé primaire (suite)

num_carte nom prenom date_naissance email
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.

Exercice 4 : choisir une clé primaire (suite)

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.

Exercice 4 : choisir une clé primaire (suite)

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

Exercice 5 : lire un schéma relationnel (suite)

num_salle nb_places
1 180
2 95
3 40

Seances

Exercice 5 : lire un schéma relationnel (suite)

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.

Exercice 5 : lire un schéma relationnel (suite)

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.

Exercice 5 : lire un schéma relationnel (suite)

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.

Exercice 6 : anomalies d’une table unique (suite)

num_reservation spectateur email 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.

Exercice 6 : anomalies d’une table unique (suite)

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 ?

Exercice 6 : anomalies d’une table unique (suite)

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 6 : anomalies d’une table unique (suite)


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 ?

Exercice 7 : opération acceptée ou refusée ? (suite)

  1. Ajouter à la table Films la ligne (5, Le Roi lion, 2019, 118).
  2. Ajouter à la table Films la ligne (2, Astérix et Obélix : Mission Cléopâtre, 2002, 107).
  3. Ajouter à la table Salles la ligne (4, 0).
  4. Ajouter à la table Seances la ligne (6, 3, 7, dimanche, 18:00).

Exercice 7 : opération acceptée ou refusée ? (suite)

  1. Ajouter à la table Seances une séance sans identifiant, pour le film 3, en salle 2, le dimanche à 18:00.
  2. Ajouter à la table Seances la ligne (6, 3, 2, dimanche, 18:00).
  3. Supprimer de la table Films le film 3, La Grande Vadrouille.
  4. Supprimer de la table Films le film 5, Le Roi lion de 2019.
  5. Changer le numéro de la salle 2 en 5.

Correction publiée après la séance.