retour au sujet

correction cc1 UE62 mars 2006

Question 1 : structure d'une base et SQL

CREATE DATABASE gestmat;
CONNECT gestmat;

/* question 1a */
CREATE TABLE ordi (
	identifiant INTEGER unique,
	id_salle INTEGER,
	IP CHAR(15),
	MAC CHAR(17),
	achat DATE,
	maintenance DATE,
	PRIMARY KEY(identifiant)
   );
CREATE TABLE salle (
	identifiant INTEGER unique,
	nom CHAR(6) unique,
	descr VARCHAR(40),
	id_bat INTEGER,
	PRIMARY KEY(identifiant)
   );
CREATE TABLE batiment (
	identifiant INTEGER unique,
	nom CHAR(6) uniqudescre,
	descr VARCHAR(40),
	PRIMARY KEY(identifiant)
   );
/* pas demandé mais nécessaire pour tester*/
CREATE TABLE SE (
	identifiant INTEGER unique,
	nom CHAR(8),
	details VARCHAR(20),
	version VARCHAR(6),
	PRIMARY KEY(identifiant)
   );
CREATE TABLE sysPC (
	id_ordi INTEGER,
	id_SE INTEGER
   );
CREATE TABLE maintenance (
	id_ordi INTEGER,
	id_SE INTEGER,
	descr VARCHAR(255),
	jour DATE,
	reparation VARCHAR(255)
   );
/* valeurs pour tester */
INSERT INTO ordi values 
  (1,1,'130.79.50.1','ff.ab.32.a0.b0.c1','2005-1-1','2006-1-1'),
  (2,1,'130.79.50.2','ff.ab.32.a0.b0.c2','2005-1-1','2006-1-1'),
  (3,2,'130.79.50.3','ff.ab.32.a0.b0.c3','2005-1-1','2006-1-1'),
  (4,2,'130.79.50.4','ff.ab.32.a0.b0.c4','2005-1-1','2006-1-1'),
  (5,3,'130.79.50.5','ff.ab.32.a0.b0.c5','2005-1-1','2006-1-1'),
  (6,3,'130.79.50.6','ff.ab.32.a0.b0.c6','2005-1-1','2006-1-1'),
  (7,3,'130.79.50.7','ff.ab.32.a0.b0.c7','2005-1-1','2006-1-1') ;
INSERT INTO salle values  
  (1,'207','salle acces surveille',1),
  (2,'212','TP info',1),
  (3,'prj','salle projets',2) ;
INSERT INTO batiment values  
  (1,'IPST','15 rue du Mal Lefebvre Meinau'),
  (2,'Hall','Pole API Illkirch') ;
INSERT INTO SE values  
  (1,'Win98','W98 seconde edition','SE'),
  (2,'WinXP','Windows XP PRO','SP2'),
  (3,'linux','Suse Linux 9.2','9.2');
INSERT INTO sysPC values  
  (1,1),(1,3),(2,3),(3,2),(3,3),(4,2),(5,2),(6,1),(6,3),(7,3);
INSERT INTO maintenance values  
  (1,1,'Mise àagrave; jour','2006-1-1','ras'),
  (3,2,'pb explorer','2006-2-1','reinstallation'),
  (3,2,'pb explorer','2006-2-2','reinstallation'),
  (3,2,'pb explorer','2006-2-3','installation Firefox'),
  (1,1,'Mise àagrave; jour','2006-3-1','ras'),
  (7,NULL,'disque dur HS','2006-2-2','changement') ;

/* question 1b */
SELECT SE.nom,SE.version,SE.details FROM ordi,sysPC,SE 
  WHERE ordi.IP='130.79.50.3'
    AND ordi.identifiant=sysPC.id_ordi
    AND sysPC.id_SE=SE.identifiant;

/* question 1c */
SELECT COUNT(*) AS nb_pannes FROM maintenance WHERE id_ordi='3'
   AND jour BETWEEN '2006-2-2' AND '2006-12-2';
  
  
  
  

Question 2 : client - serveur

2a) Sur A je dois avoir un serveur SQL (par exemple mysql). Sur B j'aurais un serveur Web (par exemple Apache) qui "servira" des pages qu'il aura faites en fonction des données qu'il va puiser sur A. Donc sur B je dois aussi avoir un client SQL (par exemple une bibliothèque mysql pour PHP). Sur C, je ne regarde que des pages web. Inutile de comprendre le SQL, c'est B qui s'en charge. Il ne me faut donc qu'un client HTML (par exemple Firefox). Si A=C, c'est à dire si je veux regarder les pages web depuis A, il faut que j'y installe un navigateur (client Web), qui posera ses questions à B, qui lui-même en posera à A. Mais on passera encore par B (sauf si on accède directement au SGBD sans mise en page HTML).

2b) A et B ne changent pas par rapport à 2a. Sur D (qui a le doit d'accéder à A et B, il faut donc un client HTML, comme expliqué en 2a. En D il faut un serveur qui code ce qu'il aimerait afficher sur son écran (et le comprime si on ne veut pas saturer la bande passante) pour l'envoyer à C. C n'a plus besoin d'un client Web, mais d'un client qui décode ce que lui envoie D (par exemple accés bureau à distance, proposé par Windows). Si D=B j'aimerais bien savoir pourquoi on a interdit l'accès extérieur au serveur Web et installé au même endroit un serveur d'accès à distance qui n'a aucune raison d'être plus sécurisé.

2c) A dispose d'un serveur SQL, B d'un serveur Web. S'il y a beaucoup (des milliers) de postes C (clients web), qui tous ont des calculs à faire, il semblerait logique que l'on reporte les calculs côté client (sur chaque C, donc côté client, par exemple en javascript). Mais comme on parle de calculs statistiques, c'est qu'il faut disposer de toutes les données, qui si elles sont nombreuses (sinon ce ne sont plus de vraies stats) devront être transférées sur tous les clients et donc peut être fatiguer encore plus B (et saturer sa connexion). Je propose donc plutôt de faire les calculs côté serveur (sur B), il cherchera les données de A comme il veut (puisqu'il possède le client SQL), fera les calculs et n'aura à transmettre que le résultat. Il faudra quand même qu'il soit puissant pour effectuer tous les calculs demandés simultanément par tous les clients.

Question 3 : HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-15">
	<TITLE>Sujet Programmation et bases de donnees</TITLE>
	<STYLE>
		P { text-align: justify }
	</STYLE>
</HEAD>
<BODY>
<IMG SRC="/img/logo-ulp.gif" NAME="logo ULP" WIDTH=114 HEIGHT=64 BORDER=0 align="left">
<TABLE align="center" border=1>
 <TR><TD>
  <H1 align="center">Licence Physique et Applications<br>
     Parcours Ing&eacute;nierie<br>
     3&egrave;me ann&eacute;e, semestre 6</H1>
  <H1 ALIGN="CENTER">Contr&ocirc;le continu n&deg; 1 du 17/3/06<BR>
     Programmation et bases de donn&eacute;es</H1>
 </TD></TR>
</TABLE>

<P><B>Dur&eacute;e :</B> 1h30, ... etc ... commen&ccedil;ant par JU) </P>

<H2>1) d&eacute;finition d'une base de donn&eacute;es</H2>

<P>On d&eacute;sire g&eacute;rer le parc ... etc ... derni&egrave;re maintenance.</P>

<P><FONT size="+2">1a)</FONT> faites un sch&eacute;ma  ... etc ...  d'exploitation. </P>

... Idem suite du 1) ...

<H2>2) architecture client - serveur</h2>

... idem jusqu'à la fin ...

</BODY>
</HTML>