Basi di Dati e Sistemi Informativi Prepararsi all`esercitazione SQLite

Basi di Dati e Sistemi Informativi
Prima esercitazione – Sabato 22 febbraio 2014
Prepararsi all’esercitazione
Per poter effettuare l’esercitazione è necessario che siano installati Mozilla Firefox e SQLite Manager.

Mozilla Firefox: visita il sito di Mozilla (www.mozilla.com), scarica Firefox ed installalo

SQLite Manager: apri Firefox; apri il menu Firefox in alto a sinistra e seleziona Componenti
aggiuntivi; nella barra di ricerca in alto a destra scrivi SQLite Manager e seleziona Cerca in:
Componenti aggiuntivi disponibili. Seleziona SQLite Manager e fai clic su Installa.
SQLite e SQLite Manager: un’introduzione
Che cos’è SQLite
La possibilità di rappresentare i dati di interesse attraverso un database è molto utile non solo nel contesto
dei sistemi informativi di organizzazioni di grandi dimensioni, ma anche per applicazioni di interesse
personale. Consideriamo, ad esempio, un software di produttività personale quale una rubrica o un client di
posta elettronica: gli sviluppatori del software potrebbero decidere di memorizzare alcuni, o tutti i dati che
il programma si trova a gestire su un piccolo database. L’alternativa sarebbe rappresentare i dati di
interesse direttamente su un file, gestito dal software stesso, il che comporterebbe la necessità di
sviluppare tutto il codice necessario per rappresentare i dati e per effettuare le ricerche in modo efficiente.
Dunque in molti casi risulta vantaggioso l’impiego di un database.
Qui entra in gioco SQLite, un piccolo DBMS (sistema di gestione di basi di dati) offerto come libreria, cioè
come modulo software progettato per poter essere facilmente integrato all’interno di un programma. Una
libreria fornisce allo sviluppatore utili funzionalità. Che cosa offre SQLite? La possibilità di creare dei
database. Ogni database è memorizzato all’interno di un file. Il programma naturalmente deve “dialogare”
con SQLite per manipolare il database: gli può chiedere, ad esempio, di creare una tabella, inserire una
nuova riga, cercare dei dati. L’interazione tra il programma e SQLite avviene tramite il linguaggio SQL, il
linguaggio standard per la manipolazione di basi di dati. Il programma dà dei comandi a SQLite “parlando”
in linguaggio SQL, ed SQLite esegue servizievole.
Rispetto ad altri DBMS, SQLite ha dei limiti dovuti allo scopo con cui è stato progettato. Ad esempio, non è
adatto ad essere usato per creare basi di dati condivise da molti utenti, proprio perché “vive” all’interno di
applicazioni per uso personale. Inoltre, anche al fine di non appesantire troppo il programma ospitante,
SQLite non è pienamente conforme allo standard SQL; ne implementa comunque le funzionalità
maggiormente utilizzate.
Infine è bello poter sottolineare che SQLite è una libreria di pubblico dominio: chiunque ha la possibilità di
usarla all’interno dei propri programmi, e di apportare migliorie a questo utile DBMS.
SQLite Manager
SQLite è impiegato in un gran numero di programmi, sia liberi (open source) che commerciali. Un
programma che ne fa largo uso è il noto browser open source Mozilla Firefox. Ad esempio le seguenti
informazioni sono memorizzate in un database SQLite: la cronologia delle pagine web visitate; i siti
preferiti; le password salvate, ecc. Ogni qualvolta l’utente scrive una parte dell’indirizzo o del titolo del sito
che vuole visitare nella barra degli indirizzi, Firefox chiede a SQLite di cercare, tra i siti visitati e i preferiti,
tutti quelli che rispecchiano la ricerca dell’utente.
Ora, poiché il “motore” di SQLite è già presente in Firefox qualcuno ha avuto un’idea: perché non dotarlo di
un’interfaccia utente con cui l’utente possa manipolare (creare, aprire, visualizzare, modificare) i database?
Ecco l’origine di SQLite Manager: una estensione di Firefox che, sfruttando la presenza di SQLite nel
browser, ci offre una finestra per interagire direttamente con il database. In altre parole: normalmente
sono i programmi a dialogare con SQLite. Grazie a SQLite manager, lo possono fare anche gli utenti.
Concretamente, come vedremo, SQLite Manager offre una finestra che permette di aprire o creare un
database, visualizzare le tabelle ivi contenute, aprire una tabella per visualizzarne i dati, manipolare le
tabelle (ad esempio aggiungendo una colonna o inserendo dati), effettuare ricerche, e, soprattutto, dare
comandi direttamente a SQLite tramite il linguaggio SQL.
Creare un nuovo database
Impariamo ad eseguire il programma SQLite Manager:
1. Apri Mozilla Firefox
2. Esegui il comando Firefox -> Sviluppo web -> SQLite Manager per aprire la finestra di SQLite
Manager
Ora creiamo un nuovo database.
Nella finestra di SQLite Manager, seleziona il comando Database -> Nuovo Database; chiama il database
rubrica e salvalo sul Desktop o in un altro percorso a tua scelta.
Creiamo due tabelle: Amici e Telefoni. Useremo la creazione guidata di SQLite Manager per la prima,
mentre per creare la seconda tabella daremo direttamente un comando SQL a SQLite.
Iniziamo da Amici. Dai il comando Table -> Create Table. Dentro Table Name inserisci Amici, e poi riempi le
colonne in questo modo (Column name e Data Type, aggiungendo a mano il numero tra parentesi nel Data
Type):
1. codice_fiscale - VARCHAR(20) – Primary key: yes
2. cognome – VARCHAR(30)
3. nome – VARCHAR(30)
Premi il tasto OK. SQLite Manager genera automaticamente il codice SQL necessario a creare la tabella
Amici, e ce lo mostra:
CREATE TABLE "main"."Amici" ("codice_fiscale" VARCHAR(20) PRIMARY
KEY NOT NULL , "cognome" VARCHAR(30), "nome" VARCHAR(30))
Confermiamo, e la tabella apparirà nell’elenco a sinistra!
Ora creiamo “a mano” la tabella Telefoni. Nel riquadro destro dello schermo, selezioniamo la scheda
Execute SQL, che ci permette di inviare un comando SQL direttamente al DBMS, ed inseriamo il seguente
comando nella casella Enter SQL:
create table Telefoni(
codice_fiscale VARCHAR(20) not null,
telefono VARCHAR(10) not null
)
Premiamo il bottone OK e, se non abbiamo fatto errori, la tabella Telefoni apparirà nel riquadro a sinistra.
Inserire tuple (righe) nel database
Inseriamo ora alcuni dati nelle tabelle. Come in precedenza, per inserire alcuni dati useremo l’interfaccia di
SQLite Manager; per inserirne altri daremo comandi SQL.
Selezioniamo la tabella Amici e, nella scheda Browse & Search, premiamo il bottone Add. Inseriamo i
seguenti dati:

codice_fiscale: RSSMRA

cognome: Rossi

nome: Mario
Come prima, SQLite Manager ci propone del codice SQL (un po’ curioso per la verità), che noi faremo
eseguire premendo OK. Nella tabella apparirà una riga. Chiudiamo la finestra di inserimento righe.
Ora aggiungiamo un’altra riga tramite SQL. Selezioniamo la scheda Execute SQL e diamo il seguente
comando:
insert into Amici(codice_fiscale, cognome, nome)
values ('NSTLBR', 'Einstein', 'Albert')
Dopo aver eseguito il comando, torniamo nella scheda Browse & Search per verificare che la riga sia stata
effettivamente inserita.
Esercizi
Inserimento righe
Aggiungere alla tabella Telefoni alcune righe. Aggiungere la prima usando la finestra di inserimento righe, le
altre usando comandi SQL. Le righe da aggiungere sono:
1. codice_fiscale: RSSMRA, telefono: 0637892765
2. codice_fiscale: RSSMRA, telefono: 3389103776
3. codice_fiscale: NSTLBR, telefono: 00101010101
Creazione di altri database
Creare un database Universita con le seguenti tabelle, di cui elenchiamo nome ed attributi. Per ogni
attributo, decidere il tipo di dato da usare. Provare ad usare sia l’interfaccia di SQLite Manager che i
comandi SQL:

Studenti(matricola, cognome, nome)

Corsi(nome_corso, cognome_docente, nome_docente, crediti)

Esami(matricola_studente, corso, voto)
Facoltativo: creare un database RegistroAuto per rappresentare automobili (con targa, marca e modello) e
i loro proprietari (con codice fiscale, cognome e nome).
Curiosità: esplorare un database di Firefox con SQLite Manager
Abbiamo detto che molti programmi, tra cui Firefox, usano SQLite (o altri DBMS) per memorizzare alcuni
dati dell’utente. Curiosiamo dunque in uno dei database usati da Firefox. Essi sono memorizzati in un’area
nascosta del sistema, che contiene le impostazioni dell’utente. Prima di tutto occorre individuare il nome
dell’utente:
1. In SQLite Manager, esegui il comando Database -> Connetti ad un database
2. Nella finestra di apertura file, in Nome file inserisci il percorso C:\Users e premi Invio. Annota il
nome dell’utente con cui usi Windows (per gli utenti di Windows XP, il percorso da inserire è
C:\Documents and Settings)
3. Ora, nella stessa finestra, in Nome file inserisci questo percorso:
C:\Users\NomeUtente\AppData\Roaming\Mozilla\Firefox\Profiles e premi invio; entra nella
directory corrispondente al profilo.
4. Nella directory troverai i database di Firefox. Aprine uno, ad esempio places.sqlite, il database che
raccoglie informazioni sui siti visitati dall’utente.
Nel riquadro a sinistra possiamo vedere le tabelle che costituiscono il database. Facciamo clic, ad esempio,
sulla tabella moz_places. Nel riquadro a destra selezioniamo la scheda Browse & Search: potremo visionare
il contenuto della tabella. Facendo clic sull’intestazione della colonna visit_count ordineremo la tabella per
numero di visite, potendo così determinare quale sito abbiamo visionato più volte.