Upload
hoangcong
View
215
Download
0
Embed Size (px)
Citation preview
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)
2
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
3
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).
4
Alcuni DBMS in commercio
Microsoft Access
IBM-DB2
Oracle
Informix
Sybase
Microsoft SQLServer
Ingres
MySql (open-source)
5
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.
6
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.
7
Un esempio
8
9
Un esempio
Possibili problemi
Rischio di ridondanza: informazioni ripetute
Rischio di incoerenza: le due versioni possono non coincidere
10
Archivi e Basi di Dati
11
I 3 livelli di astrazione di un DB
SCHEMA ESTERNO
SCHEMA LOGICO
SCHEMA CONCETTUALE
DATA BASE
SCHEMA ESTERNO SCHEMA ESTERNO
utenteutente
utenteutente
utenteutente
12
Architettura di un DBMS
13
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 voglionorappresentare, che prescinde dalla realizzazione fisica dei datiparticolari, ovvero identificazione degli oggetti che si voglionorappresentare, 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
14
Indipendenza Fisica e Logica
15
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
16
Un semplice modello concettuale
17
RISULTATI_ESAMI
MatricolaMateriaDataVoto
STUDENTE
MatricolaCognome, NomeData di Nascita
Modellazione Logica
18
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
19
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
20
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
21
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
22
Un esempio
Persona AutomobilePossiede
Produttore
Modello
Potenza
Cilindrata
PrezzoListino
Cognome
Nome
Titolo
Codice Fiscale
Notare la differenza fra PrezzoListino e PrezzoAcquisto
Entità
Attributi
Relazione
23
Associazione UNO a UNO
Ad ogni elemento dell’entità 1 corrisponde uno ed un solo elemento
dell’entità 2
Studente Diploma di
LaureaConsegue
1 1 E’ Conseguito da
Esempio:
All’università ciascun studente quando si laurea avrà un suo diploma
di laurea (solo suo!)
24
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
esameSostiene
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.
25
Associazione MOLTI a MOLTI
Ad ogni elemento dell’entità 1 possono corrispondere più elementi dell’entità 2 e viceversa
Studente MateriaStudia
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.
26
Un esempio di schema logico: FILM
27
Diagramma Entità-Relazione (Chen 1970)
Entità
Relazioni tra entità
Attributi di entità
Schema logico (E-R)
28
Con cardinalità delle relazioni (MIN,MAX)
Schema Logico (gerarchie )
29
Schema logico (gerarchie)
30
Schema logico (completo)
31
Modelli di rappresentazione dei dati
32
A partire dagli anni Settanta il modello dominante è stato il quello relazionale, proposto da Edgard F. Coddnel 1970
Per certi tipi di applicazioni (in particolare per basi didati accessibili via Web) si fa molto uso di XML (vediprossime lezioni)
Il modello relazionale
33
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
34
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
35
RECORD
ATTRIBUTO
Racord e campi
36
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)
37
Una tabella è relativa ad una entità.
Ogni riga della tabella corrisponde ad un‟istanza di questa entità.
Esempio
38
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
39
MATRICOLA COGNOME NOME DATA
NASCITA
….
112233 Rossi Mario 11/11/1973
….
STUDENTE
studente(112233,Rossi,Mario,11/11/1973)
L’organizzazione dei dati
40
Schema e istanze
41
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
42
D1, D2, …, Dn (n insiemi anche non distinti)
il prodotto cartesiano D1 ×D2 ×…×Dn , è l‟insieme di tutte le n-uple ordinate (d1, d2, …, dn) tali che d∈D1,
d2∈D2 , …, dn∈Dn.
una relazione matematica su D1, D2, …, Dn è un
sottoinsieme del prodotto cartesiano D1 × D2 × … × Dn.
D1, D2, …, Dn sono i domini della relazione.
Il numero di n-uple è la cardinalità della relazione. Nelle
applicazioni reali, la cardinalità è sempre finita.
Proprietà di una relazione
43
In base alle definizione, una relazione matematica è un insieme di n-
uple ordinate: (d1, d2, …, dn) tali che d1∈D1 , d2∈D2 , …, dn∈Dn .
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
44
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
45
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
46
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
47
MATRICOLA COGNOME NOME DATA
NASCITA
….
112233 Rossi Mario 11/11/1973
….
STUDENTE
Chiave primaria multipla
48
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
49
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)
50
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à
51
Vincolo di integrità
52
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
53
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
54
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
55
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
56
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
57
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)
58
Esempio: DataBase film (2)
59
Selezione su titolo ed anno
Proiezione su selezione per valore dell‟attributo
“nazione”
Esempio: DataBase film (3)
60
Intersezione (⋂) tra gli attori di film diversi
attori NON presenti in un film (differenza, - )
Da E-R a database relazionale
61
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
62
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
63
Relazioni tra tabelle
64
Gerarchie come relazioni
65
Gerarchie come relazioni
66
‘‘Distribuzione o Produzione’’
Entità come Relazioni
67
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
68
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
69
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 tabelle1. 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ù
gli eventuali attributi dell’associazione
70
Tabella da associazione UNO a UNO
Studente Diploma di
laureaConsegue
1 1 E’ Conseguito da
Nome
Cognome
Matricola
TipoDiploma
Anno
Voto
L’archivio che deriva è dato dalla sola
tabella DIPLOMATI che contiene come
campi tutti gli attributi di Studente e tutti
quelli di Diploma
71
Archivio Campo Chiave Tipo
Laureati
Nome String*25
Cognome String*25
Matricola PK Long Int
TipoLaurea String*50
Anno Integer
Voto Integer
Tabella Laureati
72
Tabella da associazione UNO a MOLTI
Studente Prova di
EsameSostiene
1 Valuta
Nome
Cognome
Matricola
Classe
Materia
TipoEsame
Voto
DataSvolgim
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)
73
Tabelle Studenti ed Esami
74
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 CorsoInsegna
E’ tenuto da
Docente CorsoModulo
NumeroOre Sigla
NumeroAlunni
Aula
CognomeNome
ID
Materia
Qualifica
diventa
1 1
75
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
Regole di derivazione
76
Il linguaggio SQL
per interrogare un database
77
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
78
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_nascitaFROM personaWHERE nazione = ‘Italia’;
Creare una tabella con SQL
79
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
80
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
81
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