Sommario Database...2 Normalizzazione...2 1 Forma normale...3 2 Forma normale...3 3 Forma normale...3 E/R (Entity/Relationship)...3 Modello concettuale...3 Modello logico...3 Modello fisico...3 DBMS (Database Management System)...3 Database relazionali e RDBMS...4 Web Server...4 Html e pagine web statiche...4 Pagine web dinamiche...5 Protocollo HTTP...5 Impiego web server...5 Piattaforme software...6 Davide Monnati 1
Database Normalizzazione APPUNTI WEB SERVER E PHP La normalizzazione di un database serve ad eliminare la ridondanza delle informazioni che ci potrebbero essere al proprio interno. É molto importante eliminare la ridondanza, non solo per l inutile spreco di spazio in più che essa potrebbe comportare, ma anche per le possibili anomalie che si potrebbero comportare durante le varie operazioni che vengono effettuate all interno del database. Data la seguente tabella non normalizzata, dove vengono rappresentati i vari prodotti presenti in una catena di supermercati distribuita in tutta Italia, possiamo notare che le varie anomalie: - Anomalia di aggiornamento: Se il magazzino VE1, dovesse cambiare indirizzo, sarebbe necessario modificare tutti i valori di IndirizzoMagazzino che coincide con il magazzino VE1. - Anomalia di cancellazione: Se un magazzino si dovesse svuotare, verrebbero elimitate tutte le informazioni che appartengono a quel magazzino. - Anomalia di inserimento: Se si dovesse aprire un nuovo magazzino, mancherebbero alcuni dati, tra qui l indirizzo. Davide Monnati 2
1 Forma normale Una tabella si dice in prima forma normale, quando: - Tutte le sue righe hanno lo stesso numero di attributi - Una colonna contiene tutti i valori dello stesso tipo - Non esistono due righe uguali - L ordine di inserimento non conta - Non esistono attributi ripetuti o composti 2 Forma normale Una tabella si dice in seconda forma normale, quando: - Rispetta già la prima forma normale - Tutti gli attributi che non appartengono alla chiave, dipendono dall intera chiave 3 Forma normale Una tabella si dice in terza forma normale, quando: - Rispetta già le prime due forme normali - Tutti gli attributi non appartenenti alla chiave dipendono solo dalla chiave E/R (Entity/Relationship) Il modello E/R (Entità Relazioni) è il modello che adottiamo per la progettazione concettuale. Nella costruzione del modello E/R si individuano gli oggetti, detti entità e gli attributi, che rappresentano le caratteristiche delle entità individuate, e infine le associazioni che individuano le correlazioni logiche tra entità. Modello concettuale Modello logico Modello fisico DBMS (Database Management System) Il DBMS (detto anche Database Management System) è un software realizzato per la manipolazione e la gestione di uno o più database contemporaneamente. Questa tipologia di software, nella maggior parte dei casi funge anche da server. Il DBMS si occupa inoltre delle politiche di accesso, gestione utenti e dei vari permessi. Davide Monnati 3
Database relazionali e RDBMS I DBMS non sono tutti della stessa tipologia, in quanto esistono alcuni DBMS basati sul modello relazionale, questi sono chiamati con l acronimo RDBMS (Relational Database Management System), sviluppati dall informatico Britannico Edgar F.Codd nel 1970, che dopo 40 anni dallo sviluppo, si dimostrano tutt ora attuali. Un database relazionale è formato da tabelle, ognuna delle quali composta da righe identificate da una chiave o codice univoco. Nell immagine qui sotto possiamo vedere un esempio di tabella avente sette campi, tra cui il primo, denominato id_post, contenente la chiave primaria e gli ultimi tre che contengono una chiave secondaria, che verrà utilizzata per creare un legame con le altre tre chiavi primarie delle altre tre tabelle. Questo legame viene chiamato relazione. Web Server Html e pagine web statiche L HTML è lo standard utilizzato per la diffusione delle pagine web. Il linguaggio HTML permette di definire la visualizzazione del documento, integrando link ipertestuali tramite dei tag d impaginazione verso altri documenti che si possono reperire in rete. Il DHTML non è un vero linguaggio, ma un insieme di linguaggi che permettono di creare pagine web più dinamiche, Questi linguaggi sono: - Il linguaggio HTML 4.0 o superiori - Il javascript - Il DOM (Document Object Model) - I fogli di stile CSS, che raggruppano in un solo file tutte le definizioni degli stili che definiscono l impaginazione della pagina web. Un sito web composto da pagine statiche viene qualificato (come sito web statico), sufficiente solamente nel caso in cui deve contenere poche pagine web. Davide Monnati 4
Un sito web statico è molto limitato per i seguenti motivi: - Manutenzione difficile in quanto dovrà essere effettuata modificando manualmente una pagina alla volta - Impossibilità di inviare pagine personalizzate secondo il visitatore - Impossibilità di creare pagine inserendo i valori contenuti all interno di un database. Pagine web dinamiche Al contrario delle pagine web statiche, quelle dinamiche permettono implementare quelle caratteristiche in più utilizzando i vari linguaggi di scripting, fra cui abbiamo: - CGI (Common Gateway Interface), è stato il primo e consisteva nel utilizzare un programma scritto in perl o in linguaggio C che inviava un contenuto compatibile con il protocollo HTTP - Linguaggio ASP di Microsoft, con il quale si possono scrivere script che manipolano vari oggetti in VBScript - Linguaggio PHP (Hypertext preprocessor), linguaggio simile al C++ e Perl, che permette di avere numerose funzionalità. Una differenza importante di una pagina web statica e dinamica è che, nel primo caso, la pagina scritta nel linguaggio HTML, viene interpretata direttamente dal browser web prensente all interno del nostro pc, nel secondo caso invece, la pagina web contiene degli script (PHP o ASP), che viene eseguito a lato server. Protocollo HTTP La trasmissione delle pagine web attraverso la rete internet, avviene utilizzando il protocollo HTTP (Hyper Text Transfer Protocol). Il funzionamento di questo protocollo è molto semplice: l utente richiede una pagina inserendo un indirizzo URL (o IP, nelle reti di piccole dimensioni sprovviste di server DNS interno) nel proprio browser (client) o cliccando in un link e avrà come output la pagina web ospitata nel server remoto, con il relativo testo, immagini e video (se presenti). Un server non è altro che un computer connesso alla rete internet che si occupa di ricevere richieste e di fornire il file richiesto dal client. Con il termine web server indicheremo un computer che fornisce pagine web a client remoti, utilizzando il protocollo HTTP. Impiego web server I server web sono oramai adatti ad ospitare siti web o altri progetti che richiedono particolari esigienze. Ad esempio: - Progetti web che contengono grandi volumi si disco di materiale multimediale (foto, video, audio ecc ); - Progetti che devono gestire una grande quantità di utenza giornaliera; - Progetti che richiedono un elevato grado di protezione dati, utilizzando il protocollo sicuro HTTPS. I server web possono essere creati utilizzando due ambienti diversi: L ambiente UNIX lixe (comprende sistemi come FreeBDS e GNU/Linux) o ambiente Windows. Davide Monnati 5
Scegliere un ambiente non significa scegliere solamente il linguaggio di programmazione, ma anche l insieme si software e framework. Su ambiente UNIX Like, avremmo a che fare con tutto il pacchetto Apache, MySQL o MariaDB. Su ambiente windows, avremmo a che fare sia con il pacchetto IIS con tutte le estensioni ISAPI (sviluppati di fatto da Microsoft), oppure con il pacchetto apache e MySQL. La maggior parte dei server che ci sono online (circa l 80%), sono basati su sistemi UNIX Like (BSD e GNU/Linux) in quanto, rispetto all ambiente Windows ha una sicurezza e stabilità maggiori. Piattaforme software Le piattaforme software che ci sono a disposizione per creare un server web sono: L.A.M.P LAMP è acronimo di Linux (Sitema Operativo) Apache (Server Web), MySQL o MariaDB (Database managment system) e Perl, PHP e/o Python (Linguaggio di scripting). Questa piattaforma software prende il nome dai software che la compone e gira su ambiente GNU/Linux. WAMP WAMP è acronimo di Windows (sistema operativo) Apache (Server Web), MySQL o MariaDB (Database managment system) e Perl, PHP e/o Python (Linguaggio di scripting). XAMPP XAMPP è una piattaforma per la creazione di web server che comprende i pacchetti Apache, MariaDB e tutti gli strumenti per l utilizzo dei linguaggi di scripting PHP e Perl. XAMPP è acronimo di: X sta per cross-platform, A sta per Apache, M sta per MariaDB, P sta per PHP e l ultima P sta per Perl. CGI L acronimo CGI sta per Common Gateway Interface, non è altro che una tecnologia che permette ai server web di interfacciarsi con delle applicazioni esterne che generano contenuti dinamici. CGI è stata la prima piattaforma che ha permesso l elaborazione di pagine web direttamente al lato server: quando ad un web server arriva la richiesta di un documento CGI (che solitamente ha estensione.exe,.cgi o.pl), il server esegue il programma inviando l output al client. Attualmente CGI è utilizzato solamente con il protocollo HTTP, in futuro potrebbe essere esteso ad altri protocolli. Nei server web basati sulla piattaforma IIS, la cartella di esecuzione dei software CGI è /cgi-bin/, anche se in qualche occasione è consigliabile modificarla in quanto potrebbe essere soggetta ad attacchi bot. I linguaggi di programmazione utilizzati da questa tecnologia, sono generalmente C/C++ e Perl. Alcuni applicativi utilizzano la tecnologia FastCGI per introdurre nuovi linguaggi di scripting, interpretati e non compilati, come ad esempio il PHP. Davide Monnati 6