Molte volte, quando si naviga su Internet in siti che gestiscono la pagina prelevando informazioni da database, possiamo osservare una certa pesantezza di esecuzione della pagina. Ora che, grazie a questo corso, si ha imparato come sfruttare le loro potenzialità, dobbiamo evitare di creare pagine di questo livello che generano problemi agli utenti finali in fase di navigazione.
E' inutile pensare che siano tantissime le tecniche necessarie per sfruttare al meglio i database. Infatti le regole da rispettare sono poche ma necessarie per ridurre al massimo i tempi di caricamento. Nella prossima parte della lezione, le illustrerò con relativi esempi. Le tecniche vanno eseguite nell'ordine proposto. Prima di spiegarle, vi voglio dare un consiglio di lavorazione sul database: il database è meglio progettarlo su carta con la cara amica matita e gomma e dopo aver fatto qualche test di funzionamento su carta e corretto eventuali errori, procedere alle realizzazione pratica su pc.
TECNICA 1 : STUDIO E NORMALIZZAZIONE DEL DATABASE
Ogni volta che desideriamo sfruttare la potenzialità dei database, dobbiamo prima di tutto studiare la/le macrocategorie di dati che possiamo immettere (generalmente ogni macrocategoria avrà una o più tabelle a se). All'interno di ogni macrocategoria dobbiamo individuare le singole voci che descrivono ciò che desideriamo memorizzare all'interno di quella specifica tabella (in parole povere i nomi dei campi). Dopo aver completato la prima rielaborazione del database, bisogna normalizzarlo per renderlo più efficiente all'uso finale. Esistono 9 forme di normalizzazione di un database, ma è sufficiente fermarsi alla 3 per avere un buon database.
- Prima forma di normalizzazione: Una tabella di un database si dice "tabella in prima forma normale" se e solo se le informazioni presenti in due colonne sono identiche e quindi abbiamo dati ripetuti. Per portare il database alla prima forma normale, basta eliminare una delle due colonne doppie. Ad esempio, proviamo a pensare cosa succederebbe in termini sia di tempo e di spazio se in una tabella comparirebbero due campi con nome diversi ma contenenti il nome ed il cognome della persona in questione. Lo spazio sprecato sarebbe molto di più e anche le ricerche (avendo più dati da consultare) si allungherebbero come tempi.
- Seconda forma di normalizzazione: Una tabella
di un database si dice "tabella in seconda forma normale" se e solo se non vi è presente al suo interno una colonna che contiene dati che possono derivare da altre colonne presenti all'interno della stessa tabella. Prendiamo come esempio un catalogo prodotti di fine 2001. Ormai è inutile inserire all'interno della tabella una colonna contenente i prezzi in lire ed una coi prezzi in euro. Infatti per ottenere un dato dall'altro basta solamente dividere (se dalle lire si vuol passare all'euro) o moltiplicare (se dall'euro si vuol passare alle lire) per il valore 1936.27 . Se in un database troviamo entrambi le colonne dei prezzi, questa tabella non si può ritenere di seconda forma normale. Se invece è presente solo un prezzo e l'altro lo ricaviamo tramite un semplice calcolo, questa tabella è considerata uniforme alla seconda forma di normalizzazione. - Terza forma di normalizzazione: Un database si dice di terza forma normale se e solo se non vi sono dati duplicati all'interno dello stesso. Questo tipo di normalizzazione dobbiamo vederlo come l'ampliamento della prima. Mentre nella prima non vi devono essere dati ripetuti nella stessa tabella, qui la ripetizione dei dati non deve avvenire nelle colonne delle tabelle del database. Basta infatti una sola colonna con determinati valori e poi ci si relaziona a quella.
TECNICA 2 : UTILIZZO CORRETTO DI SQL
Per estrarre dati durante la creazione di un recordset (visto nelle lezioni precedenti) si utilizza l'istruzione sql chiamata select. La relativa sintassi per l'uso corretto è la seguente:
SELECT <nome_campo/i> FROM <nome_tabella>
[ WHERE <condizione> ]
Traduciamo ora in lingua italiana la sintassi appena vista: seleziona <nome_campo/i> dalla tabella <nome_tabella>. Esiste poi una parte opzionale (posta tra parentesi quadre) che dice : dove si verifica la condizione <condizione> .
L'uso corretto di questa istruzione consiste nell'estrarre
esclusivamente i campi che serviranno nella pagina una volta creato
il recordset. Ad esempio (riferito alla tabella dei libri vista nelle
lezioni precedenti):
SELECT titolo,genere FROM libri[/code]
In questo caso specifico, estrarremo solo il titolo ed il genere di tutti i libri presenti nella nostra tabella. Se invece desideriamo estrarre tutti i libri degli autori che hanno il nome che incomincia con una lettera maggiore o uguale a C basta fare:
SELECT titolo FROM libri WHERE autore>="c"
Esiste una giusta osservazione in merito a ciò che ho appena spiegato. Tutto quello appena visto in questo punto è possibile farlo con linguaggio Asp combinando insieme diverse strutture di controllo. Il semplice motivo per cui si svolge il lavoro in sql è quello di ottimizzare al meglio il carico di dati su cui lavorare e render più agevole la nostra pagina.
Esistono anche altre istruzioni sql, ma non essendo usate nel corso di questa guida, non intendo spiegarle in questa sede.
TECNICA 3 : TEMPO DI DURATA CONNESSIONE AL DATABASE
Ultima tecnica fondamentale per rendere efficiente un database consiste nel ridurre al minimo il tempo che lo teniamo aperto. E' infatti molto inutile (ai fini delle prestazioni) aprire un database ad inizio pagina. fare tutte le elaborazioni, immettere i dati all'interno del database, mostrare delle informazioni a video e poi chiudere il database. Per renderlo efficace, bisogna aprirlo,usarlo e chiuderlo subito. E' utile considerare queste tre fasi uniche in quanto il distaccamento di una sola delle tre crea un rallentamento ulteriore dell'elaborazione. Prima di concludere, voglio criticare certe scelte sulla modalità di uso dei database viste nel corso della mia esperienza in Asp. A volte si usa aprire e chiudere i database nel global.asa in modo da ridurre le aperture e le chiusure. Questa è la peggior cosa che si possa fare con un database. Se il database non viene usato in quanto l'utente non lo richiede, per quale motivo dobbiamo tenerlo aperto? Personalmente me lo chiedo ogni volta che leggo del codice in questo "stile" ma fortunatamente non sono ancora riuscito a darmi una risposta sensata. Questa nota di riflessione è riferita a tutti coloro che usano il metodo delle application per mappare e "smappare" un database. Riflettete e pensate a ciò che fate al vostro database.