Basi di dati in generale. Avvio/Chiusura di MySQL

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