TD Cohérence des Bases de Données

Première Partie : Préparation de la Base de données.

La VBox utilisé dans ce TD provient d'Oracle et est pré-configurée avec un base ad hoc pour les formations dispensées dans leur contexte propre. Pour nos besoins, nous allons reconfigurer l'environnement et créer une toute nouvelle base.
Depuis un clone de la VBox Oracle Developer Days
  1. téléchargez le fichier dbcreateV3.zip;
  2. décompressez-le; il comporte les fichiers suivants:
    createdb.sql
    finish.sql
    inittdmines.ora
    removedb.sh
    script.sh
    setupdb.sql
  3. Ouvrez un terminal et exécutez, dans l'ordre:
$ emctl start dbconsole
$ cd CREATE_DB
$ bash ./script.sh

SQL> @setupdb.sql
Password: oracle
SQL> @createdb.sql
SQL> @finish.sql 

ATTENTION, il faut compter au moins 15 minutes pour l'exécution de l'ensemble des scripts ci-dessus.
Si tout s'est déroulé comme prévu, vous pouvez maintenant démarrer une session SQL Developper et vous connecter au SID tdmines (login: tdmines ; mot de passe: tdmines)

Seconde Partie : Modélisation et Génération de DDL

  • Télécharger le modèle entité-association, le décompresser, et l'ouvrir (avec File->Open et non pas Import) avec SQL Developer Data Modeler.
  • Générer le modèle relationnel à partir du modèle logique ainsi importé
  • Générer le fichier .DDL de création de la base.
  • Corriger l'erreur signalée sur la longueur de colonne dans la table Participe, en enlevant le préfix SéancePréparation_ aux 3 endroits où il apparaît (ceci est obligatoire pour la validité des scripts suivants)
  • Utiliser le fichier ainsi corrigé dans SQL Developer pour créer les tables dans la base de données.
  • Peupler les tables à l'aide du script fourni ici.

Troisième Partie : Gestion de la Cohérence Sémantique

Exercice Préliminaire

  • Créer des séquences pour chaque table, permettant de garantir l'unicité des identifiants (http://www.techonthenet.com/oracle/sequences.php)
  • Créer les triggers permettant d'insérer des éléments sans fournir l'identifiant (et qui insère automatiquement le numéro de séquence adéquat)
Pour chaque exercice suivant, il convient de trouver la bonne stratégie pour garantir la cohérence sémantique, par exemple, pas pas exclusivement en créant des triggers. Une explication succincte sur les triggers est disponible ici.

ATTENTION, il est entendu que l'ensemble des garanties de cohérence sémantique reste maintenu au fur et à mesure que d'autres contraintes s'ajoutent. Cela implique que certains exercices plus avancés peuvent avoir un effet rétroactif et nécessitent de revenir sur la formulation de la solution d'autres exercices. Dans ce cas, il est nécessaire de bien le signaler.

Vous rendrez pour chaque exercice (à l'exception de l'exercice h) un fichier .sql commenté avec le code adéquat. Tout code provocant des erreurs de compilation sera considéré comme faux et ne sera pas corrigé.  

Exercice a

Garantir qu'un moniteur ne puisse pas prendre de congé en conflit avec les séances de préparation qu'il encadre

Exercice b

Garantir qu'un moniteur ne puisse pas encadrer une séance de préparation s'il est en congé ce jour-là

Exercice c

Garantir qu'un candidat ne puisse être inscrit qu'à une seule séance d'examen dans le futur

Exercice d

Garantir il ne peut y avoir qu'un seul examen en même temps par centre d'examen

Exercice e

Garantir que si un candidat s'inscrit à une séance d'examen et qu'il est, en même temps inscrit à une séance de préparation qui a lieu en même temps, il est désinscrit de la séance de préparation

Exercice f

N'autoriser l'inscription d'un candidat à l'examen que s'il a suivi des séances de préparation provenant d'au moins 5 séries différentes

Exercice g

N'autoriser l'inscription d'un candidat à l'examen que s'il a suivi des séances de préparation provenant d'au moins 5 séries différentes et qu'il en a réussi au moins 4.

Exercice h

Le modèle actuel comporte une incohérence au niveau de la modélisation des questions et réponses. Il n'y a notamment pas de garantie que plusieurs réponses à une même question ne portent pas la même lettre. Par ailleurs on voudrait pouvoir réutiliser une même réponse pour différentes questions.
Comment suggérez-vous de procéder ?
ċ
EcoleDeMusique.ddl
(17k)
Bart Lamiroy,
24 mai 2016 à 07:08
ċ
TD2015-OK.zip
(35k)
Bart Lamiroy,
13 mai 2015 à 02:05
ċ
dbcreateV3.zip
(309k)
Bart Lamiroy,
23 mai 2016 à 07:50
ċ
import_data.sql
(50k)
Bart Lamiroy,
13 mai 2015 à 02:11
Comments