BDR SI3 SI4 MAM4 TP4 :Gestion d un emploi du temps



Documents pareils
Cours: Administration d'une Base de Données

Création et Gestion des tables

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Le Langage De Description De Données(LDD)

Olivier Mondet

Bases de Données relationnelles et leurs systèmes de Gestion

Installation d'un serveur FTP géré par une base de données MySQL

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

CREATION WEB DYNAMIQUE

I4 : Bases de Données

Modélisation et Gestion des bases de données avec mysql workbench

TP3 : Creation de tables 1 seance

PHP 5. La base de données MySql. A. Belaïd 1

TP Bases de données réparties

1/ Présentation de SQL Server :

TP2_1 DE BUSINESS INTELLIGENCE ISIMA ZZ3 F3

I. MySQL : Serveur et SGBD

Langage SQL : créer et interroger une base

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Java DataBaseConnectivity

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Bases de Données Avancées

OpenPaaS Le réseau social d'entreprise

Méthode de préparation du fichier texte d import depuis Excel, via Access jusqu à Drupal.

BASES DE DONNEES TP POSTGRESQL

TP Contraintes - Triggers

Stockage du fichier dans une table mysql:

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

Bases de données et sites WEB

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Gestion de base de données

Application web de gestion de comptes en banques

Notes de cours : bases de données distribuées et repliquées

Configurer la supervision pour une base MS SQL Server Viadéis Services

Pour les débutants. langage de définition des données

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Auto-évaluation Oracle: cours de base

1 Position du problème

Construire une base de donnée pour bibliothèque

1. Base de données SQLite

NF26 Data warehouse et Outils Décisionnels Printemps 2010

Gestion des utilisateurs et de leurs droits

SQL Historique

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Partie 0 : Gestion des tablespace et des utilisateurs... 3

TP Programmation Java / JDBC / Oracle

Introduction à JDBC. Accès aux bases de données en Java

Structure fonctionnelle d un SGBD

Le langage SQL (première partie) c Olivier Caron

Pratique et administration des systèmes

Cours Bases de données 2ème année IUT

Cours de SQL SERVER 2005 SQL SERVER 2005

Insérer des images dans Base

Utilisation d Hyperplanning 2011

TP2 DE BUSINESS INTELLIGENCE ISIMA ZZ3 F3

TP2 : Client d une BDD SqlServer

Historisation des données

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

SUPPORT DE COURS / PHP PARTIE 3

Bases de données relationnelles

Sommaire. Etablir une connexion avec une base de données distante sur PostGreSQL

Département Génie Informatique

Le Langage SQL version Oracle

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

Java et les bases de données

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

Introduction au Système de Gestion de Base de Données et aux Base de Données

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Développement de base de données Microsoft SQL Server Durée : 5 jours Référence : DPSQL12. Contenu

Les BASES de DONNEES dans WampServer

A QUOI SERVENT LES BASES DE DONNÉES?

MySQL / SQL EXEMPLES

Partie II Cours 3 (suite) : Sécurité de bases de données

WHATSUP GOLD GESTION DE LA BASE DE

Environnements informatiques

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

BIRT (Business Intelligence and Reporting Tools)

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

UML et les Bases de Données

Master Exploration Informatique des données DataWareHouse

Compétences Business Objects

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Compte Rendu d intégration d application

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

Transcription:

BDR SI3 SI4 MAM4 TP4 :Gestion d un emploi du temps 1 Exposé du problème On se propose de réaliser un système d information pour gérer l emploi du temps des étudiants des départements SI et MAM. Il s agit de concevoir la base, de générer les différentes tables et de les remplir avec un jeu de données initial (cf les fichiers creneaux.csv et edt_49.csv dans http://users.polytech.unice.fr/~rueher/cours/bd/tp4). 1.1 Fichiers de données Le fichier creneaux.csv contient les caractéristiques générales des créneaux d enseignement. Il comporte des lignes avec les champs suivants : 1. code_module varchar(20) : le code d un module d enseignement tel que BD, LFA ou SYSTEME ; 2. libelle varchar(50) : le nom détaillé du module; 3. cursus varchar(10): le nom d un groupe d étudiants pour lequel on veut pouvoir afficher un edt, comme "SI1", "MAM2". 4. groupe varchar(10) : le nom d un groupe d étudiants qui suivent ensemble un ou plusieurs enseignements, comme SI2, MA2, GR3 ou SM2. 5. durée : la durée du créneau type, en nombre entier d heures, et qui sera la même chaque fois que le créneau aura lieu. Les fichiers edt_x.csv, que l on reçoit chaque semaine pour alimenter la base, permettent de définir l emploi du temps de la semaine créneau par créneau. Ils comportent des lignes avec les champs suivants: 1. code_module varchar(20) : code de module 2. groupe varchar(10) 3. semaine numeric(2,0) : numéro de la semaine (de 1 à 52) 4. jour numeric(1,0) : numéro du jour de la semaine (de 1 à 5) 5. heured numeric(1,0) : numéro de la tranche horaire du démarrage du créneau (de 1 à 8) 6. salle varchar(10) : un nom de salle 1.2 Contraintes et dépendances fonctionnelles L association (code_module, groupe) constitue un créneau type d enseignement, se déroulant certaines semaines de l année. On suppose que les contraintes suivantes sont respectées: 1. Un créneau type (code_module, groupe) se déroule au plus une fois par semaine, et en une seule fois (une seule journée et sans interruption). 2. Pour une semaine donnée, un créneau type se déroule dans la même salle. 3. Chaque module est défini par son code. Il a un seul libellé. 4. un groupe est rattaché à un ou plusieurs cursus. 5. Chaque créneau type (code_module, groupe) a une seule durée. Les dépendances fonctionnelles suivantes doivent être vérifiées: 1. code_module libelle 2. code_module, groupe duree 3. code_module, groupe, sem jour, heured 4. code_module, groupe, sem salle

Les dépendances 3 et 4 permettent de déduire la dépendance: 5. code_module, groupe, sem jour, heured, salle Remarques: 1. On suppose qu il n y a pas deux cours différents le même jour à la même heure dans la même salle. 2. Il existe une relation (m,n) entre un groupe et un cursus 2 Travail demandé 2.1 Conception des tables On demande d abord de concevoir le schéma, c est à dire de définir les tables en 3NF.Les tables que l on peut générer à partir des fichiers creneaux.csv et edt_49.csv ne contiennent pas de clé primaire. On va donc dériver des tables avec des clés primaires à partir des informations de ces tables et des dépendances fonctionnelles. Une décomposition en 3NF est : module( code_module, libelle) creneau_type (code_module, groupe, duree) cursus ( cursus) % éventuellement on peut ajouter un libellé groupe ( groupe) % éventuellement on peut ajouter un libellé cursus_creneau(cursus, groupe) edt_sem (code_module, groupe, sem,jour, heured, salle) Il faut aussi écrire les scripts SQL suivants : 1. Le script creer_schema.sql pour créer le schéma complet de la base; Suppresion des t a b l e s Drop t a b l e IF EXISTS edt_sem, cursus_groupe, cursus, groupe, creneau_type, module, edt_init, creneau_init CASCADE; Tables de donnees c r e a t e t a b l e creneau_init ( code_module varchar ( 2 0 ), l i b e l l e varchar ( 5 0 ), cursus varchar ( 1 0 ), duree numeric ( 1 ) c r e a t e t a b l e e d t _ i n i t ( module varchar ( 2 0 ), sem numeric ( 2 ), j o u r numeric ( 1 ), heured numeric ( 1 ), s a l l e varchar (10) Table pour l e stockage de EDT c r e a t e t a b l e cursus ( nomcursus varchar ( 10) primary key,

c r e a t e t a b l e groupe ( nomcursus varchar ( 10) primary key, c r e a t e t a b l e cursus_groupe ( l i e n e n t r e cursus et groupe nomcursus varchar ( 10) r e f e r e n c e s cursus, PRIMARY KEY ( nomcursus, groupe ) c r e a t e t a b l e module ( un module e s t d e f i n i par son code code_module varchar (20) primary key, c r e a t e t a b l e creneau_type ( chaque module ( code_module, groupe ) a une durée duree numeric ( 1 ), primary key ( code_module, groupe ) c r e a t e t a b l e edt_sem ( sem numeric ( 2 ) CHECK ( sem >= 1 and sem <= 5 2), j o u r numeric ( 1 ) CHECK ( j o u r >= 1 and j o u r <= 5 ), heured numeric ( 1 ) CHECK ( heured >= 1 and heured <= 8 ), s a l l e varchar ( 1 0 ), primary key ( code_module, groupe, sem ), code_module, groupe, sem > jour, heured, duree unique ( sem, jour, heured, s a l l e ), i l n y a pas 2 cours en meme temps dans l a même s a l l e f o r e i g n key ( code_module, groupe ) r e f e r e n c e s creneau_type 2. Le script initialiser.sql pour alimenter la base avec les données stables indépendantes des semaines init_schema_edt. s q l t a b l e s de donnees \copy creneau_init from creneaux. csv d e l i m i t e r ; csv Tables indépendantes de l a semaine i n s e r t i n t o module s e l e c t d i s t i n c t C. code_module, C. l i b e l l e from creneau_init C; i n s e r t i n t o creneau_type

s e l e c t d i s t i n c t C. code_module, C. groupe, C. duree from creneau_init C; i n s e r t i n t o cursus s e l e c t d i s t i n c t C. cursus from creneau_init C; i n s e r t i n t o groupe s e l e c t d i s t i n c t C. groupe from creneau_init C; i n s e r t i n t o cursus_groupe s e l e c t d i s t i n c t C. cursus, C. groupe from creneau_init C; 3. Le script remplir_49.sql qui permet d alimenter la base avec l emploi du temps de la semaine 49 fill_semaine_edt. s q l Tables de données \copy e d t _ i n i t from edt_49. csv d e l i m i t e r ; csv Table Semaine i n s e r t i n t o edt_sem s e l e c t from e d t _ i n i t ; L utilisation des références devra garantir que les contraintes liées aux dépendances fonctionnelles sont respectées. 2.2 Récupération du contenu d un fichier csv: \copy table from ficher delimiter ; csv (si le delimiteur est un point virgule) 2.3 Création d une table pour l affichage d un EDT Cette table doit contenir les items qu il faut afficher dans l emploi du temps d une semaine donnée d un cursus donné. Pour un même jour, il peut y avoir plusieurs lignes s il y a des cours en parallèle. Pour déterminer, journée par journée, sur quelle ligne placer chacun des modules se déroulant ce jour-là, on pourra utiliser la table SQL suivante : affichage (module, groupe, jour, heure_deb,duree, salle, ligne) qu on remplira par programme. Table pour a f f i c h a g e de EDT d une semaine drop t a b l e IF EXISTS a f f i c h a g e ; c r e a t e t a b l e a f f i c h a g e (

j o u r numeric ( 1 ), heured numeric ( 2 ), duree numeric ( 2 ), l i g n e numeric ( 2 ), s a l l e varchar ( 1 0 ), unique ( code_module, groupe ), primary key ( jour, l i g n e, heured ) A t t r i b u t i o n des d r o i t s ( n e c e s s a i r e s pour l a c c e s via l e s e r v e r r e s i n ) grant s e l e c t, i n s e r t, d e l e t e, update on edt_sem, creneau_type, cursus, cursus_groupe, module, a f f i c h a g e to i n v i t e d ; revoke a l l on edt_sem, creneau_type, cursus, cursus_groupe, module, a f f i c h a g e FROM i n v i t e d ; Pour placer dans cette table les créneaux à afficher, y compris les créneaux vides (avec un champ module égal à NULL), on remplira la colonne "ligne" à l aide d un programme java qui devra effectuer les opérations suivantes: 1. Sélectionner un par un les créneaux à placer (avec une requête SQL dans la table générale des créneaux) en fonction de la semaine et du cursus choisi. 2. Pour chaque créneau à placer, déterminer (là encore avec une requête SQL) s il existe un créneau vide susceptible de l accueillir. S il n en n existe pas, introduire une nouvelle "ligne " d affichage pour le jour concerné, en ajoutant simplement à la table affichage un créneau vide de 8h démarrant en 1 pour le jour concerné, avec une nouvelle ligne. Pour "placer" le créneau dans l emploi du temps, dans le créneau vide d accueil sélectionné, il suffit alors d assigner la ligne correspondante à ce créneau vide, et de remplacer le créneau vide par 0,1 ou 2 nouveaux créneaux vides, selon la configuration. Il faut aussi mettre des modules NULL dans les "trous". 2.4 Remplissage via JDBC de la table d affichage On vous demande d utiliser jdbc pour vous connecter a votre base de données pour remplir la table affichage avec les enseignements de la semaine 49 pour les étudiants de votre cursus. Comme vous ne désirez pas faire apparaître en clair votre mot de passe dans le code java, la connexion se fera sous couvert de l utilisateur invited dont le mot de passe est invited. Vous devez donner à cet utilisateur uniquement les droits dont il a besoin. Vous aurez besoin d un driver postgres. Si vous utilisez le serveur postgres dbms.essi.fr, vous pouvez utiliser postgresql-8.1-407.jdbc2_1.jar (qui se trouve dans http://users.polytech.unice.fr/~rueher/cours/bd/tp4/ D autres drivers sont disponibles à l adresse jdbc.postgresql.org/download.html. La procédure de compilation et de test du programme Java est: javac EdtRemplissage.java java -cp postgresql-8.1-407.jdbc2_1.jar:. EdtRemplissage Voir fichier : EdtRemplissage.java