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 E- R. 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 Scuola Supermercato Ditta ENTITA Studenti, Docenti, Personale, Voti, Attrezzature, ecc Prodotti, Scaffali, Attrezzature, Personale, Clienti, Fornitori, ecc 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 Studente Cliente Fattura ATTRIBUTI Nome, Cognome, Cod.Fisc, DataDiNascita, Nazionalità, ecc Denominazione, Telefono, Mail, PEC, Indirizzo, ecc 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 Nome AnnidiEsperienza DataDiNascita TIPO DI DATO Testo Intero 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 tabella1 ( campo1 INTEGER PRIMARY KEY AUTOINCREMENT, campo2 TEXT NOT NULL, campo3 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