BASI DI DATI - MySql Docente: Mario Di Ture Centro di Ateneo per i Servizi Informatici Università degli Studi di Cassino CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 1 Prodotti di riferimento In questo corso utilizzeremo i seguenti prodotti in ambiente Windows: MySQL Server 4.1.8 MySQL Query Browser 1.1.13 PHP 5.0.4 phpMyAdmin 2.6.2 CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 2 Cos’è un database Un database è un insieme di informazioni correlate a un oggetto o a uno scopo particolare. In un database i dati sono memorizzati in tabelle, costituite da righe e colonne MySql è un RDBMS (Relational DataBase Management System) che gestisce tutte le informazioni in più file di database, all'interno dei quali sono disponibili diversi oggetti utili a tale scopo: tabelle, indici ecc. CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 3 Il modello relazionale - 1 E’ il modello organizzativo dei database più diffuso. In base a tale modello: Un database è un insieme di tabelle in relazione tra loro Ciascuna tabella è un insieme di tuple (anche righe o records) Ciascuna tupla (riga) è una sequenza di attributi (anche colonne o campi) L’attributo (colonna) è l’unità elementare di informazione, contraddistinto dal dominio, cioè dall’insieme predefinito di valori che può assumere CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 4 Il modello relazionale - 2 Esemplificando, vediamo le caratteristiche definite nella diapositiva precedente in riferimento alla relazione (tabella) ‘film’ disponibili in una videoteca: Film Codice Titolo Regista Attore protagonista Anno di produzione Supporto Prestito … 1 Roma città aperta Roberto Rossellini Anna Magnani 1945 DVD Rossi P. … 2 Jurassic Park Steven Spielberg Sam Neill 1993 Cassetta (VHS) Verdi G. … … … … … … … … Tupla (riga,record) Attributo (colonna, campo) Il Dominio è costituito dai valori che ‘supporto’ può assumere, cioè DVD e cassetta (VHS) CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 5 Tabella Excel e tabella MySql Una tabella è costituita da righe e colonne, come in un foglio elettronico. Molte volte le righe vengono chiamate ‘record’, le colonne ‘campi’. In questo foglio abbiamo una riga per ogni attore ed una colonna per gli ‘attributi’ associati. CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 6 Progettazione di un database 1 – Definiamo lo scopo e le modalità di utilizzo del database tramite: La valutazione delle esigenze degli utenti La raccolta della modulistica in uso 2 – Ogni tabella contiene informazioni relative ad uno stesso argomento. Procediamo, quindi, alla definizione delle tabelle necessarie e alle colonne da cui sono formate 3 – Individuiamo, tra le colonne di ogni tabella, quale contiene un dato univoco sempre valorizzato per ogni riga, ad es. il codice in una tabella ‘attori’, questa colonna viene detta ‘chiave primaria’ 4 – Impostiamo le relazioni tra le varie tabelle, basandoci sulla chiave primaria come sopra definita CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 7 Il linguaggio SQL Il linguaggio SQL (Structured Query Language) viene usato per definire le tabelle, per vederne e manipolarne i dati contenuti. Le istruzioni SQL possono essere costruite manualmente o col supporto degli strumenti visuali. CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 8 Un semplice database per archiviare i film presenti in una videoteca Per costruire il database abbiamo bisogno di almeno tre tabelle: Film – Registi - Attori. Nella tabella ‘Film’ inseriremo il titolo e altri dati, mentre la tabella ‘Registi’ potrebbe sembrare superflua ma, a seguito di un processo detto di ‘normalizzazione’, questa viene derivata come segue: FILM (dopo la normalizzazione) codice FILM (originaria) codice titolo regista anno … 1 Roma città … 1 1945 … … 2 Jurassic Park 2 1993 … … … … … … Roma città aperta R. Rossellini 1945 … 2 Jurassic Park S. Spielberg 1993 … … … … ... codice regista anno 1 … titolo REGISTI (nuova tabella) codice_regista CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 nome 1 Roberto Rossellini 2 Steven Spielberg 9 Perché normalizzare ? I motivi sono diversi, quelli principali sono: Ripetizione di dati Non normalizzando, devo inserire nome e cognome completi del regista per ogni film diretto (con la possibilità di commettere errori di digitazione), al posto di inserire il solo codice; non aumenterei la quantità di dati significativi e, in conclusione, occuperei anche più memoria. Anomalie di aggiornamento Se devo correggere il nome di un regista, posso cambiare il dato su una sola riga nella tabella ‘registi’, anziché su tutte le righe della tabella ‘film’ (se non la normalizzo) dove il regista compare. CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 10 Le prime tre forme normali NF = Normal Form (Definizioni) 1NF Uno schema è in 1NF se e solo se ogni attributo ha un valore atomico, non ulteriormente scomponibile. 2NF Uno schema è in 2NF se e solo se ogni attributo non chiave primaria dipende completamente dalla chiave primaria. 3NF Uno schema T è in 3NF se e solo se ogni attributo non chiave primaria non dipende transitivamente dalla chiave. CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 11 Le proprietà ACID Una transazione è insieme di operazioni elementari sui dati per l’esecuzione di una determinata funzione. Le proprietà ACID delle transazioni di un RDBMS consentono una condivisione sicura dei dati e sono: Atomicità: o vengono eseguite tutte le operazioni elementari o Consistenza: una transazione viene avviata e deve terminare con nessuna uno stato dei dati consistente, cioè che non viola le regole di integrità dei dati Isolamento: gli effetti di più transazioni simultanee non sono visibili a ciascuna singola transazione, e divengono manifesti solo dopo che una transazione si è conclusa con successo Durabilità: (o persistenza) una volta che una transazione è stata eseguita con successo gli effetti sono permanenti CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 12 Il prompt dei comandi di MySql (shell) MySQL è un sistema client-server. Il server gestisce i dati tramite comandi SQL, per potersi collegare al server e impartire ad esso dei comandi, è necessario un programma client. Il più utilizzato è il prompt dei comandi di MySQL, inoltre funziona sostanzialmente allo stesso modo su tutte le piattaforme (Linux, Windows, Unix …). RDBMS MySql Server MySql Client Numero di film archiviati ? 2.500 CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 13 Avvio e chiusura di MySql (I) Dopo aver installato il server MySql per Windows, esaminiamo i comandi per avviare ed arrestare il relativo processo. In genere a fine installazione il server viene avviato automaticamente. I comandi per la gestione del server variano a seconda del tipo di installazione. Se MySql è stato installato come servizio di Windows (raccomandato), i comandi sono i seguenti (oltre alla esecuzione dal pannello dei Servizi di Windows): Arresto: C:\>NET STOP MySQL Avvio: C:\>NET START MySQL Il comando NET si trova nella cartella di sistema system32 CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 14 Avvio e chiusura di MySql (II) Se MySql è stato installato per una gestione da riga di comando (non come servizio), i comandi sono i seguenti: Arresto: mysqladmin -u root -p shutdown Avvio: mysqld-nt --defaults-file= "C:\Programmi\MySQL\MySQL Server 4.1\my.ini" Dove: -u: è l’opzione per specificare il nome dell’utente (in questo caso ‘root’, cioè l’amministratore); -p: è l’opzione che permette l’inserimento della password; --defaults-file: permette di specificare il percorso del file di configurazione del database. CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 15 Il prompt dei comandi di MySql Il prompt dei comandi può essere lanciato in due modi. 1 - Attraverso il menu dei Programmi di Windows: START > Tutti i programmi > MySQL Server 4 > MySQL Command Line Client 2 - Attraverso il prompt dei comandi di Windows: START > Tutti i programmi > Accessori > Prompt dei comandi ed eseguendo i due comandi: cd C:\Programmi\MySQL\MySQL Server 4.1\bin mysql -u root -p -h pc_docente (-h per indicare il nome del sever) CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 16 Test di MySql E’ possibile testare se il server è attivo eseguendo alcuni comandi (che terminano con ;) dal prompt di MySQL: mysql> SHOW DATABASES; (Invio) mostra i database creati mysql> USE MYSQL; (Invio) seleziona il database di default mysql> SHOW TABLES; (Invio) mostra le tabelle del database di default mysql> SHOW PROCESSLIST ; (Invio) mostra la lista degli utenti collegati CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 1 - Novembre 2005 17