Voici une proposition de structure de la base "emploi du temps" demandée en TP n°1. Je n'ai pas précisé les types des champs, mais il faudrait le faire.
Ci-dessous, sa définition SQL (obtenue sous phpmyadmin via le menu "exporter" puis "SQL")
-- proposition de solution TP1 (LPA3 UE62) -- CREATE DATABASE `base1` -- USE base1; CREATE TABLE `profs` ( `id` int NOT NULL auto_increment, `nom` varchar(16) NOT NULL default '', `prenom` varchar(16) NOT NULL default '', `mail` varchar(30), PRIMARY KEY (`id`) ) ; INSERT INTO `profs` VALUES (1, 'einstein', 'albert', 'e.mc2@nasa.fr'); INSERT INTO `profs` VALUES (2, 'newton', 'isac', 'apple.tree@ety.com'); INSERT INTO `profs` VALUES (3, 'trouvetou', 'geo', 'gt@disney.com'); CREATE TABLE `salles` ( `id` int NOT NULL auto_increment, `nom` varchar(20) NOT NULL default '', `descr` varchar(50), `places` int, PRIMARY KEY (`id`) ); INSERT INTO `salles` VALUES ('', 'amphi', 'amphitheatre', '200'); INSERT INTO `salles` VALUES ('', 's111', 'cours', '20'); INSERT INTO `salles` VALUES ('', 's207', 'TP info', '20'); INSERT INTO `salles` VALUES ('', 's212', 'TP info', '40'); INSERT INTO `salles` VALUES ('', 'projets HALL', 'projets Hall techno Illkirch', '30'); CREATE TABLE `matieres` ( `id` int NOT NULL auto_increment, `nom` varchar(16) NOT NULL default '', `descr` varchar(50), `id_type` int NOT NULL, PRIMARY KEY (`id`) ) ; INSERT INTO `matieres` VALUES ('', 'meca', 'mecanique tres tres dur', 1); INSERT INTO `matieres` VALUES ('', 'dynamique', 'Cours magistral', 1); INSERT INTO `matieres` VALUES ('', 'dynamique', 'TD Dynamique', 2); INSERT INTO `matieres` VALUES ('', 'dynamique', 'comment ca tombe', 3); CREATE TABLE `type` ( `id` int NOT NULL auto_increment, `nom` varchar(16) NOT NULL default '', PRIMARY KEY (`id`) ) ; INSERT INTO `type` VALUES ('', 'cours'); INSERT INTO `type` VALUES ('', 'TD'); INSERT INTO `type` VALUES ('', 'TP'); INSERT INTO `type` VALUES ('', 'projet'); CREATE TABLE `etudiants` ( `id` int NOT NULL auto_increment, `nom` varchar(26) NOT NULL default '', `prenom` varchar(26) NOT NULL default '', `mail` varchar(50), PRIMARY KEY (`id`) ) ; INSERT INTO `etudiants` VALUES ('', 'dupont', 'guillaume', 'dupont@kg.fr'); INSERT INTO `etudiants` VALUES ('', 'durand', 'george', 'durandg@fjf.fr'); INSERT INTO `etudiants` VALUES ('', 'durand', 'alain', 'dalain@fjf.fr'); INSERT INTO `etudiants` VALUES ('', 'dugrand', 'alain', 'dga@fjf.fr'); INSERT INTO `etudiants` VALUES ('', 'dupetit', 'alain', 'dpa@fjf.fr'); CREATE TABLE `groupes` ( `id` int NOT NULL auto_increment, `nom` varchar(16) NOT NULL default '', `descr` varchar(50), PRIMARY KEY (`id`) ) ; INSERT INTO `groupes` VALUES ('1','LPA3','Licence Physique et Applications 3eme annee'); INSERT INTO `groupes` VALUES ('2','LPA3FA','LPA3 Franco-allemand'); INSERT INTO `groupes` VALUES ('3','LPA3FF','LPA3 Franco-francais'); INSERT INTO `groupes` VALUES ('4','LPA3-TP1','TP 1 LPA3'); INSERT INTO `groupes` VALUES ('5','LPA3-TP2','TP 2 LPA3'); INSERT INTO `groupes` VALUES ('6','LPA3-TP3','TP 3 LPA3'); INSERT INTO `groupes` VALUES ('7','LPA3-TD1','TD 1 LPA3'); INSERT INTO `groupes` VALUES ('8','LPA3-TD2','TD 2 LPA3'); INSERT INTO `groupes` VALUES ('9','FC-LPA','LPA cours du soir'); INSERT INTO `groupes` VALUES ('10','FC-MIT','Master Ingenierie et technologie cours du soir'); CREATE TABLE `sous_groupes` ( `id_gr` int NOT NULL, `id_sgr` int NOT NULL ) ; INSERT INTO `sous_groupes` VALUES (1,2); INSERT INTO `sous_groupes` VALUES (1,3); INSERT INTO `sous_groupes` VALUES (2,4); INSERT INTO `sous_groupes` VALUES (3,5); INSERT INTO `sous_groupes` VALUES (3,6); INSERT INTO `sous_groupes` VALUES (1,7); INSERT INTO `sous_groupes` VALUES (1,8); CREATE TABLE `inscription` ( `id_gr` int NOT NULL default '0', `id_et` int NOT NULL default '0' ); INSERT INTO `inscription` VALUES (1, 1); INSERT INTO `inscription` VALUES (2, 1); INSERT INTO `inscription` VALUES (4, 1); INSERT INTO `inscription` VALUES (7, 1); INSERT INTO `inscription` VALUES (1, 2); INSERT INTO `inscription` VALUES (2, 2); INSERT INTO `inscription` VALUES (4, 2); INSERT INTO `inscription` VALUES (8, 2); INSERT INTO `inscription` VALUES (4, 3); INSERT INTO `inscription` VALUES (10, 4); INSERT INTO `inscription` VALUES (10, 5); CREATE TABLE `edt` ( `id` int NOT NULL auto_increment, `id_pr` int NOT NULL default '0', `id_sa` int NOT NULL default '0', `id_ma` int NOT NULL default '0', `id_gr` int NOT NULL default '0', `moment` datetime NOT NULL default '0000-00-00 00:00:00', `duree` float NOT NULL, PRIMARY KEY (`id`) ); INSERT INTO `edt` VALUES ('',1, 1, 1, 1, '2006-04-05 08:00:00',2); INSERT INTO `edt` VALUES ('',1, 4, 2, 4, '2006-04-05 10:00:00',2); INSERT INTO `edt` VALUES ('',2, 3, 2, 5, '2006-04-05 10:00:00',2);
Afficher les profs : SELECT * FROM profs;
Afficher une partie des informations : SELECT nom, descr FROM salles;
Afficher le nom d'un étudiant dont on connaît l'id : SELECT nom FROM etudiants WHERE id=3;
Ajouter un prof : INSERT INTO profs (nom,prenom,mail) VALUES ('TRAU', 'Patrick','pat(à)fr.st');
Dans la table 'edt', on n'a que des id. Comment afficher un nom en clair ? par exemple tous les profs occupés un jour donné : SELECT profs.nom, edt.moment FROM profs,edt WHERE profs.id=edt.id_pr AND moment BETWEEN '2006-04-05 8:0' and '2006-04-05 21:0';
Afficher le nom des matières de l'emploi du tps, pour un prof dont on connaît le nom : SELECT matieres.nom, edt.moment FROM edt,matieres,profs WHERE profs.nom= "einstein" AND profs.id=edt.id_pr AND matieres.id=edt.id_ma;