Base de données 1

7.2- Exercices

Laboratoire 4

Mettre en place la base de données et modifier le projet de départ pour intégrer les requêtes SQL nécessaires au fonctionnement de l'application Monovox permettant de gérer le fonctionnement des cours dans un établissement d'enseignement:

  • Liste des groupes par session
  • Gestion CRUDL des travaux d'un groupe
  • Saisie des notes des étudiants d'un groupe pour un travail
  • Sommaire des notes d'un étudiant par session

Mise en place du projet

Installer l'interpréteur PHP

bash
su root -c "apt update && apt install -y php php-mysql zip unzip"

Récupérer le projet de départ, en usager STANDARD

bash
wget -O monovox.zip {URL CI-DESSUS}

unzip monovox.zip

Et finalement démarrer l'application, qui sera accessible via un navigateur web http://a.b.c.d:8080 selon l'IP de votre machine virtuelle

bash
cd monovox

./run.sh

Puis, l'opération inverse pour effectuer votre remise

bash
zip remise.zip -r monovox/

Méthodologie

  • Configurer une base de données nommée monovox, avec les accès complet à l'interne par l'utilisateur tux et le mot de passe freeandopensource
  • Appliquer le script du fichier _init.sql qui contient la structure initiale de la base de données

  • Les requêtes SQL nécessaires au fonctionnement de l'application sont regroupées dans le dossier db du projet de départ. Implémenter la requête décrite dans chaque fichier selon le format demandé.

    • Ne PAS modifier les fichiers commençant par _
  • Vous devez mettre en place toutes vos modifications à la base de données initiale dans le fichier lab.sql

    • Le fichier lab.sql sera appliqué après _init.sql lors de la correction
      • Ne PAS créer la base de données et l'utilisateur dans le fichier lab.sql, cet environnement existera lors de la correction

Base de données

Les tables en gris sont fournies dans le projet de départ. Les données de ces tables sont fournies périodiquement par un autre système, Monovox ne les manipule qu'en lecture seulement. Les tables assignments et grades sont à implémenter et appartiennent à Monovox.

teachers

Les enseignants de l'établissement qui peuvent accéder au système via leur numéro d'employé et un mot de passe.

students

Les étudiants de l'établissement qui peuvent accéder au système via leur numéro d'étudiant et un mot de passe.

courses

Les sujets pouvant être enseignés.

groups

Un groupe identifie le sujet d'un enseignant pour une session. Chaque groupe possède un numéro unique pour la même combinaison de session et cours. Un enseignant ne peut pas enseigner le même sujet plusieurs fois au même groupe dans une session.

classes

Une classe représente l'inscription d'un étudiant dans un groupe.

assignments

Un énoncé représente un travail demandé aux étudiants d'un groupe. Il est identifié par un nom, son poids dans la session(%), le nombre de points d'évaluation et la date d'échéance.

grades

Une note est le résultat d'un étudiant pour un travail.

Implémentation

Pour chaque table ci-dessous, implémenter le mécanisme approprié permettant d'assurer l'intégrité des données.

assignments

  • Aucunes valeurs vides
  • Poids >= 0 et <= 100
  • Points > 0
  • Date >= aujourd'hui
  • La somme des poids pour un groupe est <= 100
  • La création d'un travail entraîne la création de notes avec un pointage NULL pour tous les étudiants du groupe

grades

  • Points NULL ou >= 0 (un vide est transformé en NULL via PHP)
  • La suppression d'un travail entraîne la suppression des notes associées

Relations

  • Analysez chaque requêtes pour vous assurer que la relation de possession est respectée. Donc, un utilisateur ne peut manipuler que les données qui lui sont associées.

Mécanismes intéressants 👀

Remise

18 décembre, 8h via LÉA

  • Une pénalité de 10% sera appliquée à la note finale pour chaque jour de retard à la remise.
  • Vous devez remettre via LÉA votre dossier monovox complet dans un fichier ZIP.

Base de données 1

Nom:

Suivi 1
Démarrage de l'application web 2     0
Création des tables, Données de départ 3     2.5     2     1     0
Requête 3, Affichage Web /pages/teachers/groups 2     1.5     1     0
Suivi 2
Intégrité des données des assignments 2     1.5     1     0
Requête 5, Affichage Web /pages/teachers/assignments 2     1.5     1     0
Requête 9, Affichage Web créer assignment 2     1.5     1     0
LIVRAISON
Remise
Zip et dossier complet 0     -1     -2
Qualité de rédaction 0     -0.5     -1     -2
Qualité de l'implémentation 0     -0.5     -1     -2
Exécution répétée lab.sql, delimiters 0     -0.5     -1     -2
Respect des identifiants de la base de données et de l'utilisateur 0     -1     -2
Tables
Création de la table assignments, colonnes, types, attributs, clés 2     1.5     1     0
Création de la table grades, colonnes, types, attributs, clés 2     1.5     1     0
Insertion de données de départ significatives, assignments et grades 2     1.5     1     0
Intégrité
assignments, Aucunes valeurs vides 1     0.5     0
assignments, Poids >= 0 et <= 100 1     0.5     0
assignments, Points > 0 1     0.5     0
assignments, Date >= aujourd'hui 1     0.5     0
assignments, Somme des poids <= 100 1     0.5     0
assignments, Création du travail crée les notes 1     0.5     0
grades, Points NULL OU >= 0 1     0.5     0
grades, Suppression du travail supprime les notes 1     0.5     0
Respect de la relation avec l'enseignant 2     1.5     1     0
Requêtes
03 $groups, students, tri code et number 2     1.5     1     0
05 $assignments, average, failed, filled, total, tri date 2     1.5     1     0
06 $assignments adjacents, average, tri date 2     1.5     1     0
07 $grades du travail, tri nom 2     1.5     1     0
08 $assignment, remaining_weight, gestion null si création 2     1.5     1     0
09 insert 2     1.5     1     0
10 update 2     1.5     1     0
11 delete 2     1.5     1     0
13 $grades, infos adjacentes(note, travail, cours, enseignant), résultat percent, average, tri code et date 3     2.5     2     1     0
via une View 2     1.5     1     0