retour sujet TP1

Licence Physique et Applications

Parcours Ingénierie (L3S6 / UE62)

proposition correction TP n°1

Programmation et bases de données



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);

Exemples de requêtes :

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;

retour sujet TP1

P. TRAU, ULP-IPST, 2007