retour cours prog et BD

Licence Physique et Applications

Parcours Ingénierie (L3S6 / UE62)

TP n° 1 2007

Programmation et bases de données

Nous allons, au cours des cinq TP prévus cette année, mettre en place une base de données consultable via Internet. Ce que vous allez mettre en place aujourd'hui sera donc réutilisé dans les TP suivants. 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. Il peut être sur papier ou envoyé par mail (essayez avant la fin du TP !). Gardez vos brouillons pour les prochains TP.

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, pour l'instant, est l'information donnée, sa mise en forme n'ara à être traitée que quand tout le reste fonctionne). 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).

1) structure de la base

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.

De plus (si le reste est résolu), vous pourrez gérer l'imbrication des 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. Exemple simple : LPA3 est un groupe, qui contient deux groupes de TD, qui chacun contiennent deux groupes de TP. Exemple plus complexe :LPA2 qui contient 2 groupes de TD et 3 groupes de TP :on mettra les groupes de TP et TD au "même niveau". Troisième exemple (que vous n'êtes pas obligé de prendre en compte), en Master il y a GMI, IISA, MECA et FA; en GMI il peut y avoir 2 groupes de TP alors qu'on pourrait regrouper FA+MECA en un seul. Il peut y avoir 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). J'ai montré en cours une définition de structure de base, à l'aide d'un schéma définissant les tables, les champs, les relations (ceux qui dormaient peuvent regarder pat.trau.fr/sujets/suj2006/ue62-cc1-correction.htm). Si vous avez des idées d'amélioration ,vous pouvez me les proposer, en particulier sur la gestion des groupes et sous-groupes.

2) création de la base

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. Trouvez comment on demande à phpMyAdmin de nous donner les instructions SQL qui permettent de recréer entièrement la base (vous pouvez m'envoyer le fichier par mail).

3) requêtes

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 :

4) pour les plus avancés :

Immaginez la forme des pages d'accès à cette base de données qui vous plairaient.


retour cours prog et BD

P. TRAU, ULP-IPST, 2007