Sviluppo web dinamico
Roadmap
•
•
•
•
Introduzione
Web Server, Application Server e DB Server
PHP
Database e modello ER
Applicazione web
• ‘…è l'espressione che in generale viene
impiegata per indicare tutte le applicazioni
distribuite web-based’ ovvero ‘[…] applicazioni
accessibili via web per mezzo di un network,
come ad esempio una intranet o attraverso la
Rete Internet’ (Wikipedia)
…tradotto in linguaggio comune…
è un SITO WEB!
Sito web
• Insieme di pagine web correlate che risiede su
un web server e accessibile all’utente che ne fa
richiesta digitandone il rispettivo URL o
l’indirizzo IP all’interno di un browser
• 2 tipologie principali:
▫ Siti web statici
▫ Siti web dinamici
Sito web statico (1/2)
• Formato da pagine web statiche.
• Interazione
unilaterale:
l'utente
può
visualizzare i contenuti del sito, ma non
modificare lo stato né le informazioni.
• Solitamente viene aggiornato con una bassa
frequenza e gestito da una o più persone che
agiscono direttamente sul codice HTML della
pagina.
Sito web statico (2/2)
• I siti web basati su questo paradigma sono stati
la prima tipologia e per questa ragione
estremamente diffusi.
• Il ‘linguaggio di marcatura’ padre del web statico
è l‘HTML.
• Molti siti web statici sono successivamente
migrati verso il web dinamico.
Sito web dinamico (1/2)
• Il termine web dinamico viene utilizzato per
indicare tutte quelle applicazioni web con cui
l’utente può interagire attivamente modificandone il
contenuto, il layout, interrogandone il database
(es. blog, forum, wiki, siti di e-commerce…)
• Le informazioni (o contenuti) del sito vengono
separate dall’impaginazione e si adattano alle scelte
fatte dall’utente
• L’aggiornamento
del
sito
web
da
parte
dell'amministratore è molto più agevole e rapido
Sito web dinamico (2/2)
Semplificando, il web browser
del client invia le proprie
richieste al livello intermedio,
ovvero al motore applicativo
dinamico del web server, che da
una parte interpreta e gestisce
le interrogazioni al Database e
dall'altra genera il risultato in
un output diretto allo stesso
browser, che lo interpreta e lo
restituisce all'utente sotto forma
di pagine web.
Web Server
• Può essere inteso in 2 modi:
▫ computer sul quale è ospitata una applicazione
web
▫ programma eseguito su un computer (quindi
hardware o software).
• Generalmente un server web ospita siti web, ma
può essere utilizzato per applicazioni di gaming,
memorizzazione di dati o esecuzione di
applicazioni aziendali.
Web Server Hardware
• Computer sul quale sono presenti file di vario
tipo accessibili (non tutti!) dall’esterno tramite
rete (generalmente attraverso il protocollo http).
• L'accesso a tali file avviene attraverso l'URL
(Universal Resource Locator) che indica la
localizzazione di un file in rete.
• Su tale computer è installato un programma che
prende il nome di web server (software)
Web Server software
• Il suo compito principale è fornire pagine web al
browser (Client) che ne ha fatto richiesta.
• La visualizzazione di una pagina web è frutto
dell'elaborazione
di
un
codice.
Tale
elaborazione può essere fatta dal browser del client
(per i linguaggi lato client: HTML, CSS, Javascript)
o dal server (per i linguaggi lato server: PHP, ASP…)
• Esistono molti web server software (Microsoft IIS,
Nginx, Lighttpd,…), ma il più noto ed utilizzato è
Apache HTTP Server (o semplicemente Apache)
Application Server 1/2
• È un software che fornisce l'infrastruttura e le
funzionalità di supporto, sviluppo ed esecuzione
di applicazioni e componenti server in un
contesto distribuito. Si tratta di un complesso di
servizi
orientati
alla
realizzazione
di
applicazioni multilivello ed enterprise, con alto
grado di complessità, spesso orientate per il
web. (Wikipedia)
• L'application server è composto da moduli
Application server 2/2
• I moduli normalmente presenti in un application
server sono:
▫ contenitore di componenti server-side;
▫ gestore degli accessi degli utenti e della sicurezza;
▫ gestore accesso al database o in generale a
sorgenti di dati esterne;
▫ gestore transazioni;
▫ altri componenti per massimizzare le prestazioni
(load balancer, caching, etc.)
Database Server
• È un programma che fornisce servizi di database
ad altri software o compute secondo il modello
client-server.
• Con tale termine ci si può anche riferire ad un
computer dedicato all'esecuzione di tale
programma.
• I Database Management System (DBMS) spesso
forniscono funzionalità di DB server.
Linguaggi lato server
• L’elaborazione è fatta direttamente dal server il
quale restituirà al client (in genere al browser),
anziché il codice originale con cui è scritto il file
(es. codice php), l'elaborazione di questo:
▫ il php sarà interpretato dal server e andrà a
generare, a sua volta, un linguaggio lato client (ad
esempio HTML, ma può generare anche
immagini, documenti pdf, documenti XML,
filmati Flash,…).
Linguaggi lato server (esempio 1/2)
Se un browser punta ad una pagina php con il seguente codice:
Linguaggi lato server (esempio 2/2)
dopo l'elaborazione il server restituirà al browser il seguente codice:
La cosa essenziale è che per il client sarà impossibile
visualizzare il codice sorgente; cioè sarà
impossibile risalire al php: egli riceverà solo codice
html, javascript e css.
LAMP, XAMPP, WAMP e affini
• Sono pacchetti software gratuiti per lo sviluppo di
applicazioni web, contenenti:
▫ Apache HTTP Server
▫ MySQL
▫ PHP
• Si differenziano tra loro per i sistemi operativi per i
quali erano stati pensati, per i DBMS che forniscono
e per i linguaggi di scripting che gestiscono.
• Gli script php vanno inseriti nella DocumentRoot
Sviluppo web dinamico: Basi di
dati
Base di dati
• Una base di dati è una collezione di dati
utilizzati per rappresentare le informazioni di
interesse per un sistema informativo
• Esempi:
▫
▫
▫
▫
▫
rubrica telefonica personale
anagrafe
archivio di una biblioteca
segreteria studenti dell’università
…
Database Management System
• Un Database Management System (DBMS) è un
pacchetto software progettato per memorizzare e
gestire basi di dati.
• Sistema in grado di gestire grandi collezioni di dati
persistenti in modo efficiente ed efficace
garantendo servizi di condivisione, affidabilità e
sicurezza.
• È sostanzialmente uno strato software che si frappone
fra l'utente ed i dati veri e propri. L'utente e le
applicazioni non accedono ai dati così come sono
memorizzati
effettivamente,
cioè
alla
loro
rappresentazione fisica, ma ne vedono solamente una
rappresentazione logica
DBMS: figure coinvolte
utenti finali
applicazioni
programmatori
DBMS
amministratori
progettisti
utenti
casuali
Base di Dati
Progettazione di basi di dati
• La metodologia utilizzata nell’ambito delle basi di
dati si articola in tre fasi da effettuare in cascata:
▫ Progettazione concettuale
▫ Progettazione logica
▫ Progettazione fisica
• La prima fase risponde alla domanda: “cosa dovrà
rappresentare la base di dati?”
• Le successive invece si occupano di come
rappresentarlo
Progettazione concettuale
• Il suo scopo è quello di rappresentare le
specifiche informali in termini di una
descrizione formale e completa, che sia
indipendente dai criteri di rappresentazione
utilizzati nella base di dati
• Il prodotto di questa fase è chiamato schema
concettuale e fa riferimento ad un modello
concettuale dei dati
Progettazione logica
• Consiste nella traduzione dello schema
concettuale in termini delle strutture di
rappresentazione proprie del tipo di sistema di
gestione di basi di dati a disposizione
• Il prodotto di questa fase viene denominato
schema logico della base di dati e fa riferimento
ad un modello logico dei dati
Progettazione fisica
• In questa fase lo schema logico viene completato
con la specifica dei parametri fisici di
memorizzazione dei dati
• Il prodotto di questa fase viene denominato
schema fisico e fa riferimento ad un modello
fisico dei dati
Progettazione di una base di dati
relazionale
Modello E-R
• Il più diffuso modello concettuale dei dati
▫ ne esistono molte versioni, (più o meno) diverse
l’una dall’altra
• Fornisce una serie di costrutti atti a descrivere la
realtà di interesse in modo semplice da
comprendere
Costrutti del modello E-R
• Entità: classi di oggetti che hanno proprietà
comuni (concetto del mondo reale che raggruppa un insieme di
informazioni coese e che ha senso anche autonomamente)
▫ Es.: Città, Dipartimento, Impiegato
Città
• Relazione: legami logici tra due o più entità
▫ Es.: Residenza tra Città e Impiegato
Residenza
Rappresentazione grafica
Occorrenze
• Occorrenza (o istanza) di entità: elemento della
classe
▫ (l'oggetto, la persona, …, non i dati)
▫ Es.: gli impiegati Marini e Rossi sono esempi
dell’entità Impiegato
• Occorrenza (o istanza) di una relazione: ennupla
(coppia nel caso di relazioni binarie) costituita
da occorrenze di entità
Attributo
• Costrutto che descrive proprietà elementari di
entità o relazioni di interesse
• Associa ad ogni occorrenza un valore
appartenente ad un insieme detto dominio
dell’attributo, che contiene i valori ammissibili
Matricola
Voto
Data esame
Studente
Anno di
iscrizione
Esame
Cardinalità delle relazioni
• Descrivono il numero minimo e massimo di
occorrenze di relazione cui una occorrenza
dell’entità può partecipare.
▫ Cioè: quante volte, in una relazione tra entità,
un’occorrenza di una di queste entità può essere
legata a occorrenze delle altre entità coinvolte
• Esempio:
Impiegato
(1,5)
Assegnamento
(0,50)
Incarico
Cardinalità delle relazioni
• Nella maggiore parte dei casi, è sufficiente
utilizzare solo tre valori:
▫ Zero
▫ Uno
▫ Il simbolo N: indica genericamente un intero
maggiore di uno
• Considerando le sole cardinalità massime, si
potranno avere relazioni del tipo:
▫ Uno a uno
▫ Uno a molti
▫ Molti a molti
Esempio
Ordine
Persona
Turista
(0,1)
(1,1)
(1,N)
Vendita
Residenza
Prenotazione
(1,1)
(0,N)
(0,N)
Fattura
Città
Viaggio
Identificatori
• Descrivono i concetti (attributi e/o entità) che
permettono di identificare univocamente le
occorrenza delle entità
▫ in molti casi, uno o più attributi di una entità sono
sufficienti a individuare un identificatore
 identificatore interno detto chiave
Targa
Automobile
Modello
Colore
Generalizzazioni
Codice fiscale
Cognome
Persona
Età
Uomo
Situazione
militare
Donna
Documentazione degli schemi E-R
• Dizionario dei dati
▫ Il dizionario è composto da due tabelle:
 Entità, Descrizione, Attributi, Identificatore
 Relazione, Descrizione, Entità coinvolte, Attributi
• Vincoli di integrità sui dati (sono necessari)
▫ non possono essere rappresentati con i costrutti del
modello E-R
Esempio:
 un impiegato non può avere uno stipendio maggiore del
direttore
Esempio: descrizione del problema
Si vuole informatizzare la gestione dei corsi in una facoltà
universitaria. La facoltà prevede diversi corsi di laurea di
tipo magistrale, caratterizzati da un codice e da un nome.
Ogni corso di laurea è costituito da più insegnamenti.
Ciascun insegnamento è tenuto da un solo docente, di cui
si vogliono memorizzare il nome, il cognome, il codice
fiscale, l’indirizzo e un recapito telefonico. Di ciascun
insegnamento si vuole memorizzare il codice, il nome ed il
numero di crediti. Gli studenti sono caratterizzati dalla
matricola, dal nome, dal cognome, dalla data di nascita e
dal luogo di nascita. Ogni studente deve sostenere tutti gli
esami (di cui si vuole memorizzare data e voto) del corso di
laurea a cui è iscritto. Lo studente può sostenere l’esame
finale solo dopo aver ottenuto un totale di 120 crediti.
Esempio: schema E-R
Nome
Cognome
Indirizzo
iddocente tel
cf
idcdl
denominazione
(1,N)
Docente
contiene
Corso di laurea
(1,N)
(1,N)
titolare
(1,1)
data
voto
Iscritto
(1,1)
(1,1)
Insegnamento
Voto
esame
(0,N)
idinsegnamento
crediti denominazione
Studente
(0,N)
matricola cognome nome luogo di
nascita
data di
nascita
Modello relazionale
• I dati sono organizzati in relazioni
• Le relazioni possono essere interpretate/visualizzate
come tabelle
• Un database è un insieme di relazioni
Rubrica
nomi degli attributi (o
campi)
schema
Tuple
(o
record)
COGNOME
NOME
TEL.
Tanzi
Rosario
095 89 ...
Federici
Susanna
011 55 ...
De Bernardi
Silvio
06 44 ...
Dallo schema E-R al DB relazionale 1\2
Traduzione da Modello concettuale a Insieme
di tabelle
• Entità -> Tabella
• Attributi -> Campi
 Identificatore -> Chiave primaria
Dallo schema E-R al DB relazionale 2/2
• Relazioni Molti a Molti
▫ Relazione -> Tabella
 chiavi delle entità partecipanti (chiavi esterne)
 attributi della relazione
• Relazioni Uno a Molti
▫ si può evitare la tabella aggiuntiva includendo la chiave dell’entità
con cardinalità massima pari a N (chiave esterna) nella tabella
relativa all’altra entità (quella con cardinalità massima pari a 1)
• Relazioni Uno a Uno
▫ Si può creare un’unica tabella che contiene gli attributi di
entrambe le entità oppure aggiungere la chiave di un entità
nell’altra
Esempio: schema E-R
Nome
Cognome
Indirizzo
iddocente tel
cf
idcdl
denominazione
(1,N)
Docente
contiene
Corso di laurea
(1,N)
(1,N)
titolare
(1,1)
data
voto
Iscritto
(1,1)
(1,1)
Insegnamento
Voto
esame
(0,N)
idinsegnamento
crediti denominazione
Studente
(0,N)
matricola cognome nome luogo di
nascita
data di
nascita
Traduzione E-R  DB relazionale
• Fase 1: trasformazione delle entità in tabelle
▫ Docente(iddocente,Nome,Cognome,
Indirizzo,tel,cf)
▫ Insegnamento(idinsegnamento,crediti,denomin
azione)
▫ Studente(matricola,cognome,nome,luogo di
nascita,data di nascita)
▫ Corso di laurea(idcdl,denominazione)
Traduzione E-R  DB relazionale
• Fase 2: trasformazione delle relazioni:
▫ Docente(iddocente, Nome, Cognome, Indirizzo, tel, cf)
▫ Insegnamento(idinsegnamento, crediti,
denominazione, iddocente, idcdl)
▫ Studente(matricola, cognome, nome, luogo di nascita,
data di nascita, idcdl)
▫ Corso di laurea(idcdl, denominazione)
▫ Esame (idinsegnamento, matricola, data, voto)
SQL (Structured Query Language)
• Nasce nel 1974 con il nome SEQUEL (IBM)
• Standard ANSI (American National Standards
Institute) nel 1986
• Standard ISO (International Organization for
Standardization) nel 1987.
• È un linguaggio per interrogare e gestire basi di
dati relazionali mediante l'utilizzo di costrutti di
programmazione denominati query.
Creare database e tabelle
• CREATE DATABASE nome_database
• CREATE table nome_tabella (
nome_colonna tipo_colonna [ clausola_default ] [
vincoli_di_colonna ]
… )
• Esempio:
▫ CREATE table Libro (
ID INTEGER PRIMARY KEY,
Genere CHAR(18) NOT NULL
Titolo CHAR(25) NOT NULL
);
Inserimento riga
• INSERT INTO nome_tabella [ ( elenco_campi ) ]
VALUES ( elenco_valori )
• Esempio
▫ INSERT INTO Libro VALUES ( 1, ‘Fantasy’, ‘Eragon’);
Interrogare il database
• SELECT [ ALL | DISTINCT ] lista_elementi_selezione
FROM lista_riferimenti_tabella
[ WHERE espressione_condizionale ]
[ GROUP BY lista_colonne ]
[ HAVING espressione_condizionale ]
[ ORDER BY lista_colonne ]
• Esempio
▫ SELECT Titolo FROM Libro ORDER BY Titolo
▫ SELECT DISTINCT Titolo FROM Libro ORDER BY Titolo
▫ SELECT * FROM Libro WHERE Titolo LIKE 'B%‘
▫ SELECT COUNT(*) FROM Libro
▫ SELECT Genere, COUNT(ID) FROM Libro GROUP BY Genere
UPDATE e DELETE
• UPDATE nome_tabella
SET elenco_assegnamenti
[ WHERE espressione_condizionale ]
• Esempio
▫ UPDATE Libro
SET Genere = ‘Narrativa'
WHERE Titolo = ‘Eragon‘
• DELETE FROM nome_tabella
[ WHERE espressione_condizionale ]
Modificare la struttura del DB
• DROP table nome_tabella { REStrICT |
CASCADE }  elimina tabelle
• ALTER table nome_tabella ADD [ COLUMN ]
definizione_colonna  aggiunge una colonna
• ALTER table nome_tabella DROP [ COLUMN ]
nome_colonna { REStrICT | CASCADE } 
elimina colonne
UNION
Impiegati Norvegia
Impiegati USA
SELECT E_Name FROM Impiegati_Norvegia
UNION
SELECT E_Name FROM Impiegati_USA
UNION ALL
Impiegati_Norvegia
Impiegati_USA
SELECT E_Name FROM Impiegati_Norvegia
UNION ALL
SELECT E_Name FROM Impiegati_USA
Join o prodotto cartesiano 1/2
• Il prodotto cartesiano tra n insiemi A1 e A2 ... An
si definisce come l'insieme di tutte le possibili
ennuple che hanno per primo elemento un
elemento di A1, per secondo elemento un
elemento di A2... per ennesimo elemento un
elemento di An
▫ Es. se A = {1, 3}, B = {2, 4} e C ={6, 8}
A x B x C=
{(1, 2, 6), (1, 2, 8), (1, 4, 6), (1, 4, 8),
(3, 2, 6), (3, 2, 8), (3, 4, 6), (3, 4, 8)}
Join o prodotto cartesiano 2/2
• Il prodotto cartesiano tra due relazioni coincide
con il prodotto cartesiano tra insiemi; le relazioni
(o tabelle) sono infatti insiemi di tuple. È dunque
l'insieme di tutte le possibili tuple ottenute
concatenando ogni tupla della prima relazione
con ogni tupla della seconda.
• La parola chiave JOIN, in SQL, è usata per
ottenere dati da 2 o più tabelle in relazione tra
loro attraverso alcune colonne.
• Le tabelle in un database sono spesso collegate
tra loro attraverso delle chiavi.
Tipi di Join
• JOIN: Restituisce le righe per cui c’è almeno una
corrispondenza nelle varie tabelle
• LEFT JOIN: Restituisce tutte le righe della tabella
a sinistra della join, anche se non ci sono
corrispondenze con la tabella di destra
• RIGHT JOIN: Restituisce tutte le righe della
tabella a destra della join, anche se non ci sono
corrispondenze con la tabella di sinistra
• FULL JOIN: Restituisce le righe per le quali c’è
una corrispondenza in una delle tabelle
INNER JOIN 1/2
Persone
Ordini
INNER JOIN 2/2
SELECT Persone.LastName, Persone.FirstName, Ordini.OrderNo
FROM Persone INNER JOIN Ordini
ON Persone.P_Id=Ordini.P_Id
ORDER BY Persone.LastName
LEFT JOIN
SELECT Persone.LastName, Persone.FirstName, Ordini.OrderNo
FROM Persone LEFT JOIN Ordini
ON Persone.P_Id=Ordini.P_Id
ORDER BY Persone.LastName
RIGHT JOIN
SELECT Persone.LastName, Persone.FirstName, Ordini.OrderNo
FROM Persone RIGHT JOIN Ordini
ON Persone.P_Id=Ordini.P_Id
ORDER BY Persone.LastName
FULL JOIN
SELECT Persone.LastName, Persone.FirstName, Ordini.OrderNo
FROM Persone FULL JOIN Ordini
ON Persone.P_Id=Ordini.P_Id
ORDER BY Persone.LastName
Esercizio
• Siamo stati chiamati a progettare una base di dati dal
Comando dei Vigili del Fuoco di Cambridge al fine di poter
gestire i dati riguardanti le caserme della città. Per ogni
caserma si vuole archiviare il codice, il nome, l’indirizzo e
l’anno di costruzione. A ogni caserma sono associate delle
zone della città, ovvero quella parte di territorio che deve
servire. Le zone sono caratterizzate da un codice e da un
nome. Ogni caserma ospita diverse squadre di soccorso
definite Unità Operative. Ogni Unità Operativa ha un
codice e un nome. Ogni unità operativa ha in dotazione
attrezzature per il pompaggio dell’acqua che sono
caratterizzate da : Anno di costruzione, Produttore, Tipo o
modello, Lunghezza delle scale, Capacità in litri, Frequenza
di pompaggio (litri per minuto – l/min)
Esercizio: modello E-R
Esercizio: schema logico
Zona (ID, Nome, IDStazione)
Stazione VdF (ID, Nome, Indirizzo, Anno)
UnitàOperativa (ID, Nome, IDStazione)
Attrezzatura(ID, Modello, Anno, Frequenza, Capacità, Lunghezza, IDUnitàOp)
Esercizio: interrogazioni
• Il database dovrà consentire di ricavare le seguenti
informazioni attraverso delle semplici query:
▫ Quali stazioni sono state costruite dopo il 1899?
▫ Quali unità utilizzano attrezzi costruiti prima del 1990?
▫ A quali stazioni appartengono le unità che utilizzano
attrezzature modello Lance?
▫ Quante delle attrezzature in dotazione sono state del
modello Pierce?
Esercizio: query sql
1.
2.
3.
4.
SELECT *
FROM StazioneVdF
WHERE Anno>1899
SELECT UnitàOperativa.*
FROM UnitàOperativa JOIN Attrezzatura
ON UnitàOperativa.ID=Attrezzatura.IDUnitàOp
WHERE Attrezzatura.Anno<1990
SELECT StazioneVdF.*
FROM UnitàOperativa JOIN Attrezzatura
ON UnitàOperativa.ID=Attrezzatura.IDUnitàOp
JOIN StazioneVdF
ON UnitàOperativa.IDStazione=StazioneVdF.ID
WHERE Attrezzatura.Modello="Lance"
SELECT COUNT (*) FROM Attrezzatura
WHERE Modello="Pierce"