6.3 - 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

Configuration de l'environnement de la VM

Installer l'interpréteur PHP

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

Récupérer le projet de départ

wget -O monovox.zip https://cshaw.jhoffman.ca/sessions/2023A/0Q7/documentation/assets/06.3-laboratoire-4/monovox.zip

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

cd monovox

./run.sh
  • Configurer une base de données nommée monovox, accessible à l'interne pour l'utilisateur tux avec le mot de passe freeandopensource
  • Appliquer le script du fichier _INIT.sql qui contient la structure initiale de la base de données

Implémentation

  • 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
  • Les requêtes SQL nécessaires au fonctionnement de l'application sont regroupées dans le dossier database 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 _

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
  • La suppression d'un travail entraîne la suppression des notes associées

grades

  • Points NULL ou >= 0 (un vide est transformé en NULL via PHP)

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

20 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 dans un fichier ZIP.

Critères d'évaluation

Laboratoire - 15% Nom: ________________       / 38.5

Suivis
/ 5% / 5
Suivi 1, Vendredi 1er décembre
Mise en place du projet, création des tables, données de départ, PoC Requête 3
0122.5
Suivi 2, ANNULÉ: pondéré à la livraison
Requêtes 5, 9
0122.5
Remise
/ 10% / 38.5
Respect des identifiants de la base de données et de l'utilisateur OK-1-2
Création de la table assignments: colonnes, types, attributs, clés 011.52
Création de la table grades: colonnes, types, attributs, clés 011.52
Insertion de données de départ significatives: assignments et grades 0122.5
Mécanisme d'intégrité des données
assignments: Aucunes valeurs vides 00.51
assignments: Poids >= 0 et <= 100 00.51
assignments: Points > 0 00.51
assignments: Date >= aujourd'hui 00.51
assignments: Somme des poids 00.51
assignments: Création du travail crée les notes 00.51
assignments: Suppression du travail supprime les notes 00.51
grades: Points NULL OU >= 0 00.51
Respect de la relation avec l'enseignant 0122.5
Requêtes SQL
03 : $groups, # students, tri code et number 00.511.5
05 : $assignments, average, failed, filled, total, tri date 00.511.522.5
06 : $assignments adjacents, average, tri date 00.511.52
07 : $grades du travail, tri nom 00.51
08 : $assignment, remaining_weight, gestion null si création 00.51
09 : insert 00.51
10 : update 00.51
11 : delete 00.51
13 :
$grades, infos adjacentes(note, travail, cours, enseignant), résultat percent, average, tri code et date

via une View
011.522.53


01
Qualité du code
Exécution répétée du fichier LAB.sql OK-1
Nomenclature, Indentation, Organisation, Capitalisation OK-0.5-1-2
Choix judicieux des fonctions, opérateurs et mécanismes SQL OK-0.5-1-2