DATABASE PER IL WEB Programmazione Web 1
Archite3ura web con database Client Tier Web/App Tier DB Tier Client Web / App Server Database Il server web comunica con un altro server che con8ene il la banca da8 la comunicazione usa dei protocolli specifici Programmazione Web 2
Database Database o base di da8 : sia collezione di da8 sia database management system (DBMS): Programma standalone per la ges8one di collezioni di da8 MySQL, PostgreSQL, Oracle DB, CouchDB Libreria all'interno di un programma SQLite, BerkleyDB Tipi di database: Relazionali A ogger No-SQL (Not Only SQL) Programmazione Web 3
Trend Database hwp://db-engines.com/en/ranking Programmazione Web 4
Database relazionali Da8 raccol8 in tabelle non ordinate: relazioni colonne: campi, awribu8, fields righe: tuple, records Utenti (CF, nome, cognome) CF nome cognome BNCFR... Franco Bianchi VRDGS... Giuseppe RSSMR... Mario Verdi Rossi Prestiti (utente, libro, dataprestito, datarestituzione) Libri (ISBN, autore, titolo) ISBN autore titolo 111111111 Caroll Alice in W 22222222 Tanenbaum Reti di Calc 33333333 AA. VV. Lonely Plan 44444444 Hofstadter GEB-EGB utente libro dataprestito datarestituzione RSSMR... 22222222 12/12/2012 - VRDGS... 44444444 01/10/2011 11/11/2011 Programmazione Web 5
Vincoli di integrità Evitano che vengano inserite informazioni "non possibili" Esistono da8 che sono sintarcamente correr ma non rappresentano informazioni possibili per l applicazione di interesse Vincoli di dominio 8po di dato ammesso per un campo Vincoli di chiavi primarie Insieme di awribu8 che iden8ficano univocamente le tuple di una relazione Vincoli di tupla relazioni interne fra i da8 Vincoli di integrità referenziale Fanno riferimento a chiavi primarie su altre relazioni SoddisfaR se valore esiste nell'altra relazione Programmazione Web 6
Vincoli di dominio Tipi di dato che uso per le diverse colonne ES: range di interi o di date ES: insieme di valori, o di stringhe ES: Il codice fiscale ha il suo formato Utenti (CF, nome, cognome) CF nome cognome BNCFR... Franco Bianchi VRDGS... Giuseppe RSSMR... Mario Verdi Rossi Libri (ISBN, autore, titolo) ISBN autore titolo 111111111 Caroll Alice in W 22222222 Tanenbaum Reti di Calc 33333333 AA. VV. Lonely Plan 44444444 Hofstadter GEB-EGB Prestiti (utente, libro, dataprestito, datarestituzione) utente libro dataprestito datarestituzione RSSMR... 22222222 12/12/2012 - VRDGS... 44444444 01/10/2011 11/11/2011 Programmazione Web 7
Chiavi Primarie Insieme di awribu8 che iden8ficano univocamente le tuple di una relazione Almeno una per ogni relazione Possono essere definite su più awribu8 Se non esiste una chiave, va definita (es. valore incrementale) Utenti (CF, nome, cognome) CF nome cognome BNCFR... Franco Bianchi VRDGS... Giuseppe RSSMR... Mario Verdi Rossi Prestiti (utente, libro, dataprestito, datarestituzione) Libri (ISBN, autore, titolo) ISBN autore titolo 111111111 Caroll Alice in W 22222222 Tanenbaum Reti di Calc 33333333 AA. VV. Lonely Plan 44444444 Hofstadter GEB-EGB utente libro dataprestito datarestituzione RSSMR... 22222222 12/12/2012 - VRDGS... 44444444 01/10/2011 11/11/2011 Programmazione Web 8
Vincoli di tupla datapres8to < datares8tuzione Utenti (CF, nome, cognome) CF nome cognome BNCFR... Franco Bianchi VRDGS... Giuseppe Verdi RSSMR... Mario Rossi Libri (ISBN, autore, titolo) ISBN autore titolo 111111111 Caroll Alice in W 22222222 Tanenbaum Reti di Calc 33333333 AA. VV. Lonely Plan 44444444 Hofstadter GEB-EGB Prestiti (utente, libro, dataprestito, datarestituzione) utente libro dataprestito datarestituzione RSSMR... 22222222 12/12/2012 - VRDGS... 44444444 01/10/2011 11/11/2011 Programmazione Web 9
Vincoli di integrità referenziale Fanno riferimento a chiavi primarie su altre relazioni SoddisfaR se valore esiste nell'altra relazione Libri (ISBN, autore, titolo) Utenti (CF, nome, cognome) ISBN autore titolo CF nome cognome 111111111 Caroll Alice in W BNCFR... Franco Bianchi 22222222 Tanenbaum Reti di Calc VRDGS... Giuseppe Verdi RSSMR... Mario Rossi 33333333 AA. VV. Lonely Plan 44444444 Hofstadter GEB-EGB Devono esistere Prestiti (utente, libro, dataprestito, datarestituzione) utente libro dataprestito datarestituzione RSSMR... 22222222 12/12/2012 - VRDGS... 44444444 01/10/2011 11/11/2011 Programmazione Web 10
Ambiente di Lavoro MYSQL un DBMS che useremo nelle esercitazioni ci si interagisce a linea di comando su una shell oppure via rete con protocollo proprietario il server risponde su porta 3306 di default ha il concewo di utente, password e permessi amministratore di default: root phpmyadmin una serie di script per interagire con mysql da una pagina web comunica con mysql via rete Programmazione Web 11
Programmazione Web 12
SQL 2 pronunce, entrambe valide Linguaggio di programmazione per la ges8one di basi di da8 Standard ma non molto interoperabile Case insensi8ve Programmazione Web 13
Sintassi Sequenza di instruzioni separa8 da ; Principali comandi SELECT - extracts data from a database UPDATE - updates data in a database DELETE - deletes data from a database INSERT INTO - inserts new data into a database CREATE DATABASE - creates a new database ALTER DATABASE - modifies a database CREATE TABLE - creates a new table ALTER TABLE - modifies a table DROP TABLE - deletes a table CREATE INDEX - creates an index (search key) DROP INDEX - deletes an index Programmazione Web 14
SELECT Seleziona una matrice di da8 da un database Il risultato è posto in una tabella dewa result-set Sintassi 1. 2. Programmazione Web 15
Esempio Northwind sample database Programmazione Web 16
SELECT DISTINCT Res8tuisce dei da8 diversi fra loro Sintassi Esempio Programmazione Web 17
WHERE Serve a selezionare le tuple secondo un certo criterio ESEMPI Programmazione Web 18
INSERT INTO Inserisce una tupla di valori in una tabella Sintassi Esempi Programmazione Web 19
UPDATE Aggiorna dei record Sintassi Esempio Warning Programmazione Web 20
DELETE Cancellare dei record Sintassi Esempio Programmazione Web 21
Programmazione Web 22
Operatori = Equal <> Not equal. Note: In some versions of SQL this operator may be wriwen as!= > Greater than < Less than >= Greater than or equal <= Less than or equal BETWEEN Between an inclusive range LIKE Search for a pawern IN To specify mul8ple possible values for a column Programmazione Web 23
AND e OR AND logico tra due condizioni della WHERE OR logico tra due condizioni della WHERE Espressioni complesse Programmazione Web 24
ORDER BY Ordina i risulta8 nel Result set Esempio Programmazione Web 25
LIMIT Limita il numero dei risulta8 Esempio (5 tuple) Programmazione Web 26
LIKE Cercare con dei pawern Sintassi Esempi Programmazione Web 27
Wildcard % - A subs8tute for zero or more characters _ - A subs8tute for a single character [charlist] - Sets and ranges of characters to match [!charlist] - Matches only a character NOT specified within the brackets Esempi Programmazione Web 28
BETWEEN Seleziona dei range numerici, testo o data Esempi Programmazione Web 29
IN Specifica liste di valori per la clausola WHERE Esempio Programmazione Web 30
ALIAS Posso definire dei nomi temporanei nell'istruzione per colonne o tabelle Programmazione Web 31
INNER JOIN Combinare tuple di tabelle diverse Programmazione Web 32
INNER JOIN Combinare tuple di tabelle diverse Programmazione Web 33
INNER JOIN Combinare tuple di tabelle diverse Programmazione Web 34
Altre Istruzioni Programmazione Web 35