Base di dati

annuncio pubblicitario
Archivi e basi di dati
Vito Perrone
Corso di Informatica A per Gestionali
Memorie di massa
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
2
Indice
• Memorie di massa
• Organizzazione degli archivi
e basi di dati
• Basi di dati relazionali
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
3
Introduzione
• Memoria di tipo persistente
– Un dato è persistente se è mantenuto integralmente quando
il calcolatore viene spento oppure si verifica un errore
• Obiettivi:
– Memorizzare in modo compatto grandi quantità di dati
– Accesso efficientemente e selettivo ai dati
• Possiamo classificare i dispositivi di memoria di
massa in:
– Dispositivi ad accesso sequenziale (nastri)
– Dispositivi ad accesso diretto (dischi)
• Tipicamente, sono basati su tecnologia magnetica
• La tecnologia ottica è sempre più diffusa (per i
dischi)
Archivi e Basi di Dati
Copyright © 2004 - The McGraw-Hill
Companies, srl
Informatica A – V. Perrone
4
Nastri (1)
• Accesso sequenziale
• Sul nastro magnetico
sono incise delle piste
orizzontali, parallele fra
loro
• I dati vengono registrati
serialmente su ogni
traccia
• Il nastro scorre al di
sopra della testina di
lettura/scrittura
• Ai dati sono aggiunti
alcuni bit di controllo per
consentire il rilevamento
di errori (es. bit di parità)
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
Bit 1
2
3
4
5
6
7
8
Bit di parità
5
Nastri (2)
• I dati sono organizzati sul nastro in zone
contigue, dette record
• Sono previste zone prove di dati (gap) tra i record
e all’inizio
• Parametri principali:
– Densità di memorizzazione: è misurata in bit per inch
(bpi)
– Capacità di memorizzazione = densità  lunghezza (in
pollici)
– Velocità di movimento del nastro
• Alcuni nastri hanno le tracce poste
diagonalmente e sono letti da testine rotanti
(scansione elicoidale)
• I nastri sono attualmente impiegati solo per il
backup
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
6
Dischi (1)
• Accesso diretto
• Disk-pack: un certo
numero di piatti coperti da
uno strato magnetico
• Ciascun piatto ha una serie
di cerchi concentrici
(tracce) su entrambi i lati
• Le tracce sono suddivise in
spicchi di ugual grandezza
(settori)
• Le testine di
lettura/scrittura si spostano
(tutte insieme) radialmente
tra le varie tracce
Archivi e Basi di Dati
Copyright © 2004 - The McGraw-Hill
Companies, srl
Informatica A – V. Perrone
7
Dischi (2)
• L’inizio e la fine dei settori sono marcati con
sequenze particolari di bit (formattazione)
• Blocco di ingresso/uscita: gruppo di dati che
vengono letti o scritti con un’unica operazione di
ingresso/uscita
• Ciascun blocco è individuato dalla terna:
(num. superficie, num. traccia, num. settore)
• Una zona di memoria (il buffer) contiene i dati
prima che vengano scritti su disco o dopo essere
stati letti da disco
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
8
Dischi (3)
• Accesso ai dati:
– Spostamento della testina verso la traccia richiesta
(tempo di seek)
– Attesa del passaggio del settore richiesto (tempo di
latenza)
• Mediamente, pari a metà del tempo di rotazione
– Trasferimento dei dati da/verso il buffer (tempo di
trasferimento)
Quindi: ti/u = tseek + tlat + ttrasf
• Cilindro: l’insieme delle tracce, appartenenti a
tutte le superfici, poste alla stessa distanza dal
centro
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
9
Altre memoria di massa
• Floppy disk: magnetico
• Dischi ottici
– CD-ROM
– CD-R/RW
– DVD
• Chiavi USB: memorie a stato solido Flash EPROM
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
10
Organizzazione degli archivi
e basi di dati
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
11
Organizzazione degli archivi
• Le informazioni vengono organizzate in memoria
in record logici
• Blocchi di ingresso/uscita e record logici:
– In un medesimo blocco di ingresso/uscita può trovare
posto un certo numero di record logici
– Esistono record logici così grandi da occupare più
blocchi di ingresso/uscita
• L’accesso ad un record logico comporta il
trasferimento di uno o più blocchi di
ingresso/uscita
• Coefficiente di riempimento di un file:
numero di byte allocati a record logici nel file
numero di byte dei blocchi fisici allocati al file
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
12
Basi di dati
• Base di dati (o database): insieme di dati
raccolti in base a precise regole e organizzati
in strutture piuttosto rigide
• DBMS: sistema software che organizza e
gestisce basi di dati
– Opera al di sopra del sistema operativo
– Offre linguaggi specifici per l’organizzazione e la
gestione dei dati
– Offre meccanismi efficienti per l’accesso ai dati
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
13
Basi di dati e archivi separati (1)
• Dati gestiti basandosi sui file
• Più applicazioni accedono ai file
• Problemi:
–
–
–
–
Inconsistenza e ridondanza dei dati
Riservatezza dei dati
Integrità dei dati
Concorrenza
Progr. 1
File
Progr. 2
Progr. 3
File modificati
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
14
Basi di dati e archivi separati (2)
• Integrità dei dati
– I dati devono sempre essere consistenti con un
insieme di vincoli logici
– Ad es. in un’anagrafe ogni dato riguarda una
persona, che ha un padre e una sequenza di
figli. Ovviamente se esiste la persona P avente
padre P1 occorre che P compaia tra i figli di P1
– Se il programma che aggiorna i padri è diverso
da quello che registra le nascite si possono
avere momenti in cui i dati non sono consistenti
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
15
Basi di dati e archivi separati (3)
• Dati gestiti da un DBMS
• Vantaggi:
– I dati hanno una sola
rappresentazione (meno ridondanza
ed inconsistenza)
– L’accesso alla base di dati viene
disciplinato dal DBMS (controllo,
Progr. 1
privatezza, ecc.)
– Alcuni vincoli di integrità
possono essere definiti
e verificati in modo
automatico
– Gestione ottimale della memoria di
massa
– Gestione degli accessi concorrenti
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
Progr. 1
Progr. 1
DBMS
Base di dati
16
Modelli per la gestione dei dati
• Modello dei dati:
– Gerarchico: basato su strutture ad albero (metà anni 60)
– Reticolare: basato su strutture a grafo (Codasyl - 1973,
1978)
– Relazionale: basato sul concetto di insieme e sulla
strutturazione dei dati tramite tabelle (inizio anni ’80))
– Ad oggetti: estende alle basi di dati alcune
caratteristiche dei linguaggi di programmazione orientati
agli oggetti (inizio anni ’90)
• Schema di una base di dati: descrizione dei dati
di uno specifico contesto applicativo
– Definita tramite un attività detta database design
– Istanza (od occorrenza) di una base di dati: valore
assunto dalla base di dati in un particolare istante di
tempo
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
17
Categorie di linguaggi
• Data Definition Language (DDL):
– Utilizzato per definire lo schema della base di dati
– Lo schema viene salvato nel dizionario dei dati
• Data Manipulation Language (DML):
– Per formulare interrogazioni (o query) sulla base di dati
– Per modificare il contenuto della base di dati
• Nel seguito vedremo il linguaggio SQL (che
supporta entrambi questi aspetti)
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
18
Livelli di astrazione
• Livelli di astrazione:
Utente 1 Utente 2 Utente 3 Utente 4
– Fisico: descrive
la base di dati come
un insieme di record
Descrizione
Descrizion
in memoria di massa
esterna 1
e esterna 2
– Logico: descrive
la struttura di ciascun dato
e i collegamenti tra dati diversi
– Esterno: presenta i dati così
Descrizione
come vengono visti da un
logica
particolare utente o da una
classe di utenti
• Livelli di indipendenza:
– Fisica: ridefinire il livello fisico
senza modificare il livello logico
– Logica: definire nuovi schemi
esterni senza modifica la
struttura logica
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
Utente n
Descrizion
e esterna n
Descrizione
interna
Archivi
19
Transazioni
• Transazioni: non lasciano mai la base di dati in uno
stato inconsistente
• Proprietà “acide” delle transazioni:
– Atomicità: vi sono solo due possibili terminazioni
• Successo: tutte le attività della transazione sono andate a
buon fine, la base di dati è aggiornata (commit)
• Fallimento: qualche attività della transazione non va a buon
fine, la transazione fallisce tutta, la base di dati non viene
modificata (rollback)
– Consistenza: i vincoli di integrità dei dati non sono mai
violati
– Isolamento: transazioni concorrenti sono isolate le une
dalle altre
– Durabilità: una volta completata con successo, l’effetto
della transazione sulla base di dati è permanente
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
20
Utenti di una base di dati
• Data Base Administrator (DBA):
– Definizione degli schemi esterni, logico e fisico
– Definizione dei vincoli di integrità e dei requisiti di
riservatezza
– Per questi compiti, il DBA utilizza il DDL
• Terminalista:
– Interagisce con un’applicazione che a sua volta si
interfaccerà con la base di dati
• Programmatore:
– Scrive le applicazioni e le rende disponibili agli utenti
– Utilizza il DML per interfacciare applicazione e base di dati
• Utente occasionale:
– Formula query non previste dalle applicazioni, usando il
DML
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
21
Basi di dati relazionali
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
22
Base di dati relazionale
• Relazione, una tabella caratterizzata da:
– Un numero fisso di colonne (dette attributi); ciascuna
colonna assume valori estratti da uno stesso dominio
– Un numero variabile di righe (dette tuple)
– Grado di una relazione: il numero di colonne
– Cardinalità di una relazione: il numero di righe
– Schema di una relazione: il nome della relazione seguito
dai nomi dei suoi attributi; a ciascun attributo è associato
un dominio
– Istanza di una relazione: insieme delle tuple presenti nella
base di dati in un determinato istante (quindi, varia nel
tempo)
• Base di dati relazionale, un insieme di relazioni:
– Schema di una base di dati: l’elenco delle relazioni
– Istanza di una base di dati: insieme delle istanze delle
relazioni
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
23
Esempio: schema base di dati
Relation
CONTO-CORRENTE
(NUMERO-CC:
integer,
NOME:
char (20),
INDIRIZZO:
char (20),
SALDO:
decimal (14, 2)).
Relation
MOVIMENTO
(NUMERO-CC:integer,
DATA-MOV:
date,
NUMERO-MOV:
integer,
IMPORTO:
decimal (14, 2),
CAUSALE:
char (1)).
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
24
Esempio: istanza base di dati
CONTO-CORRENTE
NUMERO-CC
NOME
INDIRIZZO
SALDO
1
Rossi
v. Anemoni 5
3,678.00
2
Bianchi
v. Bolla 64
3
Brunelli
v. Po 41
6,777.50
4
Grandi
v. Romolo 3
3,400.00
664.00
MOVIMENTO
NUMERO-CC
DATA-MOV
NUMERO-MOV
IMPORTO
CAUSALE
1
14-01-03
1
+200.00
V
1
14-01-03
2
-500.00
P
1
27-01-03
3
+2,700.00
S
4
27-01-03
1
+1,850.40
S
3
25-01-03
1
-650.00
A
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
25
Alcune considerazioni
• Siamo vincolati ad introdurre informazioni che
soddisfino lo schema
– Ad es. nella relazione Conto_corrente possiamo introdurre
solo il nome e l’indirizzo del cliente, non il suo numero di
telefono o il codice fiscale. Per inserire queste informazioni
dovremmo prima modificare lo schema
• Partendo dalle relazioni esistenti è possibile ricavare
informazioni non direttamente disponibili nel DB, ad
es. l’elenco dei clienti che abitano in una certa zona e
hanno versato più di un milione nel 1995
• Questo tipo di operazioni viene fatto attraverso il
query language (o linguaggio di interrogazione del
DB)
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
26
Accesso alle tuple
• L’accesso ad una certa tupla (o ad un insieme
di tuple) di una relazione è sempre ed
esclusivamente di tipo associativo (non
posizionale): avviene in base al valore
contenuto nella tupla
• Ovvero, posso chiedere al DBMS il saldo di
Rossi
– trova la tupla in cui l’attributo Nome vale “Rossi” e
leggi l’attributo Saldo
• Non posso chiedere il valore dell’attributo
Nome della terza tupla
– le tuple non sono ordinate e non c’è modo di fare
un accesso diretto
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
27
Chiavi nelle relazioni
• A causa dell’accesso associativo, è importante dotare le relazioni di una
“chiave”
• Una chiave è un insieme minimo di attributi il cui valore identifica
univocamente una tupla
• Serve per poter accedere ad una singola tupla
– Ad es. nel caso del Conto_corrente si vuole poter aggiornare il Saldo di una
specifica tupla, corrispondente ad un ben preciso conto corrente. La chiave
sarà pertanto l’attributo Num_CC
– Nel caso del Movimento, la chiave sarà data dall’insieme degli attributi
Num_CC, Data_mov, Num_mov
• C è una chiave per una relazione R se valgono le seguenti proprietà:
– univocità: non possono esistere due tuple di R con lo stesso valore di C
– minimalità: eliminando un attributo da C la proprietà precedente decade
• Per una stessa relazione possono esistere più chiavi candidate
– La chiave primaria della relazione sarà una tra queste
– Spesso sulla chiave primaria non si accettano valori nulli
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
28
Restrizione e chiave
• Restrizione: di una tupla t sugli attributi A di R,
indicata con t[A], è data dalla lista dei valori assunti
da t sugli attributi A di R
• Chiave di una relazione R: un sottoinsieme K degli
attributi di R, tale che valgano:
– Unicità: in una qualunque istanza di R, non possono
esistere due tuple distinte di R la cui restrizione su K sia
uguale
– Minimalità: non è possibile sottrarre a K un attributo senza
che la condizione di unicità cessi di valere
• Ogni relazione deve avere almeno una chiave
– Se la relazione ha più chiavi, una di esse sarà la chiave
primaria
CONTO-CORRENTE (NUMERO-CC; NOME, INDIRIZZO, SALDO)
MOVIMENTO (NUMERO-CC, DATA-MOV, NUMERO-MOV, IMPORTO, CAUSALE)
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
29
Le operazioni Le operazioni relazionali
• Ci sono operazioni che servono per combinare
relazioni, limitandosi a leggere il contenuto del DB.
Restituiscono sempre una relazione
– Operazioni unarie: hanno come operando un’unica
relazione
– Operazioni binarie: hanno come operando due relazioni
– Operazioni insiemistiche: corrispondono alle solite
operazioni di unione, differenza e intersezione
• Ci sono operazioni che servono a modificare il
contenuto del DB
– Aggiunta e riomozione e modifica di record
• Ci sono operazioni che servono a modificare lo
schema del DB
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
30
Le operazioni unarie - selezione
• La selezione restituisce una relazione che è
strutturalmente identica all’operando (ha lo stesso
schema), ma contiene un sottoinsieme delle tuple
dell’operando
• Fa una selezione delle tuple della relazione
“operando”, utilizzando un criterio di selezione:
– Il criterio di selezione è una espressione logica (predicato)
che viene valutata (vero/ falso) su ciascuna tupla: le tuple per
cui l’espressione vale “vero” sono selezionate e fanno parte
del risultato, le altre, per cui l’espressione vale “falso” sono
scartate.
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
31
Le operazioni unarie – selezione
Un Esempio
• Selezioniamo dalla relazione Conto_corrente le tuple
in cui Saldo > 2.000.000
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
32
Le operazioni unarie - proiezione
• Mentre la selezione elimina delle righe della tabella
operando, la proiezione elimina delle colonne
• Contrariamente al caso della selezione il criterio di
eliminazione non dipende da un’espressione da
valutare, ma si dà direttamente l’insieme degli attributi
che vanno mantenuti
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
33
Le operazioni unarie – proiezione
Un Esempio
• Proiettiamo la relazione Movimento sugli attributi Data_mov e
Importo
• Nota: eliminando delle colonne può darsi che tra le tuple così
ottenute esistano dei duplicati. Poiché le relazioni sono insiemi, i
duplicati non sono ammessi, e quindi vengono eliminati
– Ad es. il movimento del CC 1 del 1-1-96 è un duplicato e viene
eliminato
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
34
Le operazioni binarie – prodotto
cartesiano
• Il prodotto cartesiano crea una relazione avente per
tuple tutte le possibili combinazioni ottenibili
giustapponendo una tupla del primo operando con
una tupla del secondo
• Esempio
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
35
Le operazioni binarie – join naturale
• Il prodotto cartesiano raramente è utile, perché
generalmente si vogliono ottenere solo le
combinazioni di tuple tra le quali esiste una certa
corrispondenza, o vale una certa proprietà
• join naturale: si combinano tra loro solo le tuple in cui
valori delle relazioni in due attributi aventi dominio
uguale (e nome uguale) verificano la proprietà di
uguaglianza
• Nella tabella risultante, si considera la colonna uguale
una volta sola
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
36
Le operazioni binarie – join naturale
Un Esempio
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
37
Il linguaggio SQL
•
•
•
•
E’ presente in tutti i DBMS relazionali
Standard ANSI e ISO
Mette a disposizione sia un DDL, sia un DML
DDL: permette di creare lo schema della base di
darti
– CREATE TABLE: crea una relazione a livello logico
– CREATE INDEX: crea indici per una certa relazione; gli
indici permettono di accedere ai dati con maggiore
efficienza
– DROP TABLE: cancella una relazione
– DROP INDEX: cancella un indice
• DML: permette di scrivere le query
– Basato sull’algebra relazionale
– Operatori: selezione, proiezione, join, unione e differenza
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
38
Il linguaggio SQL: select
• L’istruzione che permette di formulare le query
• Sintassi:
SELECT nomi di attributi
FROM nomi di relazioni
WHERE condizioni di ricerca sui dati
• Le tre clausole individuano rispettivamente:
– gli attributi da includere nel risultato;
– le relazioni da cui estrarre i dati;
– la condizione di ricerca. Questa condizione può essere
assai complessa e coinvolgere nel suo interno altri blocchi
SQL
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
39
Il linguaggio SQL: esempi 1
• La selezione riportata nell’esempio precedente si scrive:
SELECT *
FROM Conto_corrente
WHERE Saldo > 2.000.000
• La proiezione dell’esempio precedente si scrive:
SELECT Data_mov, Importo
FROM Movimento
• Nota: nei DBMS commerciali i duplicati sono ammessi. Per
eliminarli occorre indicarlo esplicitamente, attraverso la parola
chiave DISTINCT:
SELECT DISTINCT Data_mov, Importo
FROM Movimento
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
40
Il linguaggio SQL: esempi 2
• Una singola espressione SQL può indicare selezione e
proiezione insieme:
SELECT Num_CC, Importo
FROM Movimento
WHERE Data_mov = 1-1-96
• L’operazione descritta seleziona le tuple in cui l’attributo
Data_mov ha il valore rescritto, poi sopprime gli attributi diversi
da Num_CC e Importo
• Join: Voglio sapere i nomi dei correntisti interessati da ciascun
movimento: devo combinare le tuple di Conto_corrente con le
tuple di Movimento aventi uguale Num_CC
• In SQL scrivo:
SELECT *
FROM Conto_corrente, Movimento
WHERE Conto_corrente.Num_CC =Movimento.Num_CC
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
41
Il linguaggio SQL: esempi 3
• Il join è combinabile con la selezione e la proiezione
in un’unica operazione SQL: semplicemente il
predicato non indicherà solo la corrispondenza tra
tuple, ma anche un criterio cui le tuple del risultato
dovranno essere conformi
• Voglio conoscere importo e causale dei movimenti
di Rossi del 1-1-96:
SELECT
FROM
WHERE
Copyright © 2004 - The McGraw-Hill
Companies, srl
Importo, Causale
Conto_corrente, Movimento
Conto_corrente.Num_CC =
Movimento.Num_CC AND Nome =
“Rossi” AND Data_mov = 1-1-96
Archivi e Basi di Dati
Informatica A – V. Perrone
42
Il linguaggio SQL: le operazioni
insiemistiche
• Corrispondono alle normali operazioni sugli
insiemi
• Occorre notare che per avere come risultato
dei veri insiemi occorre sempre indicarlo
esplicitamente usando la keyword DISTINCT
– Altrimenti ad es. l’unione darà semplicemente un
risultato contenente le tuple del primo operando e
quelle del secondo, duplicati compresi
• In SQL queste operazioni si chiamano
rispettivamente
– UNION
– MINUS
– INTERSECT
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
43
Il linguaggio SQL: esempio 4
• Estraiamo i CC che hanno un saldo maggiore di
2.000.000 e per i quali non è stato fatto alcun
movimento per un importo maggiore di 1.000.000
SELECT Num_CC
FROM Conto_corrente
WHERE Saldo > 2.000.000
MINUS
SELECT Num_CC
FROM Movimento
WHERE Importo > 1.000.000
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
44
Alcune considerazioni
• L’SQL supporta uno stile di interrogazione
dichiarativo, nel senso che le query specificano le
caratteristiche del risultato ma non indicano come
estrarlo
– Ad es. nelle selezioni non diciamo se la tabella deve
essere scandita dall’alto o dal basso, o quale parte della
condizione deve essere valutata per prima
• Le query vengono interpretate dal DBMS, che
provvede anche a ottimizzarle
– Ad es. dovendo fare un join e una selezione conviene fare
la selezione prima, per avere meno tuple su cui valutare la
condizione del join
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
45
Le applicazioni
• SQL non è adatto agli utenti finali delle basi di dati
• Si realizzano applicazioni che permettono
un’interazione semplice e schematica
• L’informazione scambiata con l’utente durante
l’esecuzione di un’applicazione è mostrata in una
maschera (o form)
• Esistono strumenti software per la gestione delle
maschere che permettono al programmatore di:
– Definire le maschere
– Associare ogni maschera l’operazione da eseguire sulla base
di dati
• L’utente finale interagisce con le maschere e non vede
né l’SQL, né lo schema della base di dati
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
46
Maschere: definizione
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
47
Maschere: uso
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
48
Rapporti (o report)
• Ulteriore modo per estrarre informazioni dalla base di
dati
• Caratteristiche tipiche:
– Destinati alla stampa o ad essere visualizzati in pagine Web
– Contengono grandi quantità di dati
– Generati periodicamente, senza interazioni con l’utente
• Esistono strumenti software per la definizione dei
rapporti (generatori di report)
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
49
Altri linguaggi
• Linguaggi di quarta generazione
• Consentono di realizzare applicazioni specificandole a
un alto livello
• Il progettista usa tali linguaggi interagendo con loro
tramite interfacce a menu e maschere
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
50
Schemi concettuali e logici: Esempio di
riferimento
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
51
Schemi concettuali e logici: Esempio di
riferimento
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
52
Esercizi
• Visualizzare il nome e il peso specifico degli inquinanti
prodotti nella città di Torino
• Visualizzare tutte le informazioni relative agli inquinanti
prodotti nella città di Torino
• Visualizzare tutte le città in cui viene prodotto un
inquinante
• Visualizzare il nome delle aziende con sede a Milano
e grado di pericolosità superiore o pari a 20
• Visualizzare le coppie di aziende ed inquinanti tali che
entrambi si trovino nella medesima città
• Visualizzare il nome degli inquinanti scaricati durante
la lavorazione del prodotto con codice P3
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
53
Esercizi
• Visualizzare le coppie di nomi di città tali che
un azienda che ha sede nella prima città
scarichi nella seconda un inquinante relativo a
un qualsiasi prodotto
• Visualizzare le coppie di aziende tali che
abbiano sede nella stessa città
SELECT A.NomeA, B.NomeA,
FROM AZIENDA AS A, AZIENDA AS B
WHERE A.Città = B.Città AND A.CodA < B.CodA;
• Visualizzare i nomi delle aziende che
producono inquinanti a Milano, a Venezia, o in
entrambe le città
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
54
Esercizi
• Visualizzare i nomi delle aziende che
scaricano inquinanti a Milano
– Ripetere l’esercizio usando select annidate
• Visualizzare i nomi delle aziende che
non scaricano mercurio
SELECT NomeA FROM AZIENDA
WHERE CodA NOT IN
(SELECT CodA FROM SCARICO,INQUINANTE
WHERE SCARICO.CodI = INQUINANTE.CodI AND NomeI = “Mercurio”);
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
55
Progettare le Basi di Dati
• Progettare un DBMS vuol dire
essenzialmente definirne lo schema
– capire quali tabelle servono
– definire lo schema di ciascuna tabella
– creare le chiavi
• La progettazione delle query e delle
modalità di interazione fa invece
parte della progettazione delle
applicazioni
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
56
Progettare le Basi di Dati
• Innanzitutto si cerca di produrre un modello
concettuale dei dati da gestire
– Il modello è concettuale in quanto prescinde dal
modello logico dei dati adottato dal particolare
DBMS scelto
• Un formalismo molto usato per la descrizione
concettuale dei dati è costituito dai diagrammi
Entity/ Relationship (Chen)
– Entità: ciò che è di interesse per il sistema
– Relazioni: legami di diversa natura tra entità
– Attributi: caratteristiche (proprietà) delle entità e
delle relazioni
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
57
Diagramma E-R: un esempio
• Un sistema per la gestione dell’allocazione delle aule
per i corsi Universitari
• Entità:
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
58
Diagramma E-R: un esempio
• Relazioni:
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
59
Diagramma E-R: un esempio
•
•
•
Molteplicità delle relazioni: indicata graficamente dal “ventagl io” ad una
estremità della relazione; ad es:
Aula--<-Corso, indica che una entità Aula può ospitare più Corsi ma un
Corso può essere ospitato in una sola aula (relazione uno-molti)
Corso->---<-Studente indica che una entità Studente può seguire più
Corsi, e viceversa un Corso può essere seguito da più studenti
(relazione molti-molti):
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
60
Diagramma E-R: un esempio
• Attributi:
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
61
Progettare del DB a partire dal modello
E-R
• Un diagramma E-R può essere “trasformato” in uno
schema logico di DB con qualunque data model
• Tuttavia, i diagrammi E-R sono particolarmente adatti
al progetto di DB relazionali, perché la trasformazione
di un diagramma E-R in uno schema relazionale è
molto semplice:
– un’entità diventa una relazione (tabella)
– un attributo di un’entità diventa un attributo di una relazione
– le relazioni tra entità possono diventare riferimenti diretti da
una tupla di una relazione ad una tupla di un’altra relazione
oppure possono dar luogo ad una relazione aggiuntiva, a
seconda dei casi
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
62
Traduzione di relazioni 1-1
• E1(IdE1: integer, A1: char(1), IdE2: integer)
• E2(IdE2: integer, A2: char(1))
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
63
Traduzione di relazioni 1-n
• E1(IdE1: integer, A1: char(1), IdE2: integer)
• E2(IdE2: integer, A2: char(1))
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
64
Traduzione di relazioni 1-n
• Si possono evitare le ridondanze rappresentando la relazione
inversa
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
65
Traduzione di relazioni n-n
• In questo caso si deve introdurre una tabella apposita per la
relazione
– R(IdE1: integer, IdE2: integer)
Copyright © 2004 - The McGraw-Hill
Companies, srl
Archivi e Basi di Dati
Informatica A – V. Perrone
66
Scarica