Licence Physique et Applications
Parcours Ingénierie
3ème année, semestre 6
Correction Contrôle continu n° 1 du 15/3/07
Programmation et bases de données
|
A) définition (simplifiée) de la base de données
Question A1 :
Question A2 :
- la liste des noms et prénoms des vendeurs
SELECT prenom,nom FROM vendeurs;
- la liste des rayons (on pouvait choisir les champs que l'on voulait)
SELECT descr FROM rayons;
- les codes des rayons et notes de compétences du vendeur de code "JLD"
SELECT rayon,note FROM competences WHERE vendeur in('JLD');
- les noms en clair des rayons et notes de compétences du vendeur de code "JLD"
SELECT rayons.descr,competences.note FROM rayons,competences
WHERE competences.vendeur in('JLD') AND competences.rayon=rayons.code;
- les noms en clair des rayons et notes de compétences du vendeur "Jean Luc Dupont"
SELECT rayons.descr,competences.note FROM rayons,vendeurs,competences
WHERE vendeurs.nom in ('Dupont') AND vendeurs.prenom IN ('Jean Luc')
AND vendeurs.code=competences.vendeur AND rayons.code=competences.rayon;
- la liste des rayons avec pour chacun d'eux le nombre de vendeurs y ayant une compétence non nulle (on pouvait afficher le code rayon pour simplifier)
SELECT rayons.descr, COUNT(competences.vendeur) as 'nb vendeurs'
FROM rayons, competences WHERE competences.rayon=rayons.code GROUP BY descr;
Question A3 :
- On pourrait prévoir, pour chaque vendeur (dans la table vendeurs), la liste de ses notes pour tous les rayons. On n'aurait plus besoin de la table compétences. Ca ne peut être envisagé que s'il n'y a pas trop de rayons.
- Si chaque vendeur a un nb limité de rayons où il est compétent (par ex 3 maxi), on met dans la table vendeurs les 3 codes de rayons et les 3 notes Si un seul peut être compétent dans un grand nombre de rayons (le chef ?) il faut alors en prévoir autant pour tous
- Pour chaque rayon on donnerait le code d'un vendeur compétent. Puis une table servirait à créer une "liste chaînée", c'est à dire pour chaque vendeur on donne son suivant dans la liste (il y aurait alors 3 champs : code du vendeur "père", code du vendeur "fils", code du rayon). C'est quand même plus compliqué que la solution proposée
B) Page Web
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Hectothlon.fr</TITLE>
<META HTTP-EQUIV="CONTENT-TYPE" content="text/html; charset=utf-8">
</HEAD>
<BODY>
<div style="background-color:#b0bfff">
<img align="left" src="volant.jpg" height="120" width="180" />
<H1 align="right"><B><I>HECTOTHLON</I></B></H1>
<P align="right"><I>Chez nous c'est dix fois mieux !</I></P>
<br clear="all" />
</div>
<H2 align="center">vendeurs présents</h2>
<TABLE width="80%" align="center" border="1" cellpadding="10">
<TR style="font-size:120%">
<Th><i>vendeur</i></Th><Th><i>rayon</i></Th><Th><i>note</I></Th>
</tr>
<TR><TD>Jean Luc</TD><TD>cyclisme</TD><TD align="center">3</TD></TR>
<TR><TD>Jean Luc</TD><TD>course à pied</TD><TD align="center">2</TD></TR>
<TR><TD>Julie</TD><TD>équitation</TD><TD align="center">4</TD></TR>
</TABLE>
<P align="right"><A HREF="agenda.htm">aller à l'agenda</A></P>
</BODY>
</HTML>
C) Annexe :
pour tester les requêtes SQL, voici ma base de test :
- create table vendeurs (code char(3),prenom varchar(20),nom varchar(20), primary key(code));
- create table rayons (code char(3),descr varchar(20),resp char(3), primary key(code));
- create table competences (vendeur char(3),rayon char(3),note integer );
- insert into vendeurs values ('pat','patrick','trau'), ('jld','jean luc','dupont'), ('gwb','georges','bush');
- insert into rayons values ('cyc','cyclisme','pat'), ('run','course à pieds','pat'), ('ski','ski neige','jld'), ('foo','football','gwb');
- insert into competences values ('pat','cyc',4),('pat','run',3),('pat','ski',2), ('jld','cyc',2),('jld','ski',4),('gwb','ski',1);
Patrick TRAU, IPST ULP, mars 07.