Laboratorio di Sistemi Informativi
Presentazione del Corso
Obiettivo di questo corso di laboratorio è mettere in pratica le
nozioni
teoriche apprese durante il corso di "Basi di Dati". Mentre
quest'ultimo
era focalizzato sul concetto di "base di dati" in sè, in questo
corso ci concentreremo invece sulle loro applicazioni. In
particolare, ci interesseremo dello sviluppo di siti web "dinamici",
nei quali le pagine da visualizzare non sono scritte una volta per
tutte, ma vengono generate "al volo", quando richieste, prelevando i
dati da un DBMS.
Come "caso di studio", svilupperemo un sistema per la prenotazione
online di posti ad uso di una
compagnia aerea. Verranno introdotti progressivamente gli strumenti e i
linguaggi necessari a portare a compimento tale progetto (che
ovviamente
non ha nessuna pretesa di essere rispondente alle esigenze di una vera
compagnia aerea).
Al cuore di questo sistema sta una base di dati che tiene
traccia di voli, posti, prenotazioni, ecc... Come sistema di gestione
per le basi di dati utilizzeremo MySQL.
Cosa è un database (o base di dati)
- Database (o base di dati): un insieme di dati,
di relazioni tra di essi e di procedure che mantengono delle
informazioni su un determinato ambito applicativo. Ad esempio, il
database della motorizzazione civile (che contiene informazioni sui
veicoli immatricolati e i loro proprietari) o il database di una
compagnia telefonica (che contiene informazioni sui clienti, le
telefonate fatte da questi ultimi, i piani tariffari...)
- Database relazionale: un
database che sfrutta il modello relazionale. I dati sono memorizzati in
tabelle, come anche le relazioni tra i dati che vengono codificate
utilizzando opportune "chiavi esterne".
Probabilmente il modello relazionale è l'unico modello che avete
visto nel corso di Sistemi Informativi, per cui ai vostri occhi i
termini database e database relazionale sono praticamente sinonimi.
Tuttavia, esistono modelli alternativi, alcuni ormai in disuso (modello
gerarchico e modello reticolare), altri invece più nuovi che si
stanno facendo strada (modello a oggetti).
Cosa è un DBMS
(Data Base
Management System): è il software che si occupa della gestione
di un
database. In generale, un DBMS è composto da vari programmi. Nel
caso
più semplice, possiamo riconoscerne due:
- server DBMS:
mantiene i
dati memorizzati in memoria di massa e risponde alle
interrogazioni (sia a quelle di selezione che a quelle di modifica dei
dati). L'utente non ha una interazione diretta col server, ma accede a
quest'ultimo, per via indiretta, adoperando altri programmi, detti
client.
- client DBMS:
un client
DBMS è un programma che fa da interfaccia tra l'utente della
base di
dati e il server DBMS. Può essere un client testuale se
accetta
comandi dall'utente in formato testo (tipicamente comandi SQL) o
grafico se presenta una interfaccia visuale come Access.
Notare che il programma client e il programma
server possono
anche risiedere su computer diversi, e comunicare tra di loro tramite
la rete. Ovviamente, il database risiede sullo stesso computer dove si
trova il server DBMS. Una architettura di questo tipo, anche in altri
contesti, si chiama architettura client/server.
SGBD (Sistema di Gestione di
Basi di Dati) è la traduzione in italiano di DBMS.
Alcuni esempi di DBMS sono: Oracle, IBM DB2, Microsoft SQL server,
MySQL, Postgres/SQL, Interbase. Microsoft Access, che è un
sistema per la gestione di archivi molto diffuso, non è
generalmente considerato un vero e proprio DBMS, in quanto non ha la
struttura client/server ed è scarsamente efficiente su basi di
dati voluminose.
Cosa è MySQL ?
È un DBMS per database relazionali, sviluppato
dalla MySQL AB.
Queste le sue caratteristiche:
- è un software libero.
Il
codice sorgente è disponibile al pubblico, tutti possono usarlo
senza pagare diritti d'autore di nessun tipo, possono modificarlo,
migliorarlo e adattarlo alle più svariate esigenze;
- è
ottimizzato per la velocità di esecuzione. Alcune
caratteristiche più complesse di SQL sono state sacrificate per
garantire una maggiore velocità. Questo lo rende particolarmente
adatto ad applicazioni via web;
- è supportato dalla MySQL AB, che offre, a pagamento,
supporto commerciale, training, certificazioni che lo rendono adatto
anche all'utilizzo aziendale;
- è disponibile per un'ampia varietà di hardware e
sistemi operativi: Windows, Linux, OS/2, MacOs, Solaris, ecc..
- è affiancato da un'ampia gamma di software che lo rendono
interfacciabile con i più comuni linguaggi e ambienti di
programmazione.
Per tutti questi motivi, e anche per la sua ampia diffusione,
utilizzeremo MySQL come DBMS per il nostro corso.
Al momento, esistono varie versioni di MySQL:
- 3.23 e 4.0 sono le vecchie versioni, ormai da considerare
obsolete.
- 4.1 è la penultima versione, ed è quella che
utilizzeremo nel nostro coso, in quanto inserita direttamente nella
maggior parte delle distribuzioni Linux.
- 5.0 è la versione corrente. Tuttavia, siccome la
maggior parte delle distribuzioni Linux non la includono ancora
direttamente, preferiamo utilizzare la versione precedente.
- 5.1.x è la versione in via di sviluppo, alla quale vengono
continuamente aggiunte
nuove caratteristiche.
Cosa è Linux ?
Come detto MySQL è disponibile in molti sistemi operativi. Noi
lo utilizzeremo in ambiente Linux. Linux è un
sistema operativo libero, che
ha una notevole diffusione nel mondo dei server, e che lentamente si
sta diffondendo nel mondo delle macchine client (da tempo ormai
dominate dai prodotti Microsoft).
Linux trae le sue origini dai sistemi operativi della famiglia Unix.
Tuttavia il suo nome (oltre a ricordare quello di Linus Torvalds, che
è il suo principale sviluppatore) è anche l'acronimo di
"Linux Is Not UniX", e vuole rappresentare il fatto che mentre i
sistemi Unix tradizionali sono sistemi proprietari (ogni costruttore di
computer ha il suo) Linux è un sistema operativo aperto, che
funziona su molte architetture hardware: PC, Macintosh, Sun, server
IBM, etc..
Perchè la scelta di Linux?
- per imparare qualcosa di nuovo e rendersi conto che Windows e
Sistema Operativo non sono sinonimi;
- perchè MySQL è molto più comodo da
utilizzare nei sistemi Unix;
- perchè si parla tanto di software open source nella pubblica
amministrazione.. ma se poi si insegna agli studenti a lavorare sempre
e soltanto in Windows, queste rimangono solo vane chiacchiere.
Dal punto di vista dell'interfaccia grafica, non c'è tantissima
differenza tra Windows e Linux. Spiegherò tuttavia, nel corso
delle lezioni, alcuni dei punti più importanti che distinguono
Linux da Windows.
E infine Apache e PHP
Ulteriori "compagni di viaggio", che però vedremo soltanto
più avanti, sono Apache HTTP server (comunemente chiamato semplicemente Apache) e PHP.
Apache è uno dei server web più diffusi al momento,
probabilmente il più diffuso. Un server web è il
programma che consente di avere delle pagine HTML nella propria
macchina e di renderle disponibili a tutti. Ad esempio, quando vi
collegate al sito http://www.unich.it
quello che succede è che
il browser comunica con il server web che risiede sulla macchina
www.unich.it per accedere alle pagine HTML che compongono il sito.
PHP è invece un linguaggio di scripting per le pagine HTML. Con
PHP
è possibile scrivere delle pagine web dinamiche, che vengono
generate ogni volta nel momento in cui vegono richieste, possibilmente
(ed è quello che faremo noi) prelevando i dati da un database.
In un certo senso è simile a JavaScript, ma con una differenza
fondamentale: JavaScript è eseguito all'interno del browser,
mentre PHP è parte del server web.