Fondamenti delle basi di dati
Corso MySQL a cura del prof. Pietro De Paolis
Soluzione traccia seconda prova scritta
Esame di stato 2005/06 (traccia anno 2005-06.pdf)
Indirizzo: Informatica
Tema di: Informatica generale e applicazioni tecnico-scientifiche
Versione completa
Di questa pagina esiste una versione studente abbreviata.
1 - Lo schema concettuale e lo schema logico del database;
2 - La definizione delle relazioni in linguaggio SQL.
1 - Tabella utenti
codiceutente | cognome | nome | scuola | comune | nomeutente | password | gruppo | |
01 | Bianchi | Gerardo | ITIS | Milano | sss@www.it | mionickname | SSS1111 | studente |
02 | Rossi | Antonio | classico | Roma | sss@www.it | mionickname | ww33eee | docente |
980 | Merlino | Giuseppe | scientifico | Venezia | sss@www.it | mionickname | www111ww | studente |
Il nostro comando completo in MySQL sarà:
CREATE TABLE utenti (codiceutente INT(7) not null AUTO_INCREMENT, cognome CHAR(50), nome CHAR(50), scuola CHAR(50), comune CHAR(50), email CHAR(50), nomeutente CHAR (50), password CHAR(50), gruppo CHAR(50), PRIMARY KEY(codiceutente) )
2 - Tabella upload:
codiceinvio | titolo | tipo | descrizione | data | codiceutente |
01 | La riforma | testo | descrizione riforma | 20/12/2005 | 051 |
02 | protfolio | testo | descrizione portfolio | 15/10/2005 | 125 |
03 | valutazione | audio | descrizione valutazione | 08/09/2005 | 525 |
Il nostro comando completo in MySQL sarà:
CREATE TABLE upload (codiceinvio INT(7) not null AUTO_INCREMENT, titolo CHAR(50), tipo CHAR(50), descrizione TEXT, data CHAR(10), codiceutente CHAR(7), PRIMARY KEY(codiceinvio) )
3 - Tabella moduliesistenti:
codicemodulo | titolo | descrizione | tipo |
01 | La riforma | descrizione riforma | docente |
02 | protfolio | descrizione portfolio | docente |
03 | valutazione | descrizione valutazione | studente |
Il nostro comando completo in MySQL sarà:
CREATE TABLE moduliesistenti (codicemodulo INT(7) not null AUTO_INCREMENT, titolo CHAR(50), descrizione TEXT, tipo CHAR(20), PRIMARY KEY(codicemodulo) )
3 - Tabella moduliscelti:
numeroscelti | codicemodulo | codiceutente |
01 | 05 | 500 |
02 | 02 | 325 |
03 | 03 | 750 |
04 | 02 | 323 |
05 | 03 | 755 |
Il nostro comando completo in MySQL sarà:
CREATE TABLE moduliscelti (numeroscelti INT(7) not null AUTO_INCREMENT, codicemodulo INT(7), codiceutente INT(7), PRIMARY KEY(numeroscelti) )
Le quattro tabelle possono essere create contemporaneamente con il seguente programma creotabelle.php il cui listato è:
<script
language="php">
$nomehost = "miohost"; $utente = "mionome"; $parola = "miapasswors"; $nome = "nomedeldatabase"; $connessione=mysql_connect($nomehost,$utente,$parola); $selezione = mysql_select_db($nome, $connessione); $richiesta = "CREATE TABLE utenti (codiceutente INT(7) not null AUTO_INCREMENT, cognome CHAR(50), nome CHAR(50), scuola CHAR(50), comune CHAR(50), email CHAR(50), nomeutente CHAR (50), password CHAR(50), gruppo CHAR(50), PRIMARY KEY(codiceutente) ) "; $risultato =mysql_query($richiesta); if($risultato) print("Tabella utenti creata correttamente"); else print ("<br>La tabella utenti esiste già; essa va creata una sola volta. <br>La tabella utenti può essere utilizzata per la memorizzazione e la ricerca dei dati."); $richiesta = "CREATE TABLE upload (codiceinvio INT(7) not null AUTO_INCREMENT, titolo CHAR(50), tipo CHAR(50), descrizione TEXT, data CHAR(10), codiceutente CHAR(7), PRIMARY KEY(codiceinvio) ) "; $risultato =mysql_query($richiesta); if($risultato) print("Tabella upload creata correttamente"); else print ("<br>La tabella upload esiste già; essa va creata una sola volta. <br>La tabella upload può essere utilizzata per la memorizzazione e la ricerca dei dati."); $richiesta = "CREATE TABLE moduliesistenti (codicemodulo INT(7) not null AUTO_INCREMENT, titolo CHAR(50), descrizione TEXT, tipo CHAR(20), PRIMARY KEY(codicemodulo) ) "; $risultato =mysql_query($richiesta); if($risultato) print("Tabella moduliesistenti creata correttamente"); else print ("<br>La tabella moduliesistenti esiste già; essa va creata una sola volta. <br>La tabella moduliesistenti può essere utilizzata per la memorizzazione e la ricerca dei dati."); $richiesta = "CREATE TABLE moduliscelti (numeroscelti INT(7) not null AUTO_INCREMENT, codicemodulo INT(7), codiceutente INT(7), PRIMARY KEY(numeroscelti) ) "; $risultato =mysql_query($richiesta); if($risultato) print("Tabella moduliscelti creata correttamente"); else print ("<br>La tabella moduliscelti esiste già; essa va creata una sola volta. <br>La tabella moduliscelti può essere utilizzata per la memorizzazione e la ricerca dei dati.");
mysql_close($connessione); </script> |
listato di creotabelle.php |
- implementi almeno una delle seguenti query:
n. 1: I docenti che hanno un account presso la community con la rispettiva collocazione geografica ed i moduli formativi scelti
Il nostro comando completo in MySQL sarà:
SELECT utenti.cognome, utenti.nome, utenti.scuola, utenti.comune, moduliesistenti.titolo, moduliesistenti.descrizione FROM utenti INNER JOIN moduliscelti INNER JOIN moduliesistenti ON utenti.codiceutente=moduliscelti.codiceutente AND moduliscelti.codicemodulo=moduliesistenti.codicemodulo AND utenti.gruppo='docente'
n. 2: I dati relativi agli studenti e ai documenti che essi hanno inviato in remoto sul portale della community mediante upload
Il nostro comando completo in MySQL sarà:
SELECT utenti.cognome, utenti.nome utenti.scuola, utenti.comune, upload.titolo, upload.tipo, upload.descrizione, upload.data FROM upload INNER JOIN utenti ON upload.codiceutente=utenti.codiceutente WHERE utenti.nomeutente='$nomeutente'
dove $nomeutente sarà la variabile php che sarà passata dall'interfaccia di ricerca.
- scriva, in un linguaggio lato server, il codice di almeno una delle seguenti pagine del portale:
Un programma per inviare la richiesta alla base di dati può essere la seguente:
interfaccia di cercodocenti.php |
il cui listato è il seguente:
<script language="JavaScript">
<!-- // controllo che ci siano le due scelte function controllo1(){ // controllo che ci sia il cognome e il nome sceltacognome=document.modulo1.nomeutente.value; sceltanome=document.modulo1.password.value; if((sceltacognome=="")||(sceltanome=="")) { alert("Inserire Nome utente e password!"); return false; }; return true; } // --> </script> <form action="cercodatidocenti.php" name="modulo1" method="POST" onSubmit="return controllo1();">
<div align="left"> <table border="1" cellpadding="0" width="100%"> <tr> <td width="35%"><font size="4" face="Verdana" color="#FF0000">Nome utente</font></td> <td width="65%" align="center"> <p align="center"> <font face="Verdana" size="4"> <font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"> <input type="text" name="nomeutente" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../../immagini/sfondo3.gif')"> </span> </font> </font> </p> </td> </tr> <tr> <td width="35%"><font size="4" face="Verdana" color="#FF0000">Password</font></td> <td width="65%" align="center"> <p align="center"><font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="password" name="password" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../../immagini/sfondo3.gif')"></span> </font> </td> </tr><tr> <td width="134%" colspan="2"> <p align="center"><input type="submit" value="CERCA DOCENTI E MODULI" name="cerco" style="font-family: Verdana; font-size: 14 pt"></td> </tr> </table> </div> </form> |
listato di cercodocenti.php |
esso richiama un programma in php cercodatidocenti.php che provvede alla esecuzione della richiesta, il cui listato è:
<script
language="php">
if (($nomeutente!="amministratore")||($password!="amministratore")) return; print("Cerco con : $nomeutente $password <br>"); $nomehost = "miohost"; $utente = "mionome"; $parola = "miapasswors"; $nome = "nomedeldatabase"; $connessione=mysql_connect($nomehost,$utente,$parola); $selezione = mysql_select_db($nome, $connessione); $richiesta="SELECT utenti.cognome, utenti.nome, utenti.scuola, utenti.comune, moduliesistenti.titolo, moduliesistenti.descrizione FROM utenti INNER JOIN moduliscelti INNER JOIN moduliesistenti ON utenti.codiceutente=moduliscelti.codiceutente AND moduliscelti.codicemodulo=moduliesistenti.codicemodulo AND utenti.gruppo='docente' "; $risultato =mysql_query($richiesta); $lunghezza = mysql_num_rows($risultato); print("Le righe trovate sono: $lunghezza .<br>"); for ($t=0; $t<$lunghezza; $t++) { $riga=mysql_fetch_array($risultato); print("$riga[0] $riga[1] $riga[2] $riga[3] $riga[4] $riga[5] $riga[6] $riga[7] $riga[8] $riga[9]$riga[10]<br>"); }; mysql_close($connessione); </script> |
listato di cercodatidocenti.php |
Un programma per inviare la richiesta alla base di dati può essere la seguente:
interfaccia di cercostudenti.php |
il cui listato è il seguente:
<script language="JavaScript">
<!-- // controllo che ci siano le due scelte function controllo1(){ // controllo che ci sia il cognome e il nome sceltacognome=document.modulo1.nomeutente.value; sceltanome=document.modulo1.password.value; if((sceltacognome=="")||(sceltanome=="")) { alert("Inserire Nome utente e password!"); return false; }; return true; } // --> </script> <form action="cercodatistudenti.php" name="modulo1" method="POST" onSubmit="return controllo1();">
<div align="left"> <table border="1" cellpadding="0" width="100%"> <tr> <td width="35%"><font size="4" face="Verdana" color="#FF0000">Nome utente</font></td> <td width="65%" align="center"> <p align="center"> <font face="Verdana" size="4"> <font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"> <input type="text" name="nomeutente" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../../immagini/sfondo3.gif')"> </span> </font> </font> </p> </td> </tr> <tr> <td width="35%"><font size="4" face="Verdana" color="#FF0000">Password</font></td> <td width="65%" align="center"> <p align="center"><font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="password" name="password" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../../immagini/sfondo3.gif')"></span> </font> </td> </tr><tr> <td width="134%" colspan="2"> <p align="center"><input type="submit" value="CERCA DOCUMENTI STUDENTE" name="cerco" style="font-family: Verdana; font-size: 14 pt"></td> </tr> </table> </div> </form> |
listato di cercostudenti.php |
esso richiama un programma in php cercodatistudenti.php che provvede alla esecuzione della richiesta, il cui listato è:
<script
language="php">
if (($nomeutente!="studente")||($password!="studente")) return; print("Cerco con : $nomeutente $password <br>"); $nomehost = "miohost"; $utente = "mionome"; $parola = "miapasswors"; $nome = "nomedeldatabase"; $connessione=mysql_connect($nomehost,$utente,$parola); $selezione = mysql_select_db($nome, $connessione); $richiesta="SELECT utenti.cognome, utenti.nome, utenti.scuola, utenti.comune, upload.titolo, upload.tipo, upload.descrizione, upload.data FROM upload INNER JOIN utenti ON upload.codiceutente=utenti.codiceutente WHERE utenti.nomeutente='$nomeutente' "; $risultato =mysql_query($richiesta); $lunghezza = mysql_num_rows($risultato); print("Le righe trovate sono: $lunghezza .<br>"); for ($t=0; $t<$lunghezza; $t++) { $riga=mysql_fetch_array($risultato); print("$riga[0] $riga[1] $riga[2] $riga[3] $riga[4] $riga[5] $riga[6] $riga[7] $riga[8] <br>"); }; mysql_close($connessione); </script> |
listato di cercodatistudenti.php |
Un modulo per la registrazione di un nuovo utente non amministratore, per evidenti ragioni, può essere il seguente:
il cui listato è:
<script language="JavaScript">
<!-- // controllo che ci siano le due scelte function controllo1(){ // controllo che ci sia il cognome e il nome sceltacognome=document.modulo1.cognome.value; sceltanome=document.modulo1.nome.value; if((sceltacognome=="")||(sceltanome=="")) { alert("Inserire Cognome e Nome!"); return false; }; return true; } // --> </script> <form action="salvoutente.php" name="modulo1" method="POST" onSubmit="return controllo1();">
<div align="left"> <table border="1" cellpadding="0" width="100%"> <tr> <td width="35%"><font size="4" face="Verdana" color="#FF0000">Cognome</font></td> <td width="65%" align="center"> <p align="center"> <font face="Verdana" size="4"> <font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"> <input type="text" name="cognome" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../immagini/sfondo3.gif')"> </span> </font> </font> </p> </td> </tr> <tr> <td width="35%"><font size="4" face="Verdana" color="#FF0000">Nome</font></td> <td width="65%" align="center"> <p align="center"><font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="text" name="nome" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../immagini/sfondo3.gif')"></span> </font> </td> </tr> <tr> <td width="35%"><font size="4" face="Verdana" color="#FF0000">Scuola</font></td> <td width="%" align="center"> <font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="text" name="scuola" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../immagini/sfondo3.gif')"></span> </font> </td> </tr> <tr> <td width="35%"><font size="4" face="Verdana" color="#FF0000">Comune dellascuola</font></td> <td width="%" align="center"> <font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="text" name="comune" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../immagini/sfondo3.gif')"></span> </font> </td> </tr> <tr> <td width="35%"><font size="4" face="Verdana" color="#FF0000">e-mail</font></td> <td width="%" align="center"> <font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="text" name="email" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../immagini/sfondo3.gif')"></span> </font> </td> </tr> <tr> <td width="35%"><font size="4" face="Verdana" color="#FF0000">Nickname</font></td> <td width="%" align="center"> <font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="text" name="nomeutente" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../immagini/sfondo3.gif')"></span> </font> </td> </tr> <tr> <td width="35%"><font size="4" face="Verdana" color="#FF0000">Password</font></td> <td width="%" align="center"> <font color="#0000FF"><span style="mso-bidi-font-size: 12.0pt"><input type="password" name="password" size="22" style="color: #FF0000; font-family: Verdana; font-size: 14 pt; background-image: url('../../immagini/sfondo3.gif')"></span> </font> </td> </tr> <tr> <td width="35%"><font size="4" face="Verdana" color="#FF0000">Gruppo </font></td> <td width="%" align="center"> <select size="1" name="gruppo" alt="provo"> <option value="">GRUPPO</option> <option value="studente">studente</option> <option value="docente">docente</option></select> </td> </tr> <tr> <td width="134%" colspan="2"> <p align="center"><input type="submit" value="SALVA I DATI" name="salvo" style="font-family: Verdana; font-size: 14 pt"></td> </tr> </table> </div> </form> |
listato di inseriscodatiutenti.php |
i dati del modulo verranno passati al programma php: salvoutenti.php che salva i dati del modulo sulla base di dati esistente sul server; il cui listato del programma può essere:
<?php if($cognome=="") return; print("Cerco di inserire i seguenti dati: $cognome ; $nome; $scuola; $comune; $email; $nomeutente $password; $gruppo<br>"); print ("Programma per inserire una riga nella nella tabella corsi di recupero"); $nomehost = "miohost"; $utente = "mionome"; $parola = "miapasswors"; $nome = "nomedeldatabase"; $connessione=mysql_connect($nomehost,$utente,$parola); $selezione = mysql_select_db($nome, $connessione);
$richiesta="INSERT INTO utenti (cognome, nome, scuola, comune, email, nomeutente, password, gruppo) VALUES ('$cognome', '$nome', '$scuola', '$comune', 'email', '$nomeutente', '$password', '$gruppo')"; $risultato =mysql_query($richiesta); if($risultato) print("Dati inseriti correttamente"); else print ("Dati non inseriti");
mysql_close($connessione); ?>
|
listato di salvoutenti.php |
L'intera gestione della base di dati può essere gestita dalla seguente pagina:
Gestione di una banca dati scolastica
2006
Corso di programmazione in MYSQL
Dizionario mysql e relativo php
Corso di programmazione in PHP
prof. Pietro De Paolis
Indice di tutte le pagine del sito