I.I.S. ‘’G. COSSALI’’ - ORZINUOVI
DATABASE
Marzo 2017
Prof. Dario Tomasoni
1
IMPOSTAZIONE
60 min = Database concetti + Esercizi;
10 min = pausa;
30 min = Linguaggio SQL;
30 min = Database prove LibreOffice Base;
10 min = pausa;
30 min = SQLite + SQLiteBrowser;
2
DATABASE
• Database = un contenitore di dati organizzati
secondo una logica, che possono essere inseriti,
eliminati, aggiornati, estratti in modo veloce,
efficiente e sicuro;
• Sono dappertutto: biblioteche, uffici, enti pubblici,
ospedali, banche, questure, ferrovie, aeroporti, ecc …
ovunque ci siano dati da memorizzare.
3
DBMS
• DBMS = (Data Base Management System) è il
software che permette di gestire il database. E’ il
gestore del database. E’ un software che si interpone
tra il contenitore di dati e l’applicazione (o le
applicazioni) che vogliono accedere (anche
simultaneamente) ai dati:
– il bibliotecario nella biblioteca;
– Il cancelliere nel tribunale;
– L’archivista per un archivio;
4
LOCALI Vs. DI RETE
• LOCALE: memorizzato sullo stesso dispositivo nel
quale sono installate le applicazioni che lo usano;
• DI RETE: memorizzato su un Server, al quale si
accede attraverso una rete da un Client nel quale
sono installate le applicazioni che lo usano;
5
DBMS ESEMPI
https://it.wikipedia.org/wiki/Database_management_system#Database_management_system_.28DBMS.29
•
•
•
•
•
•
Microsoft Access (locale)
LibreOffice Base (locale)
Microsoft SQL Server (di rete)
MySQL (di rete)
SQLite (locale Android)
… e altri 1.000 (FireBird, MongoDB, ecc)
6
SQL
• SQL = (Structured Query Language) è il linguaggio con il quale
è necessario ‘’parlare’’ al DBMS per gestire un database;
• Ha un fondamento matematico preciso (Algebra Relazionale
di Codd), che non vedremo perché non me la ricordo …
• Il senso è il seguente: ogni operazione che un’applicazione
vuole fare su dei dati deve passare attraverso un DBMS. Per
spiegare al DBMS cosa deve fare sui dati nel database
(inserire, cancellare, aggiornare, ecc) devo inviare alcuni
comandi con una sintassi apposita e parole chiave apposite.
… lo vediamo più avanti.
7
STRUTTURA DI UN DATABASE
• Un database prima di essere scritto e utilizzato deve
essere pensato.
• Il metodo principale (peraltro unico che mi ricordo)
per definire un database è utilizzare il ‘’Modello ER’’.
• Bisogna fare il seguente ragionamento: Un database
è un contenitore di dati di una certa realtà:
– Su cosa mi interessa raccogliere i dati?
– Quali dati nello specifico mi interessa raccogliere?
– Che tipo di dati sono quelli che mi interessano?
8
ENTITA’
• Su cosa mi interessa raccogliere i dati?
La risposta alla domanda permette di trovare le entità di una
database: gli ‘’oggetti’’ che compongono la mia realtà.
Esempi:
REALTA’
ENTITA’
Scuola
Studenti, Docenti, Personale, Voti, Attrezzature, ecc
Supermercato
Prodotti, Scaffali, Attrezzature, Personale, Clienti, Fornitori, ecc
Ditta
Clienti, Fornitori, Personale, Commesse, Fatture, Pagamenti,
Banche, Cantieri, ecc
9
ATTRIBUTI
• Quali dati nello specifico mi interessa raccogliere?
La risposta alla domanda permette di trovare gli attributi (o
campi) di una entità: le singole informazioni possono
caratterizzare un oggetto.
Esempi:
ENTITA’
ATTRIBUTI
Studente
Nome, Cognome, Cod.Fisc, DataDiNascita, Nazionalità, ecc
Cliente
Denominazione, Telefono, Mail, PEC, Indirizzo, ecc
Fattura
Data, Importo, %Iva, Scadenza, Stato, ecc
10
TIPI DI DATI
• Che tipo di dati sono quelli che mi interessano?
La risposta alla domanda permette di trovare il tipo di dato da
associare all’attributo.
Esempi:
ATTRIBUTO
TIPO DI DATO
Nome
Testo
AnnidiEsperienza
Intero
DataDiNascita
Data
11
A LATO PRATICO
• Una volta individuate le entità, gli attributi e il tipo di
dato, capita la logica, si può passare all’aspetto
pratico;
• Ogni entità diventa una TABELLA da compilare, dove
ogni attributo corrisponde ad una COLONNA della
tabella e le istanze della entità corrispondono alle
RIGHE.
• Le istanze sono meglio conosciute come i RECORD
12
ESEMPIO RUBRICA
ID
NOME
INDIRIZZO
TELEFONO
1
Verardi Andonio
Via Saluta, 83
030 941027
2
Tomasoni Dario
Via Vai, 1984
030 030030
3
Pallino Pinco
Via Tizio, 00
030123456
13
CHIAVI
• CHIAVE PRIMARIA: è un campo/attributo necessario
in ogni entità che serve per identificare (e dunque
poter
ricercare,
cancellare,
modificare)
univocamente un record all’interno di una tabella.
NON possono esistere due chiavi primarie con lo
stesso valore nella stessa tabella
ESEMPI
– Numero di matricola;
– Numero della carta di credito;
– Nome utente;
14
ESERCIZI
• Database della scuola (almeno 4 entità, 3 attributi
per entità)
• Database di una biblioteca (almeno 4 entità, 3
attributi per entità)
• Database di un negozio di tatuaggi (almeno 4 entità,
3 attributi per entità)
• Database di un orto (almeno 4 entità, 3 attributi per
entità)
15
SQL 1
• E’ il linguaggio presente in ogni database ed è utilizzato sia per
lavorare sulla struttura (creare, modificare, eliminare tabelle e
database) sia per operare sui dati (inserire, modificare,
cancellare record)
Vedremo come:
–
–
–
–
–
–
Creare una tabella
Inserire un record
Selezionare uno o più record
Modificare una tabella
Aggiornare un record
Eliminare un record
16
SQL 2
CREATE TABLE
campo1
campo2
campo3
);
tabella1 (
INTEGER PRIMARY KEY AUTOINCREMENT,
TEXT NOT NULL,
TEXT NOT NULL
Crea una entità/tabella di nome ‘’tabella’’ nella quale
sono con predisposti 3 campi: il ‘’campo1’’ che è la
chiave primaria, numero intero e che si autoincrementa
da sola, il ‘’campo2’’ che è un testo che deve essere
compilato per forza, e il ‘’campo3’’ che è un testo che
deve essere compilato per forza.
17
SQL 3
INSERT INTO tabella1 (campo1,campo2,campo2)
VALUES (
NULL,
‘dato2’,
‘dato3’
);
Inserisco nella ‘’tabella1’’ rispettivamente nei campi
‘’campo1’’, ‘’campo2’’, ‘’campo3’’ i valori ‘’NULL’’ (in
quanto si autoincrementa da sola), ‘dato2’ e ‘dato3’
18
SQL 4
SELECT * FROM tabella1;
Mostra tutte le colonne della ‘’tabella1’’
SELECT campo1,campo2 FROM tabella1 ORDER BY campo1;
Mostra le colonne ‘’campo1’’ e ‘’campo2’’ della
‘’tabella1’’ ordinandole secondo il valore di ‘’campo1’’
SELECT * FROM tabella1 WHERE campo1=3;
Mostra tutte le colonne della ‘’tabella1’’ a condizione
che il ‘’campo1’’ sia uguale a 3
19
SQL 5
ALTER TABLE tabella1 ADD COLUMN campo4 INTEGER;
Modifica la struttura della ‘’tabella1’’, aggiungendo un
nuovo ‘’campo4’’ di tipo intero;
UPDATE tabella1 SET campo4=3 WHERE campo1=2;
UPDATE tabella1 SET campo4=3;
Inserisce il valore 3 nel ‘’campo4’’, nel primo caso solo
nei record il cui ‘’campo1’’ è uguale a 2, nel secondo
caso in tutti i record
20
SQL 6
DELETE FROM tabella1 WHERE campo1=2;
Elimina dalla ‘’tabella1’’ il record il cui ‘’campo1’’ è
uguale a 2;
SELECT campo1,campo1 FROM tabella1,tabella2
WHERE tabella1.chiavesec1=tabella2.chiaveprim;
Mostra il ‘’campo1’’ della ‘’tabella1’’ e il ‘’campo1’’
della ‘’tabella2’’ a patto che il valore dell’attributo
‘’chiavesec1’’ della ‘’tabella1’’ sia uguale al valore del
campo ‘’chiaveprim’’ (nonché chiave primaria) della
‘’tabella2’’ (concetto di relazione).
21
SQLite TUTORIAL
NO PANIC!!!
Nella maggior parte dei casi si può utilizzare la strategia
di compilare un database attraverso un interfaccia
grafica. Impostare le ricerche in modo grafico e
copiarne il corrispettivo codice SQL.
https://www.tutorialspoint.com/sqlite/
22
ESERCIZI LIBREOFFICE BASE
• Implementare il Database della scuola (almeno 4
entità, 3 attributi per entità) utilizzando LibreOffice
Base.
• Provare a creare delle query (riceche) attraverso
l’interfaccia grafica e a visualizzare il relativo codice
SQL autocompilato;
• Spaciugare …
23
ESERCIZI SQLite BROWSER
• Installare SQLite Browser
• Reimplementare il Database della scuola (almeno 4
entità, 3 attributi per entità) salvandolo nel formato
*.db.
• Spaciugare …
24