Fondamenti delle basi di dati

Corso MySQL a cura del prof. Pietro De Paolis

Soluzione traccia seconda prova scritta

Esame di stato 2006/07 (traccia anno 2006-07.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 reparti

codicereparto architettura arte classici cucina diritto economia fantascienza fumetti
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 reparti (codicereparto INT(7) not null AUTO_INCREMENT, architettura CHAR(50), arte CHAR(50), classici CHAR(50), cucina CHAR(50), diritto CHAR(50), economia CHAR (50), fantascienza CHAR(50), fumetti CHAR(50),  PRIMARY KEY(codicereparto) ) 

2 - Tabella reparto:

codiceinvio nonperdere piuvenduti ultimi offerte resi 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 reparto (codiceinvio INT(7) not null AUTO_INCREMENT, nonperdere CHAR(50), piuvenduti CHAR(50), ultimi CHAR(50), offerte CHAR(50), resi CHAR(50), codiceutente CHAR(7),  PRIMARY KEY(codiceinvio) ) 

3 - Tabella libri:

codicelibro reparto tipolibro titolo autore prezzo sconto dati anno editore collana immagine data
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 libri (codicelibro INT(7) not null AUTO_INCREMENT, reparto CHAR(50),  tipolibro CHAR(50), titolo CHAR(50),  autore CHAR(50), prezzo CHAR(50), sconto CHAR(50),  dati CHAR(50), anno CHAR(50), editore CHAR(50),  collana CHAR(50), immagine CHAR(50),  data CHAR(50),   PRIMARY KEY(codicelibro) ) 

4 - Tabella utenti:

codiceutente cgnome indirizzo codice citta nazione telefono fax email password numerocarta tipocarta data
tipo La riforma descrizione riforma docente                  
02 protfolio descrizione portfolio docente                  
03 valutazione descrizione valutazione studente                  

Il nostro comando completo in MySQL sarà:

CREATE TABLE utenti (codiceutente INT(7) not null AUTO_INCREMENT, cognome CHAR(50),  indirizzo CHAR(50), codice CHAR(50), citta CHAR(50),  nazione CHAR(50), telefono CHAR(50), fax CHAR(50),  email CHAR(50), password CHAR(50),  numerocarta CHAR(50),  tipocarta CHAR(50),  data CHAR(50),  PRIMARY KEY(codiceutente) ) 

 

5 - Tabella ordini:

numeroordine data codicelibro quantita stato evasione
01 05 500      
02 02 325      
03 03 750      
04 02 323      
05 03 755      

Il nostro comando completo in MySQL sarà:

CREATE TABLE ordini (numeroordine INT(7) not null AUTO_INCREMENT, data INT(7), codicelibro INT(7),  quantita INT(7), stato CHAR(50),  evasione CHAR(50), PRIMARY KEY(numeroordine) ) 

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 reparti (codicereparto INT(7) not null AUTO_INCREMENT, architettura CHAR(50), arte CHAR(50), classici CHAR(50), cucina CHAR(50), diritto CHAR(50), economia CHAR (50), fantascienza CHAR(50), fumetti CHAR(50), PRIMARY KEY(codicereparto) )  ";

$risultato =mysql_query($richiesta);

if($risultato)

print("Tabella reparti creata correttamente");

else

print ("<br>La tabella reparti esiste già; essa va creata una sola volta. <br>La tabella reparti può essere utilizzata per la memorizzazione e la ricerca dei dati.");

$richiesta = "CREATE TABLE reparto (codiceinvio INT(7) not null AUTO_INCREMENT, nonperdere CHAR(50), piuvenduti CHAR(50), ultimi CHAR(50), offerte CHAR(50), resi CHAR(50), codiceutente CHAR(7), PRIMARY KEY(codiceinvio) )   ";

$risultato =mysql_query($richiesta);

if($risultato)

print("Tabella reparto creata correttamente");

else

print ("<br>La tabella reparto esiste già; essa va creata una sola volta. <br>La tabella reparto può essere utilizzata per la memorizzazione e la ricerca dei dati.");

$richiesta = "CREATE TABLE libri (codicelibro INT(7) not null AUTO_INCREMENT, reparto CHAR(50), tipolibro CHAR(50), titolo CHAR(50), autore CHAR(50), prezzo CHAR(50), sconto CHAR(50), dati CHAR(50), anno CHAR(50), editore CHAR(50), collana CHAR(50), immagine CHAR(50), data CHAR(50), PRIMARY KEY(codicelibro) )   ";

$risultato =mysql_query($richiesta);

if($risultato)

print("Tabella libri creata correttamente");

else

print ("<br>La tabella libri esiste già; essa va creata una sola volta. <br>La tabella libri può essere utilizzata per la memorizzazione e la ricerca dei dati.");

$richiesta = "CREATE TABLE utenti (codiceutente INT(7) not null AUTO_INCREMENT, cognome CHAR(50), indirizzo CHAR(50), codice CHAR(50), citta CHAR(50), nazione CHAR(50), telefono CHAR(50), fax CHAR(50), email CHAR(50), password CHAR(50), numerocarta CHAR(50), tipocarta CHAR(50), data 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 ordini (numeroordine INT(7) not null AUTO_INCREMENT, data INT(7), codicelibro INT(7), quantita INT(7), stato CHAR(50), evasione CHAR(50), PRIMARY KEY(numeroordine) )    ";

$risultato =mysql_query($richiesta);

if($risultato)

print("Tabella ordini creata correttamente");

else

print ("<br>La tabella ordini esiste già; essa va creata una sola volta. <br>La tabella ordini può essere utilizzata per la memorizzazione e la ricerca dei dati.");

 

mysql_close($connessione);

</script>

listato di creotabelle.php

- implementi le seguenti query:

n. 1: Ricerca per reparto: scelto un reparto, il numero di libri da non perdere e il numero di libri "I più venduti" con i relativi dettagli.

Il nostro comando completo in MySQL sarà:

SELECT libri.reparto, libri.tipolibro, libri.autore , libri.titolo, libri.prezzo FROM libri WHERE libri.reparto='$reparto' AND (libri.tipolibro='Da non perdere' OR libri.tipolibro='I più venduti')

n. 2: Ordini: gli ordini in corso, con dettagli, di un dato utente

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:

Nome utente

Password

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:

Nome utente

Password

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:

Cognome

Nome

Scuola
Comune della scuola
e-mail
Nickname
Password
Gruppo 

 

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 della

scuola</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&nbsp;</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 libreria

 

2006

Corso di programmazione in MYSQL

Dizionario mysql e relativo php

Corso di programmazione in PHP

Dizionario php

prof. Pietro De Paolis

Indice Scuola Elettrica - generico


Scuola Elettrica



 

Altre applicazioni


Mappa per tipo di scuola

 

Indice di tutte le pagine del sito


Guida per navigare


Richiesta informazioni


Scuola Elettrica