Le basi di dati - Dipartimento di Scienze Ambientali, Informatica e

Facoltà di Pianificazione del Territorio
A.A. 2011/2012
Informatica
Le basi di dati
2
Dati e Informazioni
l 
Un dato in sé non costituisce un’informazione in
quanto consiste semplicemente di un insieme di
simboli; ad es., la sequenza di caratteri Mario Bianchi
e le cifre 06 658976 non hanno un significato
intrinseco.
l 
Quando un dato viene interpretato come risultato di
un’interrogazione (e.g., “chi è il direttore della
biblioteca e qual è il suo numero telefonico?”) diventa
informazione.
l 
Quindi il significato (il contenuto) di un dato è solo in
relazione ad una domanda
3
Introduzione alle basi di dati
l 
La raccolta, l’archiviazione e la manipolazione di dati sono
operazioni ricorrenti in molte attività (e.g., conti bancari, elenchi
telefonici, elenchi degli iscritti ad un corso di laurea ecc.).
l 
Tali attività possono prescindere dall’uso del computer; tuttavia
questi ultimi garantiscono una memorizzazione ed un trattamento
dei dati stabili ed efficienti.
l  Esempio eclatante: cataloghi bibliotecari, dove si usavano (e si
usano ancora) le schede in cartoncino
l 
Sempre più necessario: collegamento tra informazioni diverse (i
così detti “controlli incrociati”)
l 
I DataBase Management System (DBMS) sono le applicazioni per
questo trattamento dei dati
4
L’accesso tradizionale ai dati
l 
Fino agli anni ‘60: non esistevano software specifici per la gestione
dei dati, che venivano memorizzati in file e manipolati per mezzo di
linguaggi di programmazione tradizionali.
l 
L’organizzazione dei dati per mezzo di file comporta dei problemi
di condivisione quando più utenti devono lavorare sugli stessi
dati.
l 
Inoltre l’autonomia delle singole procedure operanti sui file,
comporta la duplicazione di questi ultimi con la conseguente
problematica di garantire la consistenza dei dati (e.g., date due
copie di uno stesso file, quale è da ritenersi valida?).
l 
I DBMS mirano a risolvere questi problemi, in modo efficiente e
generale
5
Consistenza e concorrenza
6
Caratteristiche dei DataBase e dei
DataBase Management Systems
l 
Un database può contenere una grande quantità di dati; per questo
utilizza principalmente la memoria secondaria di un computer.
l 
I database sono condivisi: essi garantiscono l’accesso a più
applicazioni ed utenti contemporaneamente.
l 
La memorizzazione dei dati in un database è permanente: i
database sono persistenti.
l 
I DBMS sono affidabili; essi assicurano che i dati non andranno persi
oppure che potranno essere recuperati, in caso di problemi hardware
o software, tramite meccanismi di backup e/o data recovery.
l 
I DBMS sono efficienti: svolgono il loro compito utilizzando al meglio
le risorse del sistema.
7
Caratteristiche dei DataBase e dei
DataBase Management Systems
Un buon sistema di gestione di grandi quantità di dati deve tenere conto e
risolvere una serie di problematiche:
l 
Privilegi d’uso: L’accesso ai dati e la loro manipolazione sono regolati da
privilegi d’uso. Tramite un meccanismo di autenticazione i DBMS
assicurano la privacy dei dati: ogni utente è in grado di accedere
soltanto ai dati che gli competono.
l 
Automatismi: Il sistema esegue delle operazioni senza esplicita richiesta
(es: inviare un sollecito per la restituzione del prestito tramite e-mail).
l 
Migrazioni: È possibile modificare i programmi per la gestione degli
archivi senza alterare la fruibilità dei dati.
l 
Coordinazione: I DBMS aiutano a tenere sotto controllo la coordinazione
delle azioni di più utenti sui file di dati risolvendo il problema
dell inconsistenza dei dati e il problema della concorrenza.
8
Caratteristiche dei DBMS
l 
I DBMS sono prodotti costosi e complessi la cui
introduzione in una realtà esistente può comportare
notevoli investimenti in termini di hardware, software ed
addestramento di personale.
l 
Però i DBMS permettono di incrementare la produttività
degli utenti che li utilizzano, a lungo termine.
9
Possibili problemi


Rischio di ridondanza: informazioni ripetute
Rischio di incoerenza: le due versioni possono non coincidere
Archivi e Basi di Dati
I 3 livelli di astrazione di un DB
Realtà
Modello
Concettuale
Modello
Logico
Modello
Fisico
ricerca, all'interno della descrizione del problema, dei termini
piu' significativi, con gli eventuali sinonimi, che indicano quali
sono i contenuti del database che si vuole costruire. È utile
scrivere questi termini e spiegare il loro significato, come in
una specie di vocabolario. Al termine di questa fase viene
prodotto uno schema chiamato Schema Entità-Relazioni che
rappresenta in forma grafica i collegamenti tra gli oggetti
astratti individuati.
Partendo dallo schema E-R si crea un altro schema che spiega
concretamente come realizzare il vero e proprio database cioè
gli archivi e i collegamenti tra gli archivi.
Il modello fisico è ottenuto dall’implementazione, attraverso
opportuni software, degli archivi e delle modalità di
accesso.
Indipendenza Fisica e Logica
L’utilizzo dei Data Base offre un vantaggio quale l’indipendenza dei dati
e dei programmi; é possibile modificare l’organizzazione dei dati e dei
programmi indipendenti l’uno dall’altro, vi sono due tipi di indipendenza:
• Indipendenza fisica: la disposizione e l’organizzazione fisica dei dati
sui supporti di memoria di massa possono essere cambiate senza
cambiare l’organizzazione logica e consiste nella possibilità di
modificare lo schema fisico (la struttura fisica) dei dati senza dover
modificare i programmi applicativi che usano i dati.
• Indipendenza logica: la disposizione e l’organizzazione logica dei
dati può essere cambiata senza modificare le applicazioni non
coinvolte direttamente e consiste nella possibilità di modificare lo
schema concettuale senza dover modificare il software applicativo
Il modello concettuale E-R
Gli elementi che compongono il modello EntitàRelazioni sono tre:
• Le ENTITA’
• Le ASSOCIAZIONI (Relazioni)
• Gli ATTRIBUTI
Entità (Entity)
L’entità è un oggetto concreto o astratto che ha un
significato all’interno del modello dei dati anche se
viene considerato isolato.
Di solito si definisce un tipo di entità attraverso un
NOME e lo si rappresenta con un rettangolo.
Esempio:
Gli studenti dello IUAV sono
classificabili con il tipo di entità
STUDENTE.
Ciascun studente rappresenta quindi
un’istanza dell’entità studente.
Studente
Associazioni (Relationship)
E’ il legame che stabilisce un’interazione fra le
entità
Ogni relazione ha due versi e per ogni verso esiste un’entità di
partenza e una di arrivo. L’associazione di solito è identificata da un
VERBO e viene rappresentata nel modello da un ROMBO.
Esempio:
Tra le entità Persona e Automobile si può instaurare la relazione
POSSIEDE:
Una persona possiede un’automobile
( verso)
Una automobile è posseduta da una persona
( verso )
Persona
Possiede
Automobile
Attributi
Gli attributi descrivono le proprietà delle
entità
Esempio:
Gli attributi dell’entità Automobile possono essere:
Produttore, Modello, Potenza, Cilindrata, PrezzoListino.
Gli attributi sono caratterizzati da:
• FORMATO: è il tipo di formato assunto dall’attributo. Ad es. Stringa,
Numerico, DataOra …
• DIMENSIONE: è la quantità massima di cifre che occorrono per
rappresentarlo
• OPZIONALITA’: indica se è obbligatorio o facoltativo
Un esempio
Entità
Persona
Relazione
Possiede
Automobile
Attributi
Cognome
Nome
Titolo
Codice Fiscale
Produttore
Modello
Potenza
Cilindrata
PrezzoListino
Associazione UNO a UNO
Ad ogni elemento dell’entità 1 corrisponde uno ed un solo elemento
dell’entità 2
Studente
Consegue 
1
 E’ Conseguito da
Diploma di
1 Laurea
Esempio:
All’università ciascun studente quando si laurea avrà un suo
diploma di laurea (solo suo!)
Associazione UNO a MOLTI
Ad ogni elemento dell’entità 1 possono corrispondere più elementi
dell’entità 2, mentre ad ogni elemento dell’entità 2 ne corrisponde
uno solo dell’entità 1
Studente
1
Sostiene 
 Valuta
∞
Prova di
esame
Esempio:
Uno stesso studente sostiene più prove di esame, una per ciascun
insegnamento del suo piano di studi. Ciascun esame registrato si
riferisce ad un singolo studente.
Associazione MOLTI a MOLTI
Ad ogni elemento dell’entità 1 possono corrispondere più elementi
dell’entità 2 e viceversa
Studente
∞
Studia 
 E’ studiata da
∞
Materia
Esempio:
Ogni studente studia più materie (quelle del suo piano di studi) e
per ogni materia ci sono vari studenti che la studiano.
Schema concettuale (FILM)
Entità
Relazioni tra entità
Diagramma Entità-Relazione (Chen 1970)
Attributi di entità
Schema Concettuale (E-R)
Con cardinalità delle relazioni (MIN,MAX)
Modellazione Logica



Una volta decisi quali sono i concetti importanti da rappresentare e
quali sono i loro attributi, occorre pensare come e’ possibile
rappresentare questa informazione usando una base di dati
Questo è il compito della modellazione logica
(attenzione: questa non esprime ancora proprietà di dati specifici,
ma delle loro proprietà e/o relazioni)
Esprimibile in diagrammi
DB Relazionali. Tabelle
l 
l 
l 
Un database relazionale è formato da un insieme di tabelle (o relazioni)
Ogni tabella è composta da righe, una diversa dall’altra.
Esempio: in un elenco telefonico ogni riga è composta di un cognome,
un nome, un indirizzo, un numero di telefono.
Il tipo dei dati (stringa o numero), il loro significato (cognome o numero
di telefono) e la loro posizione (prima il cognome, poi il nome, ecc) sono
prefissati.
13
Tabelle che rappresentano
Relazioni
RECORD
ATTRIBUTO
14
Record e Campi
l 
l 
l 
Ogni riga di una tabella è
strutturalmente identica alle
altre, e viene detta “record”.
Ogni record è composto da
valori di tipo diverso, detti
campi.
I campi sono definiti una
volta per tutte in uno
“schema” della tabella.
15
Esempio
SCHEMA della RELAZ.
RECORD
ATTRIBUTO
VALORE (o CAMPO)
Materia Data
Matr.
Voto
Lode?
IDUL
4/2/10
112233 29
no
IUC
4/2/10
114422 30
si
risultato_esame(IDUL,4/2/2010,112233,29)
16
campi o attributi
Schema del DB
L insieme dei record attuali si dice istanza
17
L’organizzazione dei dati
18
Schema e Istanze
l 
In ogni base di dati esistono:
l 
l 
lo schema, sostanzialmente invariante nel tempo, che ne
descrive la struttura (aspetto intensionale); nell’esempio, le
intestazioni delle tabelle
l’istanza, costituita dai valori attuali, che possono cambiare molto
e molto rapidamente (aspetto estensionale); nell’esempio, il
“corpo” di ciascuna tabella.
19
Tabelle e Relazioni
l 
Una tabella rappresenta una relazione se
l 
l 
l 
l 
i valori di ciascuna colonna sono fra loro omogenei (dallo stesso
dominio)
le righe sono diverse fra loro
le intestazioni delle colonne sono diverse tra loro
Inoltre, in una tabella che rappresenta una relazione
l 
l 
l’ordinamento tra le righe è irrilevante
l’ordinamento tra le colonne è irrilevante
20
Dominio dei campi
l 
Un campo di una tabella è caratterizzato dal suo
tipo, cioè dall’insieme dei suoi valori possibili, detto
anche dominio del campo
Esempio:
Dominio del campo Matr: insieme dei numeri interi
positivi formati da non più di 7 cifre
Dominio del campo Nato_a: insieme dei nomi dei
comuni italiani (o europei)
21
Esempio: orario ferroviario
Quadro di una stazione ferroviaria
22
Il modello relazionale
l 
Ogni tabella rappresenta quindi un insieme di record
l 
Per accedere ai singoli record di una tabella si
individua un campo, detto chiave della tabella, il cui
contenuto è garantito unico tra vari record della
tabella
l 
Esempio: Tabella Studenti, chiave Matr
24
Chiave Primaria
l 
l 
l 
Ogni riga di ogni tabella (cioè ogni rappresentazione di un
oggetto) deve avere almeno un campo che permetta di
identificare quella riga in modo univoco
non deve dunque esserci un altro record con lo stesso valore
per quell attributo, anche se il valore può apparire in altri
attributi
Tale attributo è chiamato CHIAVE PRIMARIA
25
Chiavi
Tabella Studenti, chiave Matr
Tabella Corsi, chiave Codice
Tabella Iscritti, chiavi Matr, Codice
l 
Le chiavi possono essere usate per mettere in
corrispondenza tabelle diverse.
l 
Esempio: la tabella Iscritti può essere utilizzata
come tramite per effettuare ricerche relative a dati
che si trovano distribuiti nelle diverse tabelle
26
Chiave Primaria
STUDENTE
MATRICOLA
COGNOME
NOME
DATA
NASCITA
Rossi
Mario
11/11/1973
….
112233
….
27
Chiave Primaria Multipla
A volte la chiave è definita da più campi insieme.
NOME
COGNOME
ESAME
APPROVATO?
Carlo
Rossi
IUB
si
Mario
Rossi
IUB
no
Carlo
Bianchi
IUC
si
28
Valori nulli
PERSONAGGI BIBLICI
NOME
Età
PADRE
Matusalemme
968
Enoch
Eva
NULL
NULL
….
Il valore NULL può essere dato a campi il cui valore non si conosce, o per casi
in cui il valore non è definito (a volte i due casi sono distinti)
29
Vincoli di integrità
30
Problema
Date le tabelle
Tabella Studenti, chiave Matr
Tabella Corsi, chiave Codice
Tabella Iscritti, chiavi Matr, Codice
individuare i cognomi degli studenti iscritti al corso dal
titolo “Fond. Informatica II”.
31
Soluzione
algoritmo di una query in un DB
l 
Individuare nella tabella Corsi i record con Titolo uguale a
“Fond. Informatica II” e per ciascuno selezionare il contenuto del
campo Codice: si ottiene così l’elenco di tutti i codici associati al
corso in esame
l 
Individuare nella tabella Iscritti tutti i record il cui campo
Codice è uguale a uno degli elementi individuati al passo
precedente e per ciascuno selezionare il contenuto del campo
Matr: si ottiene così l’elenco di tutti i numeri di matricola degli
studenti iscritti al corso
l 
Individuare nella tabella Studenti tutti i record il cui campo Matr è
uguale a uno degli elementi individuati al passo precedente, e per
ognuno selezionare il contenuto del campo Cognome: si ottiene così
l’elenco cercato.
32
DBMS Relazionali
l 
Praticamente tutti i DATABASE MANAGEMENT
SYSTEMS (DBMS) moderni sono basati sul modello
relazionale
l 
l 
E.g., Oracle, Access, MySQL, PostgreSLQ (open source)
Disponibili per i principali sistemi operativi
(Windows, UNIX)
33
Linguaggi orientati ai database
l 
I linguaggi che consentono di accedere ad un database devono
disporre delle seguenti funzionalità di base:
l 
l 
l 
l 
l 
l 
Data Control Language (DDL): linguaggi che consentono di specificare
la sicurezza della base di dati negando l accesso a certi utenti e
consentendolo ad altri, tramite un sistema di password.
Data Definition Language (DDL): linguaggi che consentono di definire gli
schemi logici di un database (schemi delle tabelle).
Data Manipulation Language (DML): linguaggi che consentono di
interrogare e modificare le istanze dei database (inserimenti e
cancellazioni di record).
Query Language (QL): linguaggi che consentono di realizzare delle
interrogazioni.
Il più noto e diffuso è SQL (Structured Query Language).
Nota: questi NON sono linguaggi di programmazione!
34
I principali DBMS
l 
Software proprietario
l 
l 
l 
l 
l 
l 
l 
l 
l 
DB2 (IBM)
Caché (InterSystems)
FileMaker Pro (FileMaker, Inc., in precedenza Apple)
Microsoft SQL Server (Microsoft)
Microsoft Access (Microsoft)
Oracle (Oracle Corporation)
SQL Anywhere Studio (SyBase)
Sybase SQL Server (SyBase)
Open source o free software
l 
l 
l 
l 
l 
l 
l 
Firebird SQL (The FirebirdSQL Foundation; derivato da InterBase)
HSQL Database Engine
MySQL (MySQL AB)
PicoSQL (un Dbms italiano)
PostgreSQL (in precedenza Postgres) (PostgreSQL Global Development
Group)
SQLite(di pubblico dominio)
ZODB
35
Risultato di una query
l 
Il risultato di un’interrogazione espressa mediante
un linguaggio di interrogazione è una tabella
36
Structured Query Language
(SQL)
l 
Inizialmente ogni DBMS ha adottato un suo proprio
linguaggio di interrogazione.
l 
L’esigenza di standardizzazione ha portato i
principali sistemi relazionali ad adottare un
linguaggio comune, chiamato Structured Query
Language (SQL).
l 
SQL non è solo un linguaggio di interrogazione ma
consente anche di manipolare dati: inserire,
eliminare e modificare il contenuto di record.
37
Structured Query Language (SQL)
Un Esempio di interrogazione
SELECT
FROM
WHERE
l 
C1, …, Cn
T1, …, Tm
P
Genera una nuova tabella con i campi C1, …, Cn estratti dalle
tabelle T1, …, Tm. Questa tabella comprende solo i record che
soddisfano la condizione P
38
campi o attributi
Schema del DB
39
Esempio
SELECT
FROM
WHERE
l 
Matr, Cognome, Nome
Studenti
Nato_a = ‘Venezia’
Genera una nuova tabella con i campi Matr, Cognome,
Nome, estratti dalla tabella Studenti. Questa tabella
comprende l’elenco degli studenti nati a Venezia
40
Esempio
SELECT
FROM
WHERE
AND
AND
SORT BY
l 
Studenti.Matr, Cognome, Nome
Studenti, Iscritti, Corsi
Studenti.Matr = Iscritti.Matr
Iscritti.Codice = Corsi.Codice
Corsi.Titolo = ‘Fond. Informatica II’
Cognome
Genera una tabella con l’elenco, ordinato per cognome, degli studenti
iscritti al corso di Fondamenti di Informatica II, e per ognuno di essi
include il numero di matricola, il cognome e il nome.
41
SQL: inserimento dati
INSERT INTO Studenti VALUES
(4321, 'Verdi', 'Paolo', '12.12.1980', 'Pisa'),
(4322, 'Bianchi', 'Luca', '21.11.1980', 'Roma')
 Inserisce
nella tabella Studenti due nuovi
record con il contenuto specificato, campo
per campo.
SQL:
cancellazione di dati da un DB
DELETE FROM
WHERE
l 
Studenti
Matr < 1000
Cancella dalla tabella Studenti tutti i record che soddisfano la
condizione specificata.
43
SQL: creazione tabella
CREATE TABLE Studenti(
Matr
integer,
Cognome
varchar(50),
Nome
varchar(50),
Nato_il
date,
Nato_a
varchar(50)
)
 SQL
consente di creare nuove tabelle da
inserire in un DB. Per generare una tabella
bisogna specificarne lo schema, elencando I
campi e precisando il dominio di ogni campo
SQL:
eliminazione di una tabella
l 
SQL consente di rimuovere facilmente una tabella da un DB; per
esempio, il seguente comando elimina la tabella Studenti, con
tutto il suo contenuto, dal DB.
DROP TABLE
Studenti
45
SQL è un linguaggio di
programmazione ?
l 
SQL fornisce una sintassi per descrivere cosa si vuole ottenere
nell’interrogazione, e non come ottenerlo: è l’interprete SQL a
trasformare una query SQL in una procedura che viene eseguita sui
dati. Questo distingue SQL dai linguaggi di programmazione come
il C o il Basic, che invece richiedono al programmatore di
specificare esplicitamente le procedure con cui trattare i dati.
46
Tabella “Impiegato” Nome
Cognome Dipart
Ufficio Stipendio Città
Mario
Rossi
Amministr 10
15
Milano
Carlo
Bianchi
Prod
20
12
Torino
Giuseppe Verdi
Amministr 20
13
Roma
Franco
Neri
Distrib
16
15
Napoli
Carlo
Rossi
Direzione
14
27
Milano
Lorenzo
Lanzi
Direzione
7
21
Genova
Paola
Burroni
Ammistr
75
13
Venezia
Marco
Franco
Prod
20
14
Roma
47 47
Interrogazione 1 select Stipendio as Salario
from Impiegato
where Cognome = ‘Rossi’
Salario
15
27
48
48
Interrogazione 2 select *
from Impiegato
where Cognome =
‘Rossi’
tutti
Nome Cognome Dipart
Ufficio Stipendio Città
Mario
Rossi
Amministr
10
15
Milano
Carlo
Rossi
Direzione
14
27
Milano
49
49
Interrogazione 3 select Stipendio/12 as StipMens
from Impiegato
where Cognome = ‘Bianchi’
StipMens
1
50
50
Vantaggi e svantaggi dei DBSM
Pro
l 
Dati come risorsa comune, base di dati come modello
della realtà
l 
gestione centralizzata con possibilità di
standardizzazione ed “economia di scala”
l 
disponibilità di servizi integrati
l 
riduzione di ridondanze e inconsistenze
l 
indipendenza dei dati (favorisce lo sviluppo e la
manutenzione delle applicazioni)
51
Vantaggi e svantaggi dei DBSM
Contro
l 
costo dei prodotti
l 
Necessità di acquisire le competenze di progettazione
e amministrazione di un sistema complesso
52
Applicazioni evolute
l 
l 
Basi di dati multimediali: si occupano della gestione
di differenti tipi di dati (testi, immagini, suoni, video,
ecc..) e la risposta ad interrogazioni su di essi può
comportare un diverso mezzo
Le operazioni permesse all interno di questi sistemi
devono essere sia quelle valide per i testi (lettura e
scrittura) sia quelle per trattare informazioni audiovideo (play, pause, stop, ecc…)
53
Applicazioni evolute
l 
GIS (Geographic Information System): orientato ad
applicazioni in cui è importante la dislocazione geografica
degli oggetti (es. cartine stradali, mappa della salinità
dell acqua, ecc…). Esempio: Google Earth
l 
Sistemi di Data Warehouse: trattano dati che, una volta
inseriti, non vengono più modificati (es. rappresentano
l andamento storico di un azienda). Le strutture di
accesso alle tabelle sono quindi ottimizzate.
l 
Sistemi di Data Mining: sistemi per l estrazione di dati
da database molto dinamici: per esempio nelle ricerche
di mercato.
54