Nous allons, au cours des quatre TP prévus cette année, mettre en place une base de données consultable via Internet. Ce que vous allez mettre en place ce matin sera donc réutilisé dans les TP suivants. Le programme prévisionnel des TP est le suivant : 1) base de données et SQL, 2) langages HTML et PHP, 3) interaction page web - base de données, 4) mise en forme, sécurisation, algorithmes. Vous allez travailler en binôme (mais pas nécessairement obtenir la même note de participation) et me rendre un rapport (un par binôme) en fin de séance. Ce rapport détaillera en gros ce que vous avez fait, et vos remarques.
Pour mettre en place une base de données efficace, il est nécessaire de bien comprendre les besoins des utilisateurs finaux. Ceci passe par une définition précise du besoin, d'un cahier des charges fonctionnel... Ici, vous dominerez le sujet car il vous concerne directement : votre emploi du temps. Le but principal est que chaque étudiant de l'IPST puisse connaître son emploi du temps (individualisé), pour un jour donné ou n'importe quelle plage de temps (l'important est l'information donnée, sa mise en forme n'est que secondaire). Les objectifs annexes seront une introduction et modification aisées des données, une sécurisation des données (mot de passe pour les modifications), des outils de vérifications (non chevauchement de plages, disponibilité des intervenants et salles), des aides à la décision (recherches de plages disponibles communes), des outils statistiques (taux d'utilisation des salles).
5 tables définiront nos entités principales : les étudiants (nom, prénom, mail), les profs (nom, prénom, mail), les salles (nom, descriptif, nombre de places), les matières (nom, descriptif, type=[cours, TD, TP, conférence, examen, projet...]), les groupes (nom, descriptif).
Une table identifiera réellement l'emploi du temps : quel groupe d'étudiants, quelle salle, quel prof, date et heure, durée. Je propose qu'un cours répétitif soit inscrit autant de fois qu'il aura lieu. On pourra prévoir une saisie automatique dans une plage donnée, ce sera l'application Web qui calculera les dates admissibles dans la plage, mais il faudra alors avoir prévu les vacances et jours fériés.
Pour les groupes (de TD, de TP, de langues...), je propose deux tables : la première lie chaque étudiant à un groupe (si un étudiant est dans N groupes, il aura N enregistrements le concernant). La seconde gère l'imbrication des groupes (en Master1 il y a GMI, IISA et MECA, FA, en GMI il y a 2 groupes de TP,... mais il y a des cours communs GMI+IISA sans FA ou GMI+FA, qui pour les TD et TP doivent être découpés différemment).
Question 1 : définissez sur papier la structure de la base (schéma). Pour ceux qui ne savent pas quels schémas j'attends, regardez la correction de l'examen 2006. Si vous avez des idées d'amélioration ,vous pouvez me les proposer, en particulier sur la gestion des groupes et sous-groupes.
Vous allez ensuite créer cette base de données. Vous travaillerez sous Windows ou Linux pour cette partie (nous utiliserons Linux aux prochains TP). Nous avons à l'IPST un serveur (matériel) nommé ipst-sv, sur lequel est installé un SGBD en mode client/serveur (mysql). On pourrait donc accéder à la base, en SQL, depuis tout poste disposant d'un client SQL en mode texte. Pour vous simplifier la tâche, nous avons également installé sur ipst-sv (on aurait pu le mettre autre part) un serveur web (Apache) et un client SQL (phpMyAdmin, écrit en PHP comme vous le ferez aussi dans les TP suivants) qui préfère sortir des pages web que du texte. De plus il a prévu la plupart des opérations que vous pourriez avoir envie d'effectuer, ce qui fait qu'il n'y a presque pas besoin d'utiliser SQL (mais lui bien sûr doit le faire, d'ailleurs il vous indique toujours sa requête). Vous y accédez par un navigateur, à l'adresse ipst-sv/phpmyadmin
Il y a une base (vide) préparée pour chaque binôme, demandez moi son nom et mot de passe.
Question 2 : Créez la table que vous avez décrite en question précédente. Mettez-y quelques données pour pouvoir faire des tests. Demandez à phpMyAdmin de vous donner les instructions SQL qui permettent de recréer entièrement la base (vous pouvez m'envoyer le fichier par mail à pat(à)fr.st).
Question 3 : dans les TP suivants, vous devrez effectuer les différentes requêtes en SQL. Autant les préparer (et tester) aujourd'hui. Il y a sous phpMyAdmin une fenêtre SQL permettant de donner ces requêtes. Prévoyez-en un maximum, dont :