INFORMATICA Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. APPLICAZIONI WEB L’architettura di riferimento è quella ampiamente diffusa ed utilizzata dalle applicazioni web a “tre livelli”, che impiega protocolli standard di comunicazione fra le varie componenti client e server. La rete Internet, basata sui protocolli TCP/IP, mette in comunicazione il computer client degli utenti mediante un browser, per accedere alle applicazioni web (realizzate con il linguaggio lato server PHP e memorizzate su un server web Apache). Le applicazioni scritte in PHP possiedono le funzioni necessarie per interrogare in SQL il DBMS MySQL, che può essere installato su di un server specifico o sullo stesso server su cui è in esecuzione il Web server. Durante l’anno scolastico abbiamo dedicato particolare attenzione all’approfondimento del livello di memorizzazione, gestione e manipolazione dati: i DATABASE. I DATABASE In ogni applicazione informatica, dalla più complessa alla più semplice, vengono trattate informazioni ed è necessario che queste informazioni vengano memorizzate in archivi per essere in seguito disponibili per successive elaborazioni. Attraverso i database è possibile memorizzare e gestire in modo flessibile ed efficiente le informazioni che sono il “vero patrimonio di ogni organizzazione”. Una base di dati o database può essere considerata come una raccolta di dati progettati in modo tale da poter essere utilizzati in maniera ottimizzata da differenti applicazioni e da utenti diversi. Le informazioni necessarie a un’organizzazione sono gestite da un sistema informativo. Un sistema informativo è un insieme organizzato di strumenti automatici, procedure manuali, risorse umane e materiali, norme organizzative, orientato alla gestione delle informazioni rilevanti per un’organizzazione. Un sistema informatico è dunque un sottoinsieme del sistema informativo che si dedica alla gestione automatica delle informazioni, rappresentate mediante dati digitali. In prima analisi il sistema informatico (SI) è costituito dagli archivi elettronici in cui sono memorizzati tutti i dati relativi all’azienda: dai supporti fisici per la memorizzazione dei dati, alle procedure di interrogazione per la ricerca delle informazioni (applicazioni), agli strumenti di comunicazione tra i terminali degli operatori. Nei database la definizione di dei dati e i dati stessi sono salvati all’interno dello stesso database. DBMS Si definisce DBMS (Database Management System) il sistema di gestione del database visto il suo complesso. Il DBMS si preoccupa di gestire interamente i dati, compresa la loro definizione e il modo in cui vengono fisicamente archiviati. Esempi famosi di DBMS sono MySql e Access. MODELLAZIONE DEI DATI Un modello di dati consiste in una rappresentazione astratta delle strutture dei dati di un database. L’atto di creazione di un modello prende il nome di modellazione dei dati. Le strutture dei dati sono tutti gli oggetti del database e le regole che regolano le operazioni tra i dati. Esistono sostanzialmente due modi per modellare i dati: Modello Entità-Relazione; Modello a Oggetti. IL MODELLO ENTITÀ-RELAZIONI La stragrande maggioranza delle applicazioni esistenti fa uso di un approccio Entità-Relazione (ER). Lo scopo del modello Entità-Relazione, consiste nel rendere in modo grafico tutti gli oggetti che fanno parte di un database in modo che il flusso delle informazioni possa essere seguito e verificato prima di sviluppare l’applicazione, rappresentando così situazioni del mondo reale, utilizzando le Entità e le Relazioni. Un modello E-R è descritto dunque da entità, relazioni, attributi, e attributi cosiddetti CHIAVE. ENTITÀ Le entità sono gli oggetti su cui vengono raccolte le informazioni. Un'entità del modello E-R rappresenta graficamente un concetto del mondo reale, come una persona o una macchina. Si dice istanza di un'entità un singolo oggetto descritto da quell'entità. RELAZIONI Una relazione rappresenta un'associazione tra una o più entità. Per esempio un'associazione può trovarsi tra Docente e Materia: un docente insegna una materia. Il Grado di una relazione rappresenta il numero di colonne prodotte, mentre la Cardinalità rappresenta il numero di righe. ATTRIBUTI Gli attributi descrivono le entità, per esempio il colore di un'auto o il nome di una persona. Un'istanza di un attributo è detto valore. Il dominio di un attributo è l'insieme di tutti i possibili valori che l'attributo può assumere. CHIAVE PRIMARIA Una chiave primaria è utilizzata per identificare univocamente un'istanza di un'entità (record). La chiave primaria può anche essere una chiave artificiale, ovvero un attributo che non descrive nulla della realtà, ma serve solo ad identificare il record. Una chiave composta è una chiave primaria formata da più di un attributo. CHIAVE ESTERNA Una chiave esterna è utilizzata per mettere in relazione due entità. La chiave esterna viene collegata alla chiave primaria dell’entità associata, creando così la relazione. IL PROGETTO DI UN DATABASE Il progetto di un database interessa dunque la stesura di un modello E-R, a cui segue quella di uno schema logico di descrizione delle entità, in particolare indicando nome, tipo, obbligatorietà e se l’attributo risulta essere o meno una chiave. Successivamente servendosi del linguaggio SQL si passa alla definizione delle relazioni della base di dati. REGOLE DI INTEGRITÀ INTEGRITÀ REFERENZIALE Per avere l'integrità referenziale, ogni collegamento tra tabelle deve avere senso ed essere coerente. Inoltre per ogni valore di chiave esterna deve esistere un valore di chiave primaria nella tabella associata. INTEGRITÀ DELL'ENTITÀ Per ogni istanza di entità, la chiave primaria deve esistere (quindi non deve essere null) e deve essere unica. Per evitare chiavi ripetute si può pensare di utilizzare un attributo che si incrementa automaticamente. OPERAZIONI RELAZIONALI PROIEZIONE L’operatore di proiezione recupera un sottoinsieme di colonne da una tabella. SELEZIONE L’operatore di selezione , a volte chiamato selezione ristretta per evitare la confusione con il comando SQL SELECT, recupera un sottoinsieme di righe da una tabella basandosi su una condizione imposta ai valori contenuti in una o più colonne. CONGIUNZIONE (JOIN) L’operazione di JOIN combina le operazioni di proiezione e di selezione. L’operatore JOIN esegue inizialmente una proiezione tra due tabelle, successivamente seleziona dalla tabella risultante le righe che soddisfano una determinata condizione tra le colonne della prima e della seconda tabella. IL LINGUAGGIO SQL I DBMS relazionali si servono del linguaggio SQL per effettuare tutte le operazioni precedentemente descritte su una base di dati. Si tratta di un linguaggio dichiarativo (non procedurale), ovvero non specifica la sequenza di operazioni da compiere per ottenere il risultato. Il linguaggio SQL, a sua volta, riunisce in sé funzionalità di DDL, DML, QL. DDL (Data Definition Language) è l’insieme di comandi dedicati alla definizione di dati e tabelle. Permette di definire schemi di relazioni (o tabelle), modificarli ed eliminarli. Permette, inoltre, di specificare vincoli, sia a livello di riga che a livello di tabella. DML (Data Manipulation Language) è l’insieme di comandi dedicati alla manipolazione di dati, include istruzioni per l’inserimento, la cancellazione e la modifica dei dati: INSERT che inserisce nuovi record; DELETE che cancella i record; UPDATE che modifica i campi appartenenti al record. QL (Query Language) permette le interrogazioni, o query, che sono la funzionalità principale di SQL. I dati estratti tramite le query possono essere: Valori singoli; Elenchi; Tabelle temporanee. LE CONGIUNZIONI JOIN Si definisce congiunzione o JOIN l’associazione tra un campo in una tabella o query e un campo dello stesso tipo di dati in un’altra tabella o query. Tipologie di JOIN: Inner join; Left join; Right join; Outer join; Full outer join. GLI OPERATORI AGGREGATI Nell’operazione di SELECT ci è permesso di aggregare particolari campi per ottenerne uno nuovo, attraverso gli operatori di raggruppamento o aggregati. AVG Esegue la media aritmetica del campo specificato. Sintassi: select avg(campo) COUNT Conta la righe del campo specificato. Sintassi: select count(campo) MAX Visualizza il valore massimo del campo specificato tra tutti i record. Sintassi: select max(campo) MIN Visualizza il valore minimo del campo specificato tra tutti i record. Sintassi: select min(campo) SUM Calcola la somma totale dei valori del campo specificato. Sintassi: select sum(campo) GROUP BY La clausola group by è necessaria per tutte le volte che si usano gli operatori aggregati. Serve per raggruppare e elaborare i dati su un attributo. HAVING Va incluso dopo group by, serve ad applicare un filtro sugli operatori aggregati. Sintassi completa: select avg(campo1) media from tabella 1 group by campo2 having media > 2 LA NORMALIZZAZIONE La normalizzazione è un processo che tende a eliminare la ridondanza dei dati e a migliorarne la loro consistenza e coerenza. Lo scopo della normalizzazione è di creare un insieme di tabelle che non contengano dati ridondanti e che possono essere modificati senza il rischio di perdere la coerenza dei dati contenuti. PRIMA FORMA NORMALE Una relazione di si dice in prima forma normale (1FN), se e solo se tutti i suoi attributi sono valori atomici. SECONDA FORMA NORMALE Una tabella in seconda forma normale è una tabella in 1FN in cui tutte le colonne non chiave sono dipendenti dall’intera chiave primaria. TERZA FORMA NORMALE Una tabella in terza forma normale richiede che la tabella sia già in 2FN e che tutte le colonne in una tabella relazionale siano dipendenti solo dalla chiave primaria. IL PHP E LA CONNESSIONE AL MYSQL Il PHP è un linguaggio di scripting lato server, appartiene alla categoria di linguaggi Open Source, la cui sintassi deriva direttamente dal linguaggio C. Il codice PHP può essere scritto in una pagina che contiene anche codice HTML. L’interprete PHP traduce il codice PHP in html, offrendo la possibilità ai programmatori di creare pagine web dinamiche. La funzione che consente di connettere uno script a un database MySQL è mysql_connect() che restituisce una variabile che rappresenta la connessione attiva. Al termine dello script bisogna lasciare la risorsa, per evitare problemi di sovraccarico al web server e la funzione preposta allo scopo è mysql_close(). Con la funzione mysql_select_db(), che restituisce true in caso di successo e false in caso di errore, viene selezionato il database per le operazioni successive. Si utilizzano le funzioni mysql_fetch_array() per ottenere il risultato della query eseguita con il comando mysql_query().