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