Abilità Informatiche A.A. 2010/2011 Lezione 8: Basi di Dati
Facoltà di Lingue e Letterature Straniere
Base di dati
(accezione generica, metodologica)
Insieme organizzato di dati utilizzati per il supporto allo svolgimento delle attività di un ente (azienda, ufficio,
persona)
(accezione specifica, tecnologica)
insieme di dati gestito da un DBMS (Data Base
Management System)
Sistemi di gestione di basi di dati (DBMS)
DBMS = Sistema software in grado di gestire collezioni di dati che siano (anche):
grandi: di dimensioni (molto) maggiori della memoria centrale dei sistemi di calcolo utilizzati
persistenti: con un periodo di vita indipendente dalle singole esecuzioni dei programmi che le utilizzano
condivise: utilizzate da applicazioni diverse
Caratteristiche di un DBMS
Un sistema DBMS deve garantire:
affidabilità (resistenza a malfunzionamenti hardware e software)
privatezza (con una disciplina e un controllo degli accessi).
Come ogni prodotto informatico, un DBMS deve essere
efficiente (utilizzando al meglio le risorse di spazio e tempo del sistema)
efficace (rendendo produttive le attività dei suoi utilizzatori).
Alcuni DBMS in commercio
Microsoft Access
IBM-DB2
Oracle
Informix
Sybase
Microsoft SQLServer
Ingres
MySql (open-source)
Sistemi per basi di dati
DATA BASE = Collezione omogenea di informazioni strutturate in sequenze di dati che hanno tutti la stessa struttura (insieme di archivi a disposizione di più utenti o applicazioni)
SISTEMI PER LA GESTIONE DI DATABASE (DBMS) = sistemi software che gestiscono dati di un sistema informativo, assumendo il ruolo di interfaccia verso i programmi utente.
Condivisione
Ogni organizzazione (specie se grande) è divisa in settori o comunque svolge diverse attività. A ciascun settore o attività corrisponde un (sotto-) sistema informativo (privato o porzione di un sistema più grande).
Possono esistere sovrapposizioni fra i dati di interesse dei vari settori.
Una base di dati è una risorsa integrata, condivisa fra i vari settori.
Un esempio
Un esempio
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
SCHEMA ESTERNO
SCHEMA LOGICO
SCHEMA CONCETTUALE
DATA BASE
SCHEMA ESTERNO SCHEMA ESTERNO
utente
utente
utente utente
utente utente
Architettura di un DBMS
I 3 livelli di astrazione di un DB
Schema esterno: descrizione di una porzione della base di dati in un modello logico attraverso “viste” parziali, o derivate, che possono
prevedere organizzazioni dei dati diverse rispetto a quelle utilizzate nello schema logico, e che riflettono esigenze e privilegi di accesso di particolari tipologie di utenti; ad uno schema logico si possono associare più schemi esterni
Schema logico: descrizione dell‟intera base di dati nel modello logico
“principale” del DBMS, ad esempio la struttura delle tabelle
Schema concettuale:
descrizione del tipo di dati che si vogliono rappresentare, che prescinde dalla realizzazione fisica dei dati
particolari, ovvero identificazione degli oggetti che si vogliono
rappresentare, dei loro attributi e delle relazioni tra questi oggetti
Schema fisico: rappresentazione dello schema logico per mezzo di strutture fisiche di memorizzazione, ovveri specifici files
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
Dalla realtà al modello fisico
Modello Concettuale
Realtà
Modello Logico
Modello Fisico
È una rappresentazione astratta della realtà, organizzata in forma grafica in modo da ottenere uno schema dei dati. E’
comprensibile da chiunque, anche senza conoscenze informatiche. MODELLO TIPICO: Entità-Relazioni
Il modello logico dota i dati di una struttura utile per semplificare ed ottimizzare le operazioni di Archiviazione, Interrogazione e manipolazione dei dati. STRUTTURA TIPICA: Data Base
Il modello fisico è ottenuto dall’implementazione, attraverso opportuni software, degli archivi e delle modalità di accesso.
Si tratta di file registrati su H.D. CASO TIPICO: uso del software ACCESS di Microsoft e creazione del file *.mdb
Un semplice modello concettuale
RISULTATI_ESAMI
Matricola Materia DataVoto
STUDENTE
Matricola
Cognome, Nome Data di Nascita
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
Il modello concettuale E-R
Gli elementi che compongono il modello Entità-Relazioni sono tre:
• Le Entità
• 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 di Ca’ Foscari sono classificabili con il tipo di entità studente .
Ciascun studente rappresenta quindi un’istanza dell’entità studente.
Studente
Associazioni (Relationship)
È 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
• opzionalità: indica se è obbligatorio o facoltativo
Un esempio
Persona Possiede Automobile
Produttore Modello Potenza Cilindrata PrezzoListino Cognome
NomeTitolo
Codice Fiscale
Notare la differenza fra PrezzoListino e PrezzoAcquisto
Entità
Attributi
Relazione
Associazione UNO a UNO
Ad ogni elemento dell’entità 1 corrisponde uno ed un solo elemento dell’entità 2
Studente Diploma di
Laurea
Consegue
1
E’ Conseguito da1
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 Prova di
esame
Sostiene
1
Valuta
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 Materia
E’ studiata da
Esempio:
Ogni studente studia più materie (quelle del suo piano di studi) e per ogni materia ci sono vari studenti che la studiano.
Un esempio di schema logico: FILM
Diagramma Entità-Relazione (Chen 1970)
Entità
Relazioni tra entità Attributi di entità
Schema logico (E-R)
Con cardinalità delle relazioni (MIN,MAX)
Schema Logico (gerarchie )
Schema logico (gerarchie)
Schema logico (completo)
Modelli di rappresentazione dei dati
A partire dagli anni Settanta il modello dominante è stato il quello relazionale, proposto da Edgard F. Codd nel 1970
Per certi tipi di applicazioni (in particolare per basi di
dati accessibili via Web) si fa molto uso di XML (vedi
prossime lezioni)
Il modello relazionale
L‟informazione è rappresentata nelle basi di dati sotto forma di relazioni
r(x,y,z,w)
Due tipi di relazioni rappresentate
Relazioni rappresentate con tabelle che rappresentano un oggetto ed i suoi attributi
risultato_esame(IUB,4/2/2008,112233,29)
Relazioni tra le tabelle
Per esempio, tra tabella studente e tabella risultato_esame
DB Relazionali. Tabelle
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.
Tabelle che rappresentano Relazioni
RECORD
ATTRIBUTO
Racord e campi
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.
Tabelle (o Relazioni)
Una tabella è relativa ad una entità.
Ogni riga della tabella corrisponde ad un‟istanza di questa entità.
Esempio
Materia Data Matr. Voto Lode?
IDUL 4/2/10 112233 29 no
IUC 4/2/10 114422 30 si
RECORD
ATTRIBUTO
risultato_esame(IDUL,4/2/2010,112233,29)
VALORE (o CAMPO) SCHEMA della RELAZ.
Un altro esempio
MATRICOLA COGNOME NOME DATA
NASCITA
….
112233 Rossi Mario 11/11/1973
….
STUDENTE
studente(112233,Rossi,Mario,11/11/1973)
L’organizzazione dei dati
Schema e istanze
In ogni base di dati esistono:
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.
Il concetto di relazione
D
1, D
2, …, D
n(n insiemi anche non distinti)
il prodotto cartesiano D
1×D
2×…×D
n, è l‟insieme di tutte le n-uple ordinate (d
1, d
2, …, d
n) tali che d∈D
1, d
2∈D
2, …, d
n∈D
n.
una relazione matematica su D
1, D
2, …, D
nè un
sottoinsieme del prodotto cartesiano D
1× D
2× … × D
n.
D
1, D
2, …, D
nsono i domini della relazione.
Il numero di n-uple è la cardinalità della relazione. Nelle
applicazioni reali, la cardinalità è sempre finita.
Proprietà di una relazione
In base alle definizione, una relazione matematica è un insieme di n- uple ordinate: (d
1, d
2, …, d
n) tali che d
1∈ D
1, d
2∈D
2, …, d
n∈D
n.
Una relazione è un insieme, quindi:
non è definito alcun ordinamento fra le n-uple;
le n-uple di una relazione sono distinte l‟una dall‟altra;
Dentro a ciascuna n-upla c‟è un ordine! .L‟i-esimo valore di ciascuna
proviene dall‟i -esimo dominio, ovvero è definito un ordinamento fra
i domini.
Esempio
string × string × integer × integer
Ciascuno dei domini ha un ruolo distinto, distinguibile attraverso la posizione: il primo e il terzo dominio si
riferiscono a nome e reti della squadra ospitante; il secondo e il quarto a nome e reti della squadra ospitata.
La struttura è posizionale
Tabelle e relazioni
Una tabella rappresenta una relazione se
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‟ordinamento tra le righe è irrilevante
l‟ordinamento tra le colonne è irrilevante
Chiave primaria
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
Chiave primaria, un esempio
MATRICOLA COGNOME NOME DATA
NASCITA
….
112233 Rossi Mario 11/11/1973
….
STUDENTE
Chiave primaria multipla
NOME COGNOME ESAME APPROVATO?
Carlo Rossi IUB si
Mario Rossi IUB no
Carlo Bianchi IUC si
A volte la chiave è definita da più campi insieme.
Chiavi artificiali
ID MATERIA DATA MATRICOLA VOTO
1 ….
2 IUB 4/2/2008 112233 29
3 ….
RISULTATO_ESAME
Tipicamente, numeri consecutivi, uno per record
Valori nulli (NULL)
NOME Età PADRE
Matusalemme 968 Enoch
Eva NULL NULL
….
PERSONAGGI BIBLICI
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)
Vincoli di integrità
Vincolo di integrità
Proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l‟applicazione
Ogni vincolo può essere visto come una funzione booleana (o un predicato) che associa ad ogni istanza il valore VERO o FALSO.
Tipi di vincoli:
vincoli intrarelazionali;
casi particolari:
vincoli su valori (o di dominio)
vincoli di ennupla
vincoli interrelazionali
Vincoli di ennupla
Esprimono condizioni sui valori di ciascuna ennupla, indipendentemente dalle altre ennuple.
Una possibile sintassi: espressione booleana (con AND, OR e NOT) di atomi che confrontano valori di attributo o espressioni aritmetiche su di essi.
Un vincolo di ennupla è un vincolo di dominio se coinvolge un solo attributo
Esempi:
(Voto >=18) AND (Voto <=30)
(Voto =30) OR NOT (Lode = “e lode”)
Lordo = (Ritenute - Netto)
Relazioni tra tabelle
Una base di dati relazionale permette di specificare, oltre che informazioni su attributi di oggetti, informazioni sulle relazioni tra oggetti
Per esempio, che un particolare risultato di esame è stato
ottenuto dallo studente Mario Rossi
Relazioni tra tabelle
MATRICOLA COGNOME NOME DATA
NASCITA
….
112233 Rossi Mario 11/11/1973
….
ID MATERIA DATA MATRICOLA VOTO
….
456789 IUB 4/2/2008 112233 29
….
Operazioni su un Database relazionale
Operazioni tipiche su un database relazionale
DEFINIRE nuove tabelle e nuove relazioni
AGGIUNGERE dati
RITROVARE un sottoinsieme delle righe
Possibilmente restringendo il ritrovamento ad un sottoinsieme delle colonne
VISUALIZZARE un sottoinsieme dei dati per scopi particolari
Proiezione e Selezione
PROIEZIONE (π
test): estrazione di una serie di colonne (attributi) da un DB
SELEZIONE (σ
test): estrazione di una serie di righe (record)
Dove test è un test che, se ha successo, aggiunge la
colonna/riga sotto esame alla proiezione/selezione
(rispettivamente)
Esempio: DataBase film (1)
Esempio: DataBase film (2)
Selezione su titolo ed anno
Proiezione su selezione per valore dell‟attributo
“nazione”
Esempio: DataBase film (3)
Intersezione (⋂) tra gli attori di film diversi
attori NON presenti in un film (differenza, - )
Da E-R a database relazionale
La progettazione nello schema E-R contiene costrutti che vanno
“tradotti” nel sistema relazionale. Ciò comporta:
La eliminazione delle gerarchie, riportando le informazioni su nodo padre.
La traduzione delle entità come tabelle, i cui valori saranno i valori dei singoli individui appartenenti a quella entità
La connessione tra le tabelle così stabilite
DBMS Relazionali
Praticamente tutti i DATABASE MANAGEMENT SYSTEMS (DBMS) moderni sono basati sul modello relazionale
E.g., Oracle, Access, MySQL, PostgreSLQ (open source)
Disponibili per i principali sistemi operativi (Windows,
UNIX)
Una tabella in Access
Relazioni tra tabelle
Gerarchie come relazioni
Gerarchie come relazioni
‘‘Distribuzione o Produzione’’
Entità come Relazioni
In un diagramma ER, le entità sono collezioni di individui, ciascuno dotato di attributi con valori.
Rese come tabelle:
EDIZIONE(codice, titolo, nazione, durata, lingua, vietato) FILM(codice, titolo, durata, anno, nazione)
Collegare Tabelle
EDIZIONE(codice, titolo, nazione, durata, lingua, vietato) FILM(codice, titolo, durata, anno, nazione)
Come specificare che una edizione è l‟edizione di un certo film?
Aggiungendo alla tabella EDIZIONE una chiave esterna (qui, il numero di codice del film).
La chiave si specifica aggiungendo ai valori di EDIZIONE il nome della relazione che contiene la chiave:
EDIZIONE(codice, titolo, nazione, durata, lingua, vietato, film)
Impossibile fare il contrario, visto che un film ha tipicamente molte edizioni:
un campo può contenere un solo valore!
Collegare Tabelle con relazioni di tipo N-a-N
Come specificare che un film ha la relazione di CAST con molti attori, ed una PERSONA ha spesso recitato in molti FILM?
E‟ necessario indicarlo in maniera indiretta, tramite una nuova relazione (qui, CAST), che conterrà DUE chiavi esterne:
PERSONA(nome, nazione, data_di_nascita) FILM(codice, titolo, durata, anno, nazione)
CAST(persona, film, personaggio)
Regole di derivazione:
dai diagrammi ER alle tabelle
1. Ogni ENTITA’ diventa una tabella
2. Ogni istanza di un’entità sarà perciò un record della tabella
3. Ogni ATTRIBUTO di un’entità diventa un campo di ciascuno dei record della tabella e ne eredita le caratteristiche
4. L’identificatore univoco di un’entità diventa Chiave Primaria (Primary Key) del record della tabella
5. L’associazione UNO a UNO diventa una tabella contenente gli attributi di entrambe le entità
6. L’associazione UNO A MOLTI si traduce in due tabelle, uno per ciascuna delle entità della relazione
7. L’identificatore univoco dell’entità di partenza nell’associazione UNO A MOLTI diventa Chiave Esterna (Foreign Key) dell’entità di arrivo, cioè l’attributo che è Chiave Primaria del primo archivio diventa un campo dei record del secondo archivio
8. L’associazione MOLTI A MOLTI diventa una nuova tabella in aggiunta alle due archivi derivate dalle due entità legate dall’associazione. Questa nuova tabella sarà formata da record che contengono le chiavi primarie delle due tabelle più
Tabella da associazione UNO a UNO
Studente Diploma di
laurea
Consegue
1
E’ Conseguito da1
NomeCognome Matricola
TipoDiploma AnnoVoto
L’archivio che deriva è dato dalla sola tabella DIPLOMATI che contiene come campi tutti gli attributi di Studente e tutti quelli di Diploma
Archivio Campo Chiave Tipo
Laureati
Nome String*25
Cognome String*25
Matricola PK Long Int
TipoLaurea String*50
Anno Integer
Voto Integer
Tabella Laureati
Tabella da associazione UNO a MOLTI
Studente Prova di
Esame
Sostiene
1
Valuta
NomeCognome Matricola Classe
Materia TipoEsame VotoDataSvolgim IDVerifica
L’archivio che deriva è formato da 2 tabelle:
Studenti con campi: Nome,Cognome,Matricola (PK)
Verifiche con campi: Materia, TipoVerifica, Voto, DataSvolgim e MatricolaStudente (FK)
Tabelle Studenti ed Esami
Archivio Campo Chiave Tipo
Studenti
Nome String *25
Cognome String *25
Matricola PK Long Int
Prove di Esame
Materia String*25
TipoVerifica String*25
Voto Real
DataSvolgim Date
IDVerifica PK Long Int
MatricolaStudente FK Long Int
Archivio da associazione MOLTI a MOLTI
Docente Insegna Corso
E’ tenuto da
Docente Modulo Corso
NumeroOre Sigla
NumeroAlunni Aula
CognomeNome MateriaID Qualifica
diventa
1 1
Archivi Docenti, Classi, Insegna
Archivio Campo Chiave Tipo
Docenti
CognomeNome String*50
ID PK Integer
Materia String*25
Qualifica String*15
ClasCorsosi
Sigla PK String*5
NumeroAlunni Integer
Aula Integer
Modulo
IDdoc PK Integer
SiglaModulo PK String*5
NumeroOre Integer
Il linguaggio SQL
per interrogare un database
Le informazioni in una base di dati possono essere ritrovate mediante INTERROGAZIONI
In un database relazionale moderno le interrogazioni sono fatte
utilizzando un linguaggio di interrogazione chiamato SQL (Simple
Query Language)
Sintassi di SQL
Diversi tipi di comandi:
DDL (Data Definition Language: comandi per la creazione e l‟update del DB)
DML (Data Manipulation Language: comandi per la interrogazione del DB)
Create TABLE persona (
Nome varchar(50) PRIMARY
KEY,
Nazione varchar(50),
Data_Nascita date );
SELECT nome, nazione, data_nascita
FROM persona
WHERE nazione = ‘Italia’;
Creare una tabella con SQL
CREATE TABLE persona (
Codice integer PRIMARY KEY,
Titolo varchar(50), NOT NULL,
Anno varchar(4),
Durata integer,
Nazione varchar(50), DEFAULT „Italia‟,
);
Creare una associazione tra tabelle con SQL
CREATE TABLE cast (
persona varchar(50), REFERENCES persona(nome), film integer, REFERENCES film(codice),
personaggio varchar(50),
PRIMARY KEY (persona, film)
);
Popolare un DB con SQL
Comandi INSERT, UPDATE, DELETE
1. INSERT INTO film VALUES (5, „Il sesto senso‟, 1999, 107, „USA‟);
2. INSERT INTO film(codice, titolo, anno) VALUES (5, „Il sesto senso‟, 1999);
3. UPDATE film SET durata = 130 WHERE titolo = „Il senso senso‟;
4. DELETE FROM persona WHERE nazione = „Italia‟;
Il secondo comando inserisce valori NULL per gli attributi non specificati; Il quarto comando distrugge un‟intera tupla (record) della tabella persona se sono verificate le condizioni indicate