Presentazione Data Base Ovvero: il paradigma LAPM (Linux - Apache - PHP - mySQL) come supporto Open Source ad un piccolo progetto di Data Base relazionale, e tipicamente ad ogni applicazione non troppo pretenziosa, tipo ufficio, magazzino, ecc.
Perché un Data Base relazionale La prima domanda che ci si può fare è perché mai mi dovrebbe servire un Data Base relazionale, visto che devo solo gestire delle tabelle di dati? – Una singola tabella può ormai facilmente essere gestita da un Foglio elettronico (Excel, o equivalenti: OpenOffice Calc, StarCalc, KSpread, ecc.) – Il problema si fa decisamente più complicato quando si ha a che fare con più di una tabella incrociata
L'anagrafica parrocchiale Tipicamente ha una tabella Famiglie – In essa sono presenti dati quali l'indirizzo, il telefono, informazioni generali relative alla famiglia – Questi dati sono presenti una sola volta nel DB E una tabella Persone – Con nome, cognome, data di nascita, e altri dati specifici della persona – Ogni persona si riferisce ad una e una sola Famiglia – Non è necessario ripetere e gestire per ogni persona dati quali indirizzo, telefono, ecc.
Collegamento fra tabelle Insomma, quando si cerca un dato, deve essere possibile fare ricerche sia sui dati personali che su quelli familiari, senza preoccuparsi di dove sono memorizzati – Il programma deve gestire i puntatori (le frecce), interrogare la tabella giusta, incrociare i dati, ecc. – Tutto questo deve avvenire in modo trasparente all'utente
Alcuni DB relazionali Un DB relazionale è appunto questo motore che, interrogato con un linguaggio standard (SQL), tiene conto delle relazioni fra le tabelle Alcuni DB relazionali famosi: – DB2- mySQL – Informix- MS Access – Oracle- MS SQL Server – Ingres- Paradox – Postgres
Perché Open Source La seconda domanda è perché usare software Open Source, visto che con un semplice schema in Access si può ottenere quello che serve? – Nel mio caso la scelta è stata favorita da questa considerazione: i dati che sono inseriti in una anagrafica parrocchiale sono dati sensibili secondo la definizione della normativa italiana, e bisogna quindi garantire che «secondo i correnti standard tecnologici» siano protetti – Io non mi fido della sicurezza di un sistema che può essere compromesso da un qualunque virus, e d'altra parte voglio essere in grado di verificare a quale software affido i dati
La scelta del software Rimane il problema di quale software usare: – Nelle varie suite di Ufficio non è presente un DB relazionale tipo Access – D'altra parte i DB Open source esistenti hanno una interfaccia a carattere o, se esiste una interfaccia grafica, è solo abbozzata Giungiamo quindi al paradigma LAPM: – Linux come S.O. – Apache come server Web – PHP come linguaggio di scripting – mySQL come motore di DB relazionale
Struttura di un progetto LAPM
Un progetto aperto Come avrete notato alcuni non secondari vantaggi di questo paradigma sono: – È aperto nel senso che poi l'utente può usare il programma da un qualunque browser, sotto qualunque S.O. : i dati viaggiano in formato HTML! – È proteggibile molto bene e selettivamente, in quanto il DB (dove sono i dati) viene contattato SOLO dallo script PHP, che a sua volta gira SOLO sul server Linux, e Apache è un server Web con uno dei più flessibili sistemi di configurazione accessi
Alcune schermate di esempio:
Una ricerca si fa con un semplice Form
Ecco il risultato:
è una semplice pagina HTML!
La pagina è stata creata da uno script PHP che interroga il DB mySQL Il file show.php (che viene eseguito sul server) contiene codice HTML, e mescolato insieme il codice PHP che costruisce la stringa da passare a mySQL a seconda dei dati presenti nel Form di ricerca Fatti alcuni controlli, e gestite le possibili segnalazioni di errore (contiene anche un po' di test usati durante il debug ;-( perché non ho ancora avuto il tempo di ripulirlo), si occupa di collegare fra loro le tabelle... Come notate il PHP permette l'uso di subroutines, che nel mio caso sono raccolte nel file common.php - incluso all'inizio di ogni altro file PHP
Controllo accessi Attraverso i file di configurazione di Apache si può limitare l'accesso al programma: – Alla sola console del server, fisicamente inteso – Alla sottorete locale (i computer di un ufficio, ad es.) – A chiunque, anche se è in altre parti del Web, ma con verifica di utente-password, o altri schemi (SSL) C'è poi il sistema di controllo accessi di mySQL che può ulteriormente precisare privilegi di accesso alla singola tabella, al singolo utente...