Sei sulla pagina 1di 120

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.

org

Base di dati

• Insieme organizzato di dati utilizzati


Atzeni, Ceri, Paraboschi, Torlone per il supporto allo svolgimento di
attività (di un ente, azienda, ufficio,
Basi di dati
McGraw -Hill, 1996-2002 persona)

Capitolo 1:
Introduzione

24/09/2002
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 2
Basi di dati, Capitolo 1

Punti di vista Che cos'è l'informatica?

• Metodologico • Scienza del trattamento razionale,


• Tecnologico specialmente per mezzo di macchine
automatiche, dell’informazione,
considerata come supporto alla
conoscenza umana e alla
comunicazione (Accad. di Francia)
Due anime:
– metodologica
– tecnologica

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 3 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 4


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Contenuti Metodo di studio

• modelli per l'organizzazione dei dati • studio individuale, con riflessione sui
• linguaggi per l'utilizzo dei dati concetti e riferimento alle esperienze
personali
• sistemi per la gestione dei dati
• metodologie di progettazione di basi • svolgimento di esercizi
di dati • sviluppo di progetti, con
realizzazione con opportuno
strumento (MS Access, Oracle, DB2,
SQLServer, Informix, …)
Il corso

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 5 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 6


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

1
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Sistema informativo Sistema informativo, commenti

• Componente (sottosistema) di una • Ogni organizzazione ha un sistema


organizzazione che gestisce informativo, eventualmente non esplicitato
nella struttura
(acquisisce, elabora, conserva, • Quasi sempre, il sistema informativo è di
produce) le informazioni di interesse supporto ad altri sottosistemi, e va quindi
(cioè utilizzate per il perseguimento studiato nel contesto in cui è inserito
degli scopi dell’organizzazione ) • Il sistema informativo è di solito suddiviso
in sottosistemi (in modo gerarchico o
decentrato), più o meno fortemente
integrati

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 7 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 8


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Sistema organizzativo Risorse

• Insieme di risorse e regole per lo • le risorse di una azienda (o ente,


svolgimento coordinato delle attività amministrazione):
(processi) al fine del perseguimento degli
scopi – persone
– denaro
– materiali
– informazioni

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 9 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 10


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Sistema organizzativo e
Sistemi informativi e automazione
sistema informativo
• Il concetto di “sistema informativo”
• Il sistema informativo è parte del è indipendente da qualsiasi
sistema organizzativo automatizzazione:
• Il sistema informativo – esistono organizzazioni la cui
esegue/gestisce processi informativi ragion d’essere è la gestione di
(cioè i processi che coinvolgono informazioni (p. es. servizi
informazioni) anagrafici e banche) e che operano
da secoli

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 11 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 12


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

2
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Sistema Informatico Sistema Informatico


Sistema azienda
• porzione automatizzata del sistema
informativo: Sistema organizzativo
la parte del sistema informativo che
Sistema informativo
gestisce informazioni con
tecnologia informatica Sistema
informatico

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 13 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 14


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Gestione delle informazioni Gestione delle informazioni

• Raccolta, acquisizione • Nelle attività umane, le informazioni


vengono gestite in forme diverse:
• Archiviazione, conservazione – idee informali
• Elaborazione, trasformazione, – linguaggio naturale (scritto o parlato,
produzione formale o colloquiale, in varie lingue)
• Distribuzione, comunicazione, – disegni, grafici, schemi
scambio – numeri e codici
• e su vari supporti
– mente umana, carta, dispositivi
elettronici

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 15 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 16


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Gestione delle informazioni Informazioni e dati

• Nelle attività standardizzate dei sistemi • Nei sistemi informatici (e non solo),
informativi complessi, sono state le informazioni vengono
introdotte col tempo forme di
organizzazione e codifica delle rappresentate in modo essenziale,
informazioni spartano: attraverso i dati
• Ad esempio, nei servizi anagrafici si è
iniziato con registrazioni discorsive e poi
– nome e cognome
– estremi anagrafici
– codice fiscale

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 17 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 18


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

3
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Informazioni e dati Dati e informazioni


(definizioni dal Vocabolario della lingua italiana 1987) • Un esempio:
Mario 275
informazione : notizia, dato o elemento che su un foglio di carta sono due dati e non
consente di avere conoscenza più o meno significano molto
esatta di fatti, situazioni, modi di essere.
• Se il foglio di carta viene fornito in
dato: ciò che è immediatamente presente risposta alla domanda “A chi mi devo
alla conoscenza, prima di ogni rivolgere per il problema X; qual è il suo
elaborazione; (in informatica) elementi di numero di telefono?”, allora i dati
informazione costituiti da simboli che possono essere interpretati per fornire
debbono essere elaborati informazione e arricchire la conoscenza

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 19 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 20


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Perché i dati? Base di dati

• La rappresentazione precisa di forme (accezione generica, metodologica )


più ricche di informazione e • Insieme organizzato di dati utilizzati
conoscenza è difficile
per il supporto allo svolgimento delle
• I dati costituiscono spesso una attività di un ente (azienda, ufficio,
risorsa strategica, perché più stabili
nel tempo di altre componenti persona)
(processi, tecnologie, ruoli umani): (accezione specifica, metodologica e
– ad esempio, i dati delle banche o tecnologica )
delle anagrafi • insieme di dati gestito da un DBMS

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 21 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 22


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Che cos'è l'informatica? Base di dati

• Scienza del trattamento razionale, (accezione generica, metodologica )


specialmente per mezzo di macchine • Insieme organizzato di dati utilizzati
automatiche, dell’informazione, per il supporto allo svolgimento delle
considerata come supporto alla attività di un ente (azienda, ufficio,
conoscenza umana e alla persona)
comunicazione (Accad. di Francia)
Due anime: (accezione specifica, metodologica e
tecnologica )
– metodologica
– tecnologica • insieme di dati gestito da un DBMS

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 23 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 24


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

4
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Sistema di gestione di basi di dati


DBMS
DataBase Management System (DBMS)
• Prodotti software (complessi)
• Sistema che gestisce collezioni di dati:
disponibili sul mercato; esempi:
– grandi
– persistenti – Access
– condivise – DB2
garantendo – Oracle
– privatezza – Informix
– affidabilità – Sybase
– efficienza – SQLServer
– efficacia

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 25 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 26


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Le basi di dati sono ... grandi Le basi di dati sono ... persistenti

• dimensioni (molto) maggiori della • hanno un tempo di vita indipendente


memoria centrale dei sistemi di dalle singole esecuzioni dei
calcolo utilizzati programmi che le utilizzano
• il limite deve essere solo quello
fisico dei dispositivi

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 27 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 28


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Le basi di dati sono ... condivise

• Ogni organizzazione (specie se


grande) è divisa in settori o
comunque svolge diverse attività
• Ciascun settore/attività ha un
(sotto)sistema informativo (non
necessariamente disgiunto)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 29 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 30


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

5
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Problemi

• Ridondanza:
– informazioni ripetute
• Rischio di incoerenza:
– le versioni possono non coincidere

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 31 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 32


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Archivi e basi di dati Archivi e basi di dati

Gestione Archivio 1: Gestione


orario lezioni orario lezioni orario lezioni

Base di dati
Gestione Archivio 2: Gestione
ricevimento ricevimento ricevimento

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 33 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 34


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Le basi di dati sono condivise I DBMS garantiscono ... privatezza

• Una base di dati e' una risorsa • Si possono definire meccanismi di


integrata , condivisa fra applicazioni autorizzazione
• conseguenze – l'utente A è autorizzato a leggere
– Attivita' diverse su dati condivisi: tutti i dati e a modificare quelli sul
• meccanismi di autorizzazione ricevimento
– Accessi di più utenti ai dati – l'utente B è autorizzato a leggere i
X e a modificare Y
condivisi:
• controllo della concorrenza
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 35 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 36
Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

6
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

I DBMS garantiscono... affidabilità Transazione

• Affidabilità (per le basi di dati): • Insieme di operazioni da considerare


– resistenza a malfunzionamenti indivisibile ("atomico"), corretto
hardware e software anche in presenza di concorrenza e
• Una base di dati è una risorsa con effetti definitivi
pregiata e quindi deve essere
conservata a lungo termine
• Tecnica fondamentale:
– gestione delle transazioni
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 37 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 38
Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Le transazioni sono … atomiche Le transazioni sono … concorrenti

• La sequenza di operazioni sulla base • L'effetto di transazioni concorrenti


di dati viene eseguita per intero o per deve essere coerente (ad esempio
niente: "equivalente" all'esecuzione
– trasferimento di fondi da un conto separata)
A ad un conto B: o si fanno il – se due assegni emessi sullo
prelevamento da A e il versamento stesso conto corrente vengono
su B o nessuno dei due incassati contemporaneamente si
deve evitare di trascurarne uno

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 39 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 40


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

I risultati delle transazioni sono


I DBMS debbono essere...efficienti
permanenti
• La conclusione positiva di una • Cercano di utilizzando al meglio le
transazione corrisponde ad un risorse di spazio di memoria
impegno (in inglese commit) a (principale e secondaria) e tempo (di
mantenere traccia del risultato in esecuzione e di risposta)
modo definitivo, anche in presenza di • I DBMS, con tante funzioni, rischiano
guasti e di esecuzione concorrente l'inefficienza e per questo ci sono
grandi investimenti e competizione
• L’efficienza è anche il risultato della
qualità delle applicazioni
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 41 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 42
Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

7
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

I DBMS debbono essere...efficaci DBMS vs file system

• Cercano di rendere produttive le • La gestione di insiemi di dati grandi e


attività dei loro utilizzatori, offrendo persistenti è possibile anche attraverso
sistemi più semplici — gli ordinari file
funzionalità articolate, potenti e system dei sistemi operativi
flessibili: • I file system prevedono forme rudimentali
– il corso è in buona parte dedicato di condivisione: "tutto o niente"
ad illustrare come i DBMS • I DBMS estendono le funzionalità dei file
system, fornendo più servizi ed in maniera
perseguono l'efficacia integrata

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 43 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 44


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

DBMS vs file system (2) Descrizioni dei dati nei DBMS

• Nei programmi tradizionali che accedono • Rappresentazioni dei dati a livelli diversi
a file, ogni programma contiene una – permettono l’indipendenza dei dati dalla
descrizione della struttura del file stesso, rappresentazione fisica:
con i conseguenti rischi di incoerenza fra
• i programmi fanno riferimento alla
le descrizioni (ripetute in ciascun struttura a livello più alto, e le
programma) e i file stessi rappresentazioni sottostanti possono
• Nei DBMS, esiste una porzione della base essere modificate senza necessità di
di dati (il catalogo o dizionario) che modifica dei programmi
contiene una descrizione centralizzata dei – Precisiamo attraverso il concetto di
dati, che può essere utilizzata dai vari
programmi • modello dei dati
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 45 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 46
Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Modello dei dati


• Insieme di costrutti utilizzati per
organizzare i dati di interesse e
descriverne la dinamica
• Componente fondamentale: meccanismi
di strutturazione (o costruttori di tipo)
• Come nei linguaggi di programmazione
esistono meccanismi che permettono di
definire nuovi tipi, così ogni modello dei
dati prevede alcuni costruttori
• Esempio: il modello relazionale prevede il
costruttore relazione , che permette di
definire insiemi di record omogenei
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 47 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 48
Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

8
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Organizzazione dei dati in una


Basi di dati: schema e istanza
base di dati
Lo schema della base di dati
Orario Orario
Insegnamento Docente Aula Ora Insegnamento Docente Aula Ora
Analisi matem. I Luigi Neri N1 8:00 Analisi matem. I Luigi Neri N1 8:00
Basi di dati Piero Rossi N2 9:45 Basi di dati Piero Rossi N2 9:45
Chimica Nicola Mori N1 9:45 Chimica Nicola Mori N1 9:45
Fisica I Mario Bruni N1 11:45 Fisica I Mario Bruni N1 11:45
Fisica II Mario Bruni N3 9:45 Fisica II Mario Bruni N3 9:45
Sistemi inform. Piero Rossi N3 8:00 Sistemi inform. Piero Rossi N3 8:00
L'istanza della base di dati
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 49 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 50
Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Schema e istanza Due tipi (principali) di modelli

• In ogni base di dati esistono: • modelli logici


– lo schema, sostanzialmente invariante • modelli concettuali
nel tempo, che ne descrive la struttura
(aspetto intensionale)
• es.: le intestazioni delle tabelle
– l’istanza, i valori attuali, che possono
cambiare anche molto rapidamente
(aspetto estensionale)
• es.: il “corpo” di ciascuna tabella
Ex
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 51 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 52
Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Modelli logici Modelli concettuali

• Adottati nei DBMS esistenti per • Permettono di rappresentare i dati in


l’organizzazione dei dati modo indipendente da ogni sistema
– utilizzati dai programmi – cercano di descrivere i concetti del
– indipendenti dalle strutture fisiche mondo reale
• esempi: relazionale, reticolare, – sono utilizzati nelle fasi preliminari
gerarchico, a oggetti di progettazione
• Il più diffuso è il modello Entity-
Relationship

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 53 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 54


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

9
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Architettura (semplificata) di un Architettura semplificata di un


DBMS DBMS: schemi
• schema logico: descrizione della
utente
base di dati nel modello logico (ad
esempio, la struttura della tabella)
Schema logico • schema interno (o fisico):
rappresentazione dello schema
logico per mezzo di strutture
Schema interno memorizzazione (file; ad esempio,
record con puntatori, ordinati in un
certo modo)
BD

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 55 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 56


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Architettura standard
Indipendenza dei dati (ANSI/SPARC)
a tre livelli per DBMS
• Il livello logico è indipendente da utente
utente utente utente utente

quello fisico:
Schema Schema Schema
– una tabella è utilizzata nello stesso esterno esterno esterno
modo qualunque sia la sua
realizzazione fisica (che può anche Schema logico
cambiare nel tempo)
• Perciò in questo corso vedremo solo Schema interno
il livello logico e non quello fisico
BD

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 57 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 58


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Architettura ANSI/SPARC: schemi Una vista


Corsi
schema logico: descrizione dell’intera base Aule
Corso Docente Aula
di dati nel modello logico “principale” del Nome Edificio Piano
Basi di dati Rossi DS3
DBMS DS1 OMI Terra
Sistemi Neri N3
Schema interno (o fisico): rappresentazione N3 OMI Terra
Reti Bruni N3
dello schema logico per mezzo di strutture G Pincherle Primo
Controlli Bruni G
fisiche di memorizzazione
schema esterno: descrizione di parte della CorsiSedi Corso Aula Edificio Piano
base di dati in un modello logico (“viste” Sistemi N3 OMI Terra
parziali, derivate, anche in modelli diversi) Reti N3 OMI Terra
Controlli G Pincherle Primo
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 59 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 60
Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

10
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Indipendenza dei dati Indipendenza fisica

• conseguenza della articolazione in • il livello logico e quello esterno sono


livelli indipendenti da quello fisico
• l’accesso avviene solo tramite il – una relazione è utilizzata nello
livello esterno (che può coincidere stesso modo qualunque sia la sua
con il livello logico) realizzazione fisica
• due forme: – la realizzazione fisica può
– indipendenza fisica cambiare senza che debbano
– indipendenza logica essere modificati i programmi

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 61 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 62


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Indipendenza logica Linguaggi per basi di dati

• il livello esterno è indipendente da • Un altro contributo all’efficacia:


quello logico disponibilità di vari linguaggi e interfacce
ð linguaggi testuali interattivi (SQL)
• aggiunte o modifiche alle viste non ð comandi (SQL) immersi in un
richiedono modifiche al livello logico linguaggio ospite (Pascal, Java, C ...)
• modifiche allo schema logico che ð comandi (SQL) immersi in un
lascino inalterato lo schema esterno linguaggio ad hoc, con anche altre
funzionalità (p.es. per grafici o stampe
sono trasparenti strutturate)
ð con interfacce amichevoli (senza
linguaggio testuale)
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 63 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 64
Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

SQL, un linguaggio interattivo SQL, un linguaggio interattivo

• "Trovare i corsi tenuti in aule a piano SELECT Corso, Aula, Piano


terra" FROM Aule, Corsi
WHERE Nome = Aula
Corsi Aule AND Piano = "Terra"
Corso Docente Aula Nome Edificio Piano
Basi di dati Rossi DS3 DS1 OMI Terra Corso Aula Piano
Sistemi Neri N3 N3 OMI Terra Sistemi N3 Terra
Reti Bruni N3 G Pincherle Primo Reti N3 Terra
Controlli Bruni G

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 65 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 66


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

11
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

SQL in linguaggio ad hoc


SQL immerso in linguaggio ospite
(Oracle PL/SQL)
write('nome della citta''?'); readln(citta); declare Stip number;
EXEC SQL DECLARE P CURSOR FOR begin
SELECT NOME, REDDITO select Stipendio into Stip from Impiegato
FROM PERSONE where Matricola = '575488' for update of Stipendio;
WHERE CITTA = :citta ; if Stip > 30 then
EXEC SQL OPEN P ; update Impiegato set Stipendio = Stipendio * 1.1
EXEC SQL FETCH P INTO :nome, :reddito ; where Matricola = '575488';
while SQLCODE = 0 do begin else
write('nome della persona:', nome, 'aumento?'); update Impiegato set Stipendio = Stipendio * 1.15
readln(aumento); where Matricola = '575488';
EXEC SQL UPDATE PERSONE end if;
SET REDDITO = REDDITO + :aumento commit;
WHERE CURRENT OF P exception
EXEC SQL FETCH P INTO :nome, :reddito when no_data_found then
end; insert into Errori values('Matricola inesistente',sysdate);
EXEC SQL CLOSE CURSOR P end;
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 67 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 68
Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Una distinzione terminologica


Interazione non testuale (Access)
(separazione fra dati e programmi)
data manipulation language (DML)
per l’interrogazione e
l’aggiornamento di (istanze di) basi
di dati
data definition language (DDL)
per la definizione di schemi (logici,
esterni, fisici) e altre operazioni
generali

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 69 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 70


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Un'operazione DDL
Personaggi e interpreti
(sullo schema)
• progettisti e realizzatori di DBMS
• progettisti della base di dati e
CREATE TABLE orario ( amministratori della base di dati (DBA)
insegnamento CHAR(20) , • progettisti e programmatori di applicazioni
docente CHAR(20) , • utenti
aula CHAR(4) , – utenti finali (terminalisti): eseguono
ora CHAR(5) ) applicazioni predefinite (transazioni)
– utenti casuali: eseguono operazioni non
previste a priori, usando linguaggi
interattivi

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 71 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 72


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

12
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Database administrator (DBA) Transazioni (per l'utente)

• Persona o gruppo di persone • Programmi che realizzano attività frequenti e


responsabile del controllo predefinite, con poche eccezioni, previste a priori.
centralizzato e della gestione del • Esempi:
sistema, delle prestazioni, – versamento presso uno presso sportello
bancario
dell’affidabilità, delle autorizzazioni
– emissione di certificato anagrafico
• Le funzioni del DBA includono quelle – dichiarazione presso l’ufficio di stato civile
di progettazione, anche se in progetti – prenotazione aerea
complessi ci possono essere • Le transazioni sono di solito realizzate in
distinzioni linguaggio ospite (tradizionale o ad hoc)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 73 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 74


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Transazioni, due accezioni Vantaggi e svantaggi dei DBMS, 1

• Per l'utente: Pro


• dati come risorsa comune, base di dati
– programma a disposizione, da come modello della realtà
eseguire per realizzare una • gestione centralizzata con possibilità di
funzione di interesse standardizzazione ed “economia di scala”
• Per il sistema: • disponibilità di servizi integrati
– sequenza indivisibile di operazioni • riduzione di ridondanze e inconsistenze
• indipendenza dei dati (favorisce lo
(cfr. affidabilità ) sviluppo e la manutenzione delle
applicazioni)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 75 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 76


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

Vantaggi e svantaggi dei DBMS, 2

Contro Esercizi su
• costo dei prodotti e della transizione verso
di essi Basi di dati e DBMS
• non scorporabilità delle funzionalità (con
riduzione di efficienza)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 77 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 78


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

13
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

• Quali delle seguenti affermazioni sono vere? • Quali delle seguenti affermazioni sono vere?
– l'indipendenza dei dati permette di scrivere – il fatto che le basi di dati siano condivise
programmi senza conoscere le strutture favorisce l'efficienza dei programmi che le
fisiche dei dati utilizzano
– l'indipendenza dei dati permette di modificare – il fatto che le basi di dati siano condivise
le strutture fisiche dei dati senza dover permette di ridurre ridondanze e inconsistenze
modificare i programmi che accedono alla – il fatto che le basi di dati siano persistenti ne
base di dati garantisce l'affidabilità
– l'indipendenza dei dati permette di scrivere – il fatto che le basi di dati siano persistenti
programmi conoscendo solo lo schema favorisce l'efficienza dei programmi
concettuale della BD – il fatto che le basi di dati siano condivise rende
– l'indipendenza dei dati permette di formulare necessaria la gestione della privatezza e delle
interrogazioni senza conoscere le strutture autorizzazioni
fisiche
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 79 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 80
Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

• Quali delle seguenti affermazioni sono vere?


• Quali delle seguenti affermazioni sono vere?
– gli utenti casuali utilizzano transazioni
– la distinzione fra DDL e DML corrisponde alla predefinite
distinzione fra schema e istanza
– i terminalisti utilizzano transazioni predefinite
– le istruzioni DML permettono di interrogare la
base di dati ma non di modificarla – gli utenti casuali progettano la base di dati
– i progettisti del DBMS realizzano le transazioni
– le istruzioni DDL permettono di specificare la
che saranno utilizzate dai terminalisti
struttura della base di dati ma non di
modificarla – i progettisti della base di dati realizzano il
DBMS
– non esistono linguaggi che includono sia
istruzioni DDL sia istruzioni DML – i progettisti delle applicazioni utilizzano la
base di dati come progettata dal progettista del
– SQL include istruzioni DML e DDL
DBMS
– le istruzioni DML permettono di interrogare la
– i progettisti delle applicazioni utilizzano la BD
base di dati e di modificarla
come progettata dal progettista della BD

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 81 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 82


Basi di dati, Capitolo 1 Basi di dati, Capitolo 1

• Illustrare, in modo sintetico ma chiaro,


supponendo di rivolgersi ad un non esperto,le
caratteristiche fondamentali delle basi di dati e il
ruolo che esse giocano nei sistemi informativi.
• Discutere brevemente (meno di mezza pagina) la
seguente affermazione: "i dati sono una risorsa
per una organizzazione, e come tali vanno
considerati anche separatamente dalle
applicazioni che li utilizzano.''
• Illustrare brevemente (non più di mezza pagina) il
concetto di indipendenza dei dati.

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 83
Basi di dati, Capitolo 1

14
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

I modelli logici dei dati

• Tre modelli logici tradizionali


Atzeni, Ceri, Paraboschi, Torlone • gerarchico
Basi di dati • reticolare
McGraw -Hill, 1996-2002 • relazionale
• Più recente (e poco diffuso)
Capitolo 2: • a oggetti
IL MODELLO RELAZIONALE
24/09/2002

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 2
Basi di dati, Capitolo 2

Modelli logici, caratteristiche Il modello relazionale

• Gerarchico e reticolare • Proposto da E. F. Codd nel 1970 per


• utilizzano riferimenti espliciti (puntatori) fra favorire l’indipendenza dei dati
record
• Disponibile in DBMS reali nel 1981 (non
• Relazionale "è basato su valori"
è facile implementare l’indipendenza
• anche i riferimenti fra dati in strutture
con efficienza e affidabilità!)
(relazioni) diverse sono rappresentati per
mezzo dei valori stessi • Si basa sul concetto matematico di
relazione (con una variante)
• Le relazioni hanno naturale
rappresentazione per mezzo di tabelle
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 3 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 4
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Relazione: tre accezioni Relazione matematica

• relazione matematica : come nella teoria • D1, …, Dn (n insiemi anche non distinti)
degli insiemi • prodotto cartesiano D1×…×Dn:
• relazione (dall’inglese relationship) che • l’insieme di tutte le n-uple (d1, …, dn)
rappresenta una classe di fatti, nel tali che d1∈D1, …, dn ∈ Dn
modello Entity-Relationship; tradotto • relazione matematica su D1, …, Dn:
anche con associazione o correlazione • un sottoinsieme di D1×…×Dn.
• relazione secondo il modello relazionale • D1, …, Dn sono i domini della relazione
dei dati

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 5 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 6


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

1
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Relazione matematica, esempio Relazione matematica, proprietà

• D1={a,b} • una relazione matematica è un insieme


• D2={x,y,z} a x di n-uple ordinate:
• prodotto cartesiano D1 × D2 a y • (d1, …, dn) tali che d1∈D1, …, dn ∈ Dn
a z
b x
• una relazione è un insieme; quindi:
b y • non c'è ordinamento fra le n-uple
b z • le n-uple sono distinte
• una relazione r ⊆ D1 × D2 a x • ciascuna n-upla è ordinata: l’ i-esimo
a z valore proviene dall’ i-esimo dominio
b y
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 7 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 8
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Relazione matematica, esempio Struttura non posizionale

Partite ⊆ string × string × int × int • A ciascun dominio si associa un nome


(attributo), che ne descrive il "ruolo"
Juve Lazio 3 1
Lazio Milan 2 0
Juve Roma 0 2 Casa Fuori RetiCasaRetiFuori
Roma Milan 0 1 Juve Lazio 3 1
Lazio Milan 2 0
• Ciascuno dei domini ha due ruoli diversi, Juve Roma 0 2
distinguibili attraverso la posizione: Roma Milan 0 1

• La struttura è posizionale

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 9 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 10


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Tabelle e relazioni Il modello è basato su valori

• Una tabella rappresenta una relazione se • i riferimenti fra dati in relazioni diverse
• i valori di ogni colonna sono fra loro sono rappresentati per mezzo di valori
omogenei dei domini che compaiono nelle ennuple
• le righe sono diverse fra loro
• le intestazioni delle colonne sono diverse
tra loro
• In una tabella che rappresenta una relazione
• l’ordinamento tra le righe è irrilevante
• l’ordinamento tra le colonne è irrilevante

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 11 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 12


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

2
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

studenti Matricola Cognome Nome Data di nascita studenti Matricola Cognome Nome Data di nascita
6554 Rossi Mario 05/12/1978 6554 Rossi Mario 05/12/1978
8765 Neri Paolo 03/11/1976 8765 Neri Paolo 03/11/1976
9283 Verdi Luisa 12/11/1979 9283 Verdi Luisa 12/11/1979
3456 Rossi Maria 01/02/1978 3456 Rossi Maria 01/02/1978
esami Studente Voto Corso esami Studente Voto Corso
3456 30 04 30
3456 24 02 24
9283 28 01 28
6554 26 01 26
corsi Codice Titolo Docente corsi Codice Titolo Docente
01 Analisi Mario 01 Analisi Mario
02 Chimica Bruni 02 Chimica Bruni
04 Chimica Verdi 04 Chimica Verdi
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 13 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 14
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Struttura basata su valori: vantaggi Definizioni

• indipendenza dalle strutture fisiche (si


• Schema di relazione :
potrebbe avere anche con puntatori di alto
livello) che possono cambiare dinamicamente un nome R con un insieme di attributi
• si rappresenta solo ciò che è rilevante dal A1, ..., An:
punto di vista dell’applicazione R(A 1,..., An)
• l’utente finale vede gli stessi dati dei
• Schema di base di dati:
programmatori
• i dati sono portabili piu' facilmente da un insieme di schemi di relazione:
sistema ad un altro R = {R1(X 1), ..., Rk(X k)}
• i puntatori sono direzionali
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 15 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 16
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Definizioni, 2 Definizioni, 3

• Una ennupla su un insieme di attributi • (Istanza di) relazione su uno schema


X è una funzione che associa a ciascun R(X):
attributo A in X un valore del dominio insieme r di ennuple su X
di A • (Istanza di) base di dati su uno schema
• t[A] denota il valore della ennupla t R= {R1(X 1), ..., Rn(X n)}:
sull'attributo A insieme di relazioni r = {r1,..., rn} (con ri
relazione su Ri)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 17 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 18


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

3
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Relazioni su singoli attributi Strutture nidificate


Da Filippo Da Filippo
studenti Via Roma 2, Roma Via Roma 2, Roma
Matricola Cognome Nome Data di nascita
6554 Rossi Mario 05/12/1978 Ricevuta Fiscale Ricevuta Fiscale
8765 Neri Paolo 03/11/1976 1235 del 12/10/2000 1240 del 13/10/2000
9283 Verdi Luisa 12/11/1979 3 Coperti 3,00 2 Coperti 2,00
3456 Rossi Maria 01/02/1978 2 Antipasti 6,20 2 Antipasti 7,00
3 Primi 12,00 2 Primi 8,00
2 Bistecche 18,00 2 Orate 20,00
studenti lavoratori Matricola 2 Caffè 2,00
6554
3456
Totale 39,20 Totale 39,00
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 19 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 20
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Relazioni che rappresentano


Strutture nidifcate , riflessione
strutture nidificate
Ricevute Numero Data Totale • Abbiamo rappresentato veramente tutti
1235 12/10/2000 39,20
gli aspetti delle ricevute?
1240 13/10/2000 39,00
• Dipende da che cosa ci interessa!
Dettaglio Numero Qtà Descrizione Importo • l'ordine delle righe e' rilevante?
1235 3 Coperti 3,00 • possono esistere linee ripetute in una
1235 2 Antipasti 6,20 ricevuta?
1235 3 Primi 12,00
1235 2 Bistecche 18,00
1240 2 Coperti 2,00 • Sono possibili rappresentazioni diverse
… … … …
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 21 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 22
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Rappresentazione alternativa per


Informazione incompleta
strutture nidificate
Ricevute Numero Data Totale • ll modello relazionale impone ai dati una
1235 12/10/2000 39,20
struttura rigida:
1240 13/10/2000 39,00
• le informazioni sono rappresentate
Dettaglio Numero Riga Qtà Descrizione Importo per mezzo di ennuple
1235 1 3 Coperti 3,00 • solo alcuni formati di ennuple sono
1235 2 2 Antipasti 6,20 ammessi: quelli che corrispondono
1235 3 3 Primi 12,00 agli schemi di relazione
1235 4 2 Bistecche 18,00
• I dati disponibili possono non
1240 1 2 Coperti 2,00
… … … … … corrispondere al formato previsto
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 23 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 24
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

4
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Informazione incompleta:
Informazione incompleta: soluzioni?
motivazioni
• non conviene (anche se spesso si fa) usare
Nome SecondoNome Cognome valori del dominio (0, stringa nulla, “99”, ...):
Franklin Delano Roosevelt • potrebbero non esistere valori “non
utilizzati”
Winston Churchill
Charles De Gaulle • valori “non utilizzati” potrebbero diventare
significativi
Josip Stalin
• in fase di utilizzo (nei programmi) sarebbe
necessario ogni volta tener conto del
“significato” di questi valori

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 25 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 26


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Informazione incompleta
Troppi valori nulli
nel modello relazionale
studenti Matricola Cognome Nome Data di nascita
• Tecnica rudimentale ma efficace: 6554 Rossi Mario 05/12/1978
• valore nullo: denota l’assenza di un valore 9283 Verdi Luisa 12/11/1979
del dominio (e non è un valore del dominio) NULL Rossi Maria 01/02/1978
• t[A], per ogni attributo A, è un valore del esami Studente Voto Corso
dominio dom(A) oppure il valore nullo NULL NULL 30 NULL
• Si possono (e debbono) imporre restrizioni NULL 24 02
9283 28 01
sulla presenza di valori nulli
corsi Codice Titolo Docente
01 Analisi Mario
02 NULL NULL
04 Chimica Verdi
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 27 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 28
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Tipi di valore nullo Vincoli di integrità

• (almeno) tre casi differenti • Esistono istanze di basi di dati che,


• valore sconosciuto pur sintatticamente corrette, non
• valore inesistente rappresentano informazioni possibili
• valore senza informazione per l’applicazione di interesse
• I DBMS non distinguono i tipi di valore
nullo

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 29 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 30


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

5
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Una base di dati "scorretta" Vincolo di integrità

Esami Studente Voto Lode Corso


276545 32 01
• Proprietà che deve essere soddisfatta
276545 30 e lode 02 dalle istanze che rappresentano
787643 27 e lode 03 informazioni corrette per
739430 24 04 l’applicazione
Studenti Matricola Cognome Nome • Un vincolo è una funzione booleana
276545 Rossi Mario (un predicato):
787643 Neri Piero associa ad ogni istanza il valore vero
787643 Bianchi Luca o falso

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 31 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 32


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Vincoli di integrità, nota


Vincoli di integrità, perché?
• descrizione più accurata della realtà • non tutte le proprietà di interesse
• contributo alla “qualità dei dati” sono rappresentabili per mezzo di
• utili nella progettazione (vedremo) vincoli formulabili in modo esplicito
• usati dai DBMS nella esecuzione delle
interrogazioni

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 33 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 34


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Tipi di vincoli

Esami Studente Voto Lode Corso


• vincoli intrarelazionali 276545 32 01
• vincoli su valori (o di dominio) 276545 30 e lode 02
• vincoli di ennupla 787643 27 e lode 03
739430 24 04
• vincoli interrelazionali
Studenti Matricola Cognome Nome
276545 Rossi Mario
787643 Neri Piero
787643 Bianchi Luca

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 35 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 36


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

6
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Vincoli di ennupla Sintassi ed esempi

• Esprimono condizioni sui valori di • Una possibile sintassi:


ciascuna ennupla, indipendentemente • espressione booleana di atomi che
dalle altre ennuple confrontano valori di attributo o
• Caso particolare: espressioni aritmetiche su di essi
• Vincoli di dominio: coinvolgono un
solo attributo (Voto ≥ 18) AND (Voto ≤ 30)

(Voto = 30) OR NOT (Lode = "e lode")


24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 37 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 38
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Vincoli di ennupla, esempio Identificazione delle ennuple

Matricola Cognome Nome Corso Nascita


27655 Rossi Mario Ing Inf 5/12/78
Stipendi Impiegato Lordo Ritenute Netto 78763 Rossi Mario Ing Inf 3/11/76
Rossi 55.000 12.500 42.500 65432 Neri Piero Ing Mecc 10/7/79
Neri 45.000 10.000 35.000 87654 Neri Mario Ing Inf 3/11/76
Bruni 47.000 11.000 36.000 67653 Rossi Piero Ing Mecc 5/12/78
• non ci sono due ennuple con lo stesso
valore sull’attributo Matricola
Lordo = (Ritenute + Netto) • non ci sono due ennuple uguali su tutti e
tre gli attributi Cognome, Nome e Data di
Nascita
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 39 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 40
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Chiave Una chiave


• insieme di attributi che identificano le Matricola Cognome Nome Corso Nascita
ennuple di una relazione 27655 Rossi Mario Ing Inf 5/12/78
Formalmente: 78763 Rossi Mario Ing Inf 3/11/76
65432 Neri Piero Ing Mecc 10/7/79
• un insieme K di attributi è superchiave 87654 Neri Mario Ing Inf 3/11/76
per r se r non contiene due ennuple 67653 Rossi Piero Ing Mecc 5/12/78
distinte t1 e t2 con t1[K] = t2[K]
• Matricola è una chiave:
• K è chiave per r se è una superchiave • è superchiave
minimale per r
• contiene un solo attributo e quindi è
(cioè non contiene un’altra superchiave)
minimale
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 41 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 42
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

7
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Un'altra chiave Un'altra chiave??


Matricola Cognome Nome Corso Nascita
Matricola Cognome Nome Corso Nascita
Ing Inf 27655 Rossi Mario Ing Inf 5/12/78
27655 Rossi Mario
Rossi Mario 5/12/78
5/12/78
78763 Rossi Mario Ing Civile 3/11/76
78763 Rossi
Rossi Mario
Mario Ing Inf 3/11/76
3/11/76
65432 Neri Piero Ing Mecc 10/7/79
65432 Neri Piero Ing Mecc 10/7/79
87654 Neri Mario Ing Inf 3/11/76
87654 Neri Mario
Mario Ing Inf 3/11/76
3/11/76
67653 Rossi Piero Ing Mecc 5/12/78
67653 Rossi
Rossi Piero Ing Mecc 5/12/78
5/12/78
• Cognome, Nome, Nascita è un’altra • Non ci sono ennuple uguali su Cognome
chiave: e Corso:
• è superchiave • Cognome e Corso formano una chiave
• minimale • Ma è sempre vero?
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 43 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 44
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Vincoli, schemi e istanze


Studenti
• i vincoli corrispondono a proprietà del mondo Matricola Cognome Nome Corso Nascita
reale modellato dalla base di dati
• interessano a livello di schema (con
riferimento cioè a tutte le istanze) • chiavi:
• ad uno schema associamo un insieme di
Matricola
vincoli e consideriamo corrette (valide,
ammissibili) le istanze che soddisfano tutti i Cognome, Nome, Nascita
vincoli
• un'istanza può soddisfare altri vincoli (“per
caso”)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 45 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 46


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Esistenza delle chiavi


Matricola Cognome Nome Corso Nascita
27655 Rossi Mario Ing Inf 5/12/78
78763 Rossi Mario Ing Civile 3/11/76 • Una relazione non può contenere
65432 Neri Piero Ing Mecc 10/7/79
87654 Neri Mario Ing Inf 3/11/76
ennuple distinte ma uguali
67653 Rossi Piero Ing Mecc 5/12/78 • Ogni relazione ha come superchiave
l’insieme degli attributi su cui è definita
• È corretta: soddisfa i vincoli • e quindi ha (almeno) una chiave
• Ne soddisfa anche altri ("per caso"):
• Cognome, Corso è chiave

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 47 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 48


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

8
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Importanza delle chiavi Chiavi e valori nulli

• l’esistenza delle chiavi garantisce • In presenza di valori nulli, i valori della


l’accessibilità a ciascun dato della base chiave non permettono
di dati • di identificare le ennuple
• le chiavi permettono di correlare i dati in • di realizzare facilmente i riferimenti da
relazioni diverse: altre relazioni
• il modello relazionale è basato su
valori

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 49 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 50


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Chiave primaria
Matricola Cognome Nome Corso Nascita
NULL NULL
NULL Mario Ing Inf 5/12/78 • Chiave su cui non sono ammessi nulli
78763 Rossi Mario Ing Civile 3/11/76 • Notazione: sottolineatura
65432 Neri Piero Ing Mecc 10/7/79
Matricola Cognome Nome Corso Nascita
87654
87654 Neri
Neri Mario
Mario Ing
Ing Inf
Inf NULL
NULL 86765 NULL Mario Ing Inf 5/12/78
NULL
NULL Neri
Neri Mario
Mario NULL
NULL 5/12/78
5/12/78 78763 Rossi Mario Ing Civile 3/11/76
65432 Neri Piero Ing Mecc 10/7/79
• La presenza di valori nulli nelle chiavi 87654 Neri Mario Ing Inf NULL
deve essere limitata
43289 Neri Mario NULL 5/12/78
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 51 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 52
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Infrazioni
Integrità referenziale Codice Data Vigile Prov Numero
34321 1/2/95 3987 MI 39548K
• informazioni in relazioni diverse sono 53524 4/3/95 3295 TO E39548
correlate attraverso valori comuni 64521 5/4/96 3295 PR 839548
• in particolare, valori delle chiavi 73321 5/2/98 9345 PR 839548
(primarie)
• le correlazioni debbono essere Vigili Matricola Cognome Nome
"coerenti" 3987 Rossi Luca
3295 Neri Piero
9345 Neri Mario

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 53 24/09/2002


7543 Mori
Atzeni-Ceri-Paraboschi-Torlone,
Gino 54
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

9
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Infrazioni Vincolo di integrità referenziale


Codice Data Vigile Prov Numero
34321 1/2/95 3987 MI 39548K
• Un vincolo di integrità referenziale
53524 4/3/95 3295 TO E39548
(“foreign key”) fra gli attributi X di
64521 5/4/96 3295 PR 839548
una relazione R1 e un’altra relazione
73321 5/2/98 9345 PR 839548 R2 impone ai valori su X in R1 di
comparire come valori della chiave
Auto Prov Numero Cognome Nome primaria di R2
MI 39548K Rossi Mario
TO E39548 Rossi Mario
PR 839548 Neri Luca
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 55 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 56
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Violazione di vincolo di integrità


referenziale
• vincoli di integrità referenziale fra: Infrazioni
Codice Data Vigile Prov Numero
• l’attributo Vigile della relazione 34321 1/2/95 3987 MI 39548K
INFRAZIONI e la relazione VIGILI 53524 4/3/95 3295 TO E39548
• gli attributi Prov e Numero di 64521 5/4/96 3295 PR 839548
INFRAZIONI e la relazione AUTO 73321 5/2/98 9345 PR 839548
Auto Prov Numero Cognome Nome
MI E39548 Rossi Mario
TO F34268 Rossi Mario
PR 839548 Neri Luca
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 57 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 58
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Vincoli di integrità referenziale:


Integrità referenziale e valori nulli
commenti
Impiegati Matricola Cognome Progetto
• Giocano un ruolo fondamentale nel 34321 Rossi IDEA
concetto di “modello basato su valori” 53524 Neri XYZ
• In presenza di valori nulli i vincoli 64521 Verdi NULL

possono essere resi meno restrittivi 73032 Bianchi IDEA


• Sono possibili meccanismi per il Progetti Codice Inizio Durata Costo
supporto alla loro gestione ("azioni" IDEA 01/2000 36 200
compensative a seguito di violazioni) XYZ 07/2001 24 120
• Attenzione ai vincoli su più attributi BOH 09/2001 24 150

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 59 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 60


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

10
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Azioni compensative Eliminazione in cascata


Impiegati Matricola Cognome Progetto
• Esempio: 34321 Rossi IDEA
• Viene eliminata una ennupla 53524 Neri XYZ
causando una violazione 64521 Verdi NULL

• Comportamento “standard”: 73032 Bianchi IDEA


• Rifiuto dell'operazione Progetti Codice Inizio Durata Costo
• Azioni compensative: IDEA 01/2000 36 200
• Eliminazione in cascata XYZ 07/2001 24 120
• Introduzione di valori nulli BOH 09/2001 24 150

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 61 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 62


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Introduzione di valori nulli Vincoli multipli su più attributi


Impiegati Matricola Cognome Progetto Incidenti
34321 Rossi IDEA
Codice Data ProvA NumeroA ProvB NumeroB
53524 Neri XYZ
NULL
34321 1/2/95 TO E39548 MI 39548K
64521 Verdi NULL
73032 Bianchi IDEA 64521 5/4/96 PR 839548 TO E39548

Progetti Codice Inizio Durata Costo Auto Prov Numero Cognome Nome
IDEA 01/2000 36 200 MI 39548K Rossi Mario
XYZ 07/2001 24 120 TO E39548 Rossi Mario
BOH 09/2001 24 150 PR 839548 Neri Luca

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 63 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 64


Basi di dati, Capitolo 2 Basi di dati, Capitolo 2

Vincoli multipli su più attributi, 2

• vincoli di integrità referenziale fra:


• gli attributi ProvA e NumeroA di
INCIDENTI e la relazione AUTO
• gli attributi ProvB e NumeroB di
INCIDENTI e la relazione AUTO

• L'ordine degli attributi è significativo

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 65
Basi di dati, Capitolo 2

11
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Linguaggi per basi di dati

• operazioni sullo schema


Atzeni, Ceri, Paraboschi, Torlone • DDL: data definition language
Basi di dati • operazioni sui dati
McGraw -Hill, 1996-2002 • DML: data manipulation language
Capitolo 3: • interrogazione ("query")
ALGEBRA E CALCOLO • aggiornamento
RELAZIONALE
24/09/2002
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 2
Basi di dati, Capitolo 3

Linguaggi di interrogazione
Linguaggi di interrogazione
per basi di dati relazionali
• Dichiarativi • Algebra relazionale: procedurale
• specificano le proprietà del risultato • Calcolo relazionale:
("che cosa") dichiarativo (teorico)
• Procedurali • SQL (Structured Query Language):
• specificano le modalità di parzialmente dichiarativo (reale)
generazione del risultato ("come") • QBE (Query by Example):
dichiarativo (reale)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 3 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 4


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Algebra relazionale Operatori dell'algebra relazionale

• Insieme di operatori • unione, intersezione, differenza


• su relazioni • ridenominazione
• che producono relazioni • selezione
• e possono essere composti • proiezione
• join (join naturale, prodotto cartesiano,
theta-join)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 5 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 6


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

1
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Operatori insiemistici Unione


Laureati Quadri
• le relazioni sono insiemi
Matricola Nome Età Matricola Nome Età
• i risultati debbono essere relazioni 7274 Rossi 42 9297 Neri 33
• è possibile applicare unione , 7432 Neri 54 7432 Neri 54
9824 Verdi 45 9824 Verdi 45
intersezione , differenza solo a relazioni
definite sugli stessi attributi Laureati ∪ Quadri
Matricola Nome Età
7274 Rossi 42
7432 Neri 54
9824 Verdi 45
9297 Neri 33
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 7 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 8
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Intersezione Differenza

Laureati Quadri Laureati Quadri


Matricola Nome Età Matricola Nome Età Matricola Nome Età Matricola Nome Età
7274 Rossi 42 9297 Neri 33 7274 Rossi 42 9297 Neri 33
7432 Neri 54 7432 Neri 54 7432 Neri 54 7432 Neri 54
9824 Verdi 45 9824 Verdi 45 9824 Verdi 45 9824 Verdi 45
Laureati – Quadri
Laureati ∩ Quadri Matricola Nome Età
Matricola Nome Età 7274 Rossi 42
7432 Neri 54 7432 Neri 54
9824 Verdi 45 9824 Verdi 45
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 9 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 10
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Un’unione sensata ma impossibile Ridenominazione

• operatore monadico (con un argomento)


Paternità Maternità
Padre Figlio Madre Figlio • "modifica lo schema" lasciando
Adamo Abele Eva Abele inalterata l'istanza dell'operando
Adamo Caino Eva Set
Abramo Isacco Sara Isacco

Paternità ∪ Maternità
??

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 11 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 12


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

2
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Paternità RENGenitore ← Padre (Paternità)


Paternità Padre Figlio Genitore Figlio
Padre Figlio Adamo Abele Adamo Abele
Adamo Abele Adamo Caino Adamo Caino
Adamo Caino Abramo Isacco Abramo Isacco
Abramo Isacco

RENGenitore ← Padre (Paternità)


Genitore
Padre Figlio Maternità RENGenitore ← Madre (Maternità)
Adamo Abele Madre Figlio Genitore Figlio
Adamo Caino Eva Abele Eva Abele
Abramo Isacco Eva Set Eva Set
Sara Isacco Sara Isacco
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 13 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 14
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

RENGenitore ← (Paternità) Impiegati Cognome Ufficio Stipendio


Padre Rossi Roma 55
Genitore Figlio RENGenitore ← (Paternità) Neri Milano 64
Padre
Adamo Abele
Adamo Caino ∪ Operai Cognome Fabbrica Salario
RENGenitore ← Madre (Maternità) Bruni Monza 45
Abramo Isacco
Verdi Latina 55
Genitore Figlio
Adamo Abele REN Sede, Retribuzione ← (Impiegati)
Ufficio, Stipendio
RENGenitore ← Madre (Maternità) Adamo Caino ∪
Genitore Figlio Abramo Isacco REN Sede, Retribuzione ← Fabbrica, Salario (Operai)
Eva Abele Eva Abele Cognome Sede Retribuzione
Eva Set Rossi Roma 55
Eva Set
Sara Isacco Neri Milano 64
Sara Isacco
Bruni Monza 45
Verdi Latina 55
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 15 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 16
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Impiegati
Selezione
Matricola Cognome Filiale Stipendio
7309 Rossi Roma 55
• operatore monadico 5998 Neri Milano 64
• produce un risultato che 9553 Milano Milano 44
5698 Neri Napoli 64
• ha lo stesso schema dell'operando
• contiene un sottoinsieme delle • impiegati che
ennuple dell'operando, • guadagnano più di 50
• quelle che soddisfano una condizione • guadagnano più di 50 e lavorano a Milano
• hanno lo stesso nome della filiale presso
cui lavorano

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 17 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 18


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

3
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Selezione, sintassi e semantica • impiegati che guadagnano più di 50

• sintassi
SEL Condizione (Operando) Impiegati
• Condizione: espressione booleana Matricola Cognome Filiale Stipendio
7309 Rossi Roma 55
(come quelle dei vincoli di ennupla)
5998 Neri Milano 64
• semantica 9553
5698 Milano
Neri Milano
Napoli 44
64
• il risultato contiene le ennuple 5698 Neri Napoli 64
dell'operando che soddisfano la SELStipendio > 50 (Impiegati)
condizione
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 19 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 20
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

• impiegati che guadagnano più di 50 • impiegati che hanno lo stesso nome della
e lavorano a Milano filiale presso cui lavorano

Impiegati Impiegati
Matricola Cognome Filiale Stipendio Matricola Cognome Filiale Stipendio
7309
5998 Rossi
Neri Milano
Roma 55
64 7309
9553 Milano
Rossi Milano
Roma 55
44
5998 Neri Milano 64 5998 Neri Milano 64
9553 Milano Milano 44 9553 Milano Milano 44
5698 Neri Napoli 64 5698 Neri Napoli 64

SEL Stipendio > 50 AND Filiale = 'Milano' (Impiegati) SEL Cognome = Filiale (Impiegati)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 21 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 22


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Selezione e proiezione
selezione
• operatori "ortogonali"
• selezione :
• decomposizione orizzontale
proiezione
• proiezione :
• decomposizione verticale

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 23 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 24


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

4
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Impiegati
Proiezione
Matricola Cognome Filiale Stipendio
7309 Neri Napoli 55
• operatore monadico 5998 Neri Milano 64
• produce un risultato che 9553 Rossi Roma 44
5698 Rossi Roma 64
• ha parte degli attributi dell'operando
• per tutti gli impiegati:
• contiene ennuple cui contribuiscono
• matricola e cognome
tutte le ennuple dell'operando
• cognome e filiale

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 25 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 26


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Proiezione, sintassi e semantica • matricola e cognome di tutti gli impiegati

• sintassi
PROJ ListaAttributi (Operando) Matricola Cognome Filiale Stipendio
• semantica 7309 Neri Napoli 55
5998 Neri Milano 64
• il risultato contiene le ennuple 9553 Rossi Roma 44
ottenute da tutte le ennuple 5698 Rossi Roma 64
dell'operando ristrette agli attributi
nella lista PROJ Matricola, Cognome (Impiegati)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 27 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 28


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

• cognome e filiale di tutti gli impiegati Cardinalità delle proiezioni

• una proiezione
Matricola Cognome Filiale Stipendio • contiene al più tante ennuple quante
7309 Neri Napoli 55 l'operando
5998 Neri Milano 64 • può contenerne di meno
9553 Rossi Roma 44
5698 Rossi Roma 64
• se X è una superchiave di R, allora
PROJ Cognome, Filiale (Impiegati) PROJX (R) contiene esattamente tante
ennuple quante R
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 29 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 30
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

5
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Selezione e proiezione • matricola e cognome degli impiegati che


guadagnano più di 50
• Combinando selezione e proiezione,
possiamo estrarre interessanti Matricola Cognome Filiale Stipendio
informazioni da una relazione 7309 Rossi Roma 55
5998 Neri Milano 64
9553
5698 Milano
Neri Milano
Napoli 44
64
5698 Neri Napoli 64

PROJ Matricola,Cognome (SELStipendio > 50 (Impiegati))

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 31 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 32


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Join
• Combinando selezione e proiezione, • il join è l'operatore più interessante
possiamo estrarre informazioni da dell'algebra relazionale
una relazione • permette di correlare dati in relazioni
• non possiamo però correlare diverse
informazioni presenti in relazioni
diverse

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 33 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 34


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Prove scritte in un concorso


pubblico 1 25 1 Mario Rossi
• I compiti sono anonimi e ad ognuno è 2 13 2 Nicola Russo
associata una busta chiusa con il nome 3 27 3 Mario Bianchi
del candidato 4 28 4 Remo Neri
• Ciascun compito e la relativa busta
vengono contrassegnati con uno stesso Mario Rossi 25
numero Nicola Russo 13
Mario Bianchi 27
Remo Neri 28

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 35 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 36


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

6
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Numero Voto Numero Candidato Join naturale


1 25 1 Mario Rossi
2 13 2 Nicola Russo • operatore binario (generalizzabile)
3 27 3 Mario Bianchi • produce un risultato
4 28 4 Remo Neri
• sull'unione degli attributi degli
operandi
Numero Candidato Voto • con ennuple costruite ciascuna a
1 Mario Rossi 25 partire da una ennupla di ognuno
2 Nicola Russo 13
degli operandi
3 Mario Bianchi 27
4 Remo Neri 28
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 37 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 38
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Impiegato Reparto Reparto Capo


Join, sintassi e semantica Rossi A A Mori
Neri B B Bruni
• R1(X 1), R2(X 2) Bianchi B
• R1 JOIN R2 è una relazione su X1X2
Impiegato Reparto Capo
{ t su X1X2 | esistono t1∈R1e t2∈R2 Rossi A Mori
con t[X 1] =t1 e t[X 2] =t2 } Neri B Bruni
Bianchi B Bruni

• ogni ennupla contribuisce al risultato:


• join completo
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 39 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 40
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Un join non completo Un join vuoto


Impiegato Reparto Reparto Capo Impiegato Reparto Reparto Capo
Rossi A B Mori Rossi A D Mori
Neri B C Bruni Neri B C Bruni
Bianchi B Bianchi B

Impiegato Reparto Capo Impiegato Reparto Capo


Neri B Mori
Bianchi B Mori

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 41 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 42


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

7
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Un join completo, con n x m ennuple Cardinalità del join

• Il join di R1 e R2 contiene un numero di


Impiegato Reparto Reparto Capo ennuple compreso fra zero e il prodotto
Rossi A
B A
B Mori di |R1| e |R2 |
Neri B B Bruni
• se il join coinvolge una chiave di R2,
allora il numero di ennuple è compreso
Impiegato Reparto Capo
fra zero e |R1|
Rossi B Mori
Rossi B Bruni
• se il join coinvolge una chiave di R2 e un
vincolo di integrità referenziale, allora il
Neri B Mori
numero di ennuple è pari a |R1 |
Bianchi B Bruni
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 43 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 44
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Cardinalità del join, 2 Join, una difficoltà

• R1(A,B) , R2 (B,C) Impiegato Reparto Reparto Capo


• in generale Rossi A B Mori
0 ≤ |R1 JOIN R2| ≤ |R1 | × |R2| Neri B C Bruni
Bianchi B
• se B è chiave in R2
0 ≤ |R1 JOIN R2| ≤ |R1 | Impiegato Reparto Capo
• se B è chiave in R2 ed esiste vincolo di Neri B Mori
integrità referenziale fra B (in R1) e R2: Bianchi B Mori
|R 1 JOIN R2| = |R 1| • alcune ennuple non contribuiscono al
risultato: vengono "tagliate fuori"
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 45 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 46
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Join esterno Join esterno

• Il join esterno estende, con valori nulli,


le ennuple che verrebbero tagliate fuori • sinistro: mantiene tutte le ennuple del
da un join (interno) primo operando, estendendole con
valori nulli, se necessario
• esiste in tre versioni:
• destro: ... del secondo operando ...
• sinistro, destro, completo
• completo: … di entrambi gli operandi ...

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 47 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 48


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

8
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Impiegati Reparti Impiegati Reparti


Impiegato Reparto Reparto Capo Impiegato Reparto Reparto Capo
Rossi A B Mori Rossi A B Mori
Neri B C Bruni Neri B C Bruni
Bianchi B Bianchi B

Impiegati JOINLEFT Reparti Impiegati JOINRIGHT Reparti


Impiegato Reparto Capo Impiegato Reparto Capo
Neri B Mori Neri B Mori
Bianchi B Mori Bianchi B Mori
Rossi A NULL NULL C Bruni

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 49 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 50


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Join e proiezioni
Impiegati Reparti
Impiegato Reparto Reparto Capo Impiegato Reparto Reparto Capo
Rossi A B Mori Rossi A B Mori
Neri B C Bruni Neri B C Bruni
Bianchi B Bianchi B

Impiegato Reparto Capo


Impiegati JOINFULL Reparti
Neri B Mori
Impiegato Reparto Capo Bianchi B Mori
Neri B Mori
Bianchi B Mori Impiegato Reparto Reparto Capo
Rossi A NULL Neri B B Mori
NULL C Bruni Bianchi B
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 51 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 52
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Proiezioni e join
Impiegato Reparto Capo Join e proiezioni
Neri B Mori
Bianchi B Bruni • R 1 (X 1), R 2(X 2 )
Verdi A Bini
Impiegato Reparto Reparto Capo
Neri B B Mori PROJX1 (R 1 JOIN R2 ) ⊆ R 1
Bianchi B B Bruni
Verdi A A Bini • R(X), X = X 1 ∪ X2
Impiegato Reparto Capo
Neri B Mori
Bianchi B Bruni (PROJX 1 (R)) JOIN (PROJX 2 (R)) ⊇ R
Neri B Bruni
Bianchi B Mori
24/09/2002
Verdi A
Atzeni-Ceri-Paraboschi-Torlone,
Bini 53 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 54
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

9
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Impiegati Reparti
Prodotto cartesiano Impiegato Reparto Codice Capo
Rossi A A Mori
Neri B B Bruni
Bianchi B
• un join naturale su relazioni senza
Impiegati JOIN Reparti
attributi in comune
Impiegato Reparto Codice Capo
• contiene sempre un numero di ennuple
Rossi A A Mori
pari al prodotto delle cardinalità degli Rossi A B Bruni
operandi (le ennuple sono tutte Neri B A Mori
combinabili ) Neri B B Bruni
Bianchi B A Mori
Bianchi B B Bruni
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 55 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 56
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Perché "theta-join"?
• Il prodotto cartesiano, in pratica, ha
senso (quasi) solo se seguito da • La condizione C è spesso una congiunzione
selezione: (AND) di atomi di confronto A1ϑ A2 dove ϑ è
SELCondizione (R1 JOIN R2) uno degli operatori di confronto (=, >, <, …)
• L'operazione viene chiamata theta -join e • se l'operatore è sempre l'uguaglianza (=)
allora si parla di equi-join
indicata con
R1 JOINCondizione R2

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 57 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 58


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Impiegati Reparti
Impiegato Reparto Codice Capo
Rossi A A Mori
Neri B B Bruni Impiegati Reparti
Bianchi B Impiegato Reparto Reparto Capo
Impiegati JOINReparto=Codice Reparti Rossi A A Mori
Neri B B Bruni
Impiegato Reparto Codice Capo Bianchi B
Rossi A A Mori
Rossi
Neri A
B B Bruni
Bianchi
Neri B A
B Bruni
Mori Impiegati JOIN Reparti
Neri B B Bruni
Bianchi B A Mori
Bianchi B B Bruni
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 59 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 60
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

10
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Esempi
Join naturale ed equi-join
Impiegati Matricola Nome Età Stipendio
7309
Rossi 34 45
Impiegati Reparti 5998
Bianchi 37 38
Impiegato Reparto Reparto Capo 9553
Neri 42 35
5698
Bruni 43 42
4076
Mori 45 50
Impiegati JOIN Reparti 8123
Lupi 46 60
Supervisione Impiegato Capo
PROJImpiegato,Reparto,Capo ( SEL Reparto=Codice 7309 5698
5998 5698
( Impiegati JOINRENCodice ← Reparto (Reparti) )) 9553 4076
5698 4076
4076 8123
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 61 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 62
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Matricola Nome Età Stipendio


• Trovare matricola, nome, età e stipendio 7309 Rossi 34 45
degli impiegati che guadagnano più di 5998
5698 Bianchi
Bruni 37
43 38
42
9553
4076 Mori
Neri 42
45 35
50
40 milioni 5698
8123 Bruni
Lupi 43
46 42
60
4076 Mori 45 50
8123 Lupi 46 60
SEL Stipendio>40(Impiegati)
SEL Stipendio>40(Impiegati)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 63 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 64


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Matricola Nome Età Stipendio


• Trovare matricola, nome ed età degli 7309 Rossi 34 45
5998 Bianchi
5698 Bruni 37
43 38
42
impiegati che guadagnano più di 40 9553
4076 Mori
Neri 42
45 35
50
milioni 5698
8123 Bruni
Lupi 43
46 42
60
4076 Mori 45 50
PROJMatricola, Nome, Età 8123 Lupi 46 60
(SEL Stipendio>40(Impiegati))
PROJMatricola, Nome, Età
( SEL Stipendio>40(Impiegati) )

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 65 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 66


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

11
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

• Trovare le matricole dei capi degli • Trovare nome e stipendio dei capi degli
impiegati che guadagnano più di 40 impiegati che guadagnano più di 40
milioni milioni

PROJCapo (Supervisione PROJ Nome,Stipendio (


JOIN Impiegato=Matricola Impiegati JOIN Matricola=Capo
(SEL Stipendio>40(Impiegati))) PROJ Capo(Supervisione
JOIN Impiegato=Matricola (SELStipendio>40(Impiegati))))

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 67 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 68


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

• Trovare gli impiegati che guadagnano più • Trovare le matricole dei capi i cui
del proprio capo, mostrando matricola, impiegati guadagnano tutti più di 40
nome e stipendio dell'impiegato e del milioni
capo
PROJCapo (Supervisione ) -
PROJMatr,Nome,Stip,MatrC,NomeC,StipC PROJCapo (Supervisione
(SEL Stipendio>StipC (
JOIN Impiegato=Matricola
RENMatrC,NomeC,StipC,Et àC ← Matr,Nome,Stip,Età(Impiegati)
JOIN MatrC=Capo
(SEL Stipendio ≤ 40(Impiegati)))
(Supervisione JOIN Impiegato=Matricola Impiegati)))

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 69 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 70


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Equivalenza di espressioni Un 'equivalenza importante

• Due espressioni sono equivalenti se • Push selections (se A è attributo di R1 )


producono lo stesso risultato SEL A=10 (R 1 JOIN R 2) = R1 JOIN SEL A=10 ( R2)
qualunque sia l'istanza attuale della • Riduce in modo significativo la
base di dati dimensione del risultato intermedio (e
• L'equivalenza è importante in pratica quindi il costo dell'operazione)
perché i DBMS cercano di eseguire
espressioni equivalenti a quelle date,
ma meno "costose"

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 71 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 72


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

12
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Selezione con valori nulli Un risultato non desiderabile

Impiegati SEL Età>30 (Persone) ∪ SEL Età≤30 (Persone) ≠


Persone
Matricola Cognome Filiale Età
7309 Rossi Roma 32 • Perché? Perché le selezioni vengono
5998 Neri Milano 45 valutate separatamente!
9553 Bruni Milano NULL • Ma anche
SEL Età>30 ∨ Et à≤30 (Persone) ≠ Persone
SEL Età > 40 (Impiegati) • Perché? Perché anche le condizioni
atomiche vengono valutate
• la condizione atomica è vera solo per separatamente!
valori non nulli
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 73 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 74
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Selezione con valori nulli: soluzione

SEL Età > 40 (Impiegati) • Quindi:


• la condizione atomica è vera solo per valori SEL Età>30 (Persone) ∪ SEL Età≤30 (Persone) ∪
non nulli
SEL Età IS NULL (Persone)
• per riferirsi ai valori nulli esistono forme
apposite di condizioni: =
IS NULL SEL Età>30 ∨ Et à≤30 ∨ Età IS NULL (Persone)
IS NOT NULL =
• si potrebbe usare (ma non serve) una "logica Persone
a tre valori" (vero, falso, sconosciuto)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 75 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 76


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Viste (relazioni derivate)


Impiegati • Rappresentazioni diverse per gli stessi
Matricola Cognome Filiale Età dati (schema esterno)
7309
5998 Rossi
Neri Milano
Roma 32
45 • Relazioni derivate :
5998
9553 Bruni
Neri Milano 45
NULL
9553 Bruni Milano NULL
• relazioni il cui contenuto è funzione
del contenuto di altre relazioni
(definito per mezzo di interrogazioni)
• Relazioni di base: contenuto autonomo
SEL (Età > 40) OR (Età IS NULL) (Impiegati)
• Le relazioni derivate possono essere
definite su altre derivate, ma …

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 77 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 78


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

13
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Architettura standard (ANSI/SPARC)


Viste virtuali e materializzate
a tre livelli per DBMS
utente utente utente
utente
utente • Due tipi di relazioni derivate:
Schema Schema Schema • viste materializzate
esterno esterno esterno
• relazioni virtuali (o viste)
Schema logico

Schema interno

BD

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 79 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 80


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Viste materializzate Viste virtuali

• relazioni derivate memorizzate nella base di • relazioni virtuali (o viste):


dati • sono supportate dai DBMS (tutti)
• vantaggi:
• una interrogazione su una vista viene
• immediatamente disponibili per le
interrogazioni eseguita "ricalcolando" la vista (o
• svantaggi: quasi)
• ridondanti
• appesantiscono gli aggiornamenti
• sono raramente supportate dai DBMS

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 81 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 82


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Viste, esempio Interrogazioni sulle viste


Afferenza Impiegato Reparto Direzione
• Sono eseguite sostituendo alla vista la
Rossi A Reparto Capo
Neri B A Mori
sua definizione:
Bianchi B B Bruni
Bianchi B B Bruni SEL Capo='Leoni' (Supervisione )

• una vista: viene eseguita come


Supervisione = SEL Capo='Leoni'(
PROJ Impiegato, Capo(Afferenza JOIN Direzione))
PROJ Impiegato, Capo (Afferenza JOIN Direzione)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 83 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 84


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

14
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Viste, motivazioni Viste come strumento di


programmazione
• Schema esterno: ogni utente vede solo
• ciò che gli interessa e nel modo in cui gli • Trovare gli impiegati che hanno lo stesso
interessa, senza essere distratto dal resto capo di Rossi
• ciò che e' autorizzato a vedere (autorizzazioni) • Senza vista:
• Strumento di programmazione :
PROJ Impiegato (Afferenza JOIN Direzione) JOIN
• si può semplificare la scrittura di interrogazioni: REN ImpR,RepR ← Imp,Reparto (
espressioni complesse e sottoespressioni ripetute SEL Impiegato='Rossi' (Afferenza JOIN Direzione ))
• Utilizzo di programmi esistenti su schemi ristrutturati • Con la vista:
Invece:
PROJ Impiegato (Supervisione) JOIN
• L'utilizzo di viste non influisce sull'efficienza delle REN ImpR,RepR ← Imp,Reparto (
interrogazioni SEL Impiegato='Rossi' (Supervisione ))

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 85 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 86


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Viste e aggiornamenti, attenzione Viste e aggiornamenti


Afferenza Direzione
Impiegato Reparto Reparto Capo • "Aggiornare una vista":
Rossi A A Mori • modificare le relazioni di base in modo che
Neri B B Bruni la vista, "ricalcolata" rispecchi
Verdi A B
C Bruni l'aggiornamento
Supervisione Impiegato Capo • L'aggiornamento sulle relazioni di base
Rossi Mori corrispondente a quello specificato sulla vista
Neri Bruni deve essere univoco
Verdi Mori
• In generale però non è univoco!
• Vogliamo inserire , nella vista, il fatto che Lupi • Ben pochi aggionamenti sono ammissibili
ha come capo Bruni; oppure che Belli ha sulle viste
come capo Falchi; come facciamo?
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 87 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 88
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Una convenzione e notazione


alternativa per i join • Trovare gli impiegati che guadagnano più
del proprio capo, mostrando matricola,
• Nota: è sostanzialmente l'approccio usato in
nome e stipendio dell'impiegato e del
SQL
• Ignoriamo il join naturale (cioè non
capo
consideriamo implicitamente condizioni su PROJMatr,Nome,Stip,MatrC,NomeC,StipC
attributi con nomi uguali) (SEL Stipendio>StipC (
• Per "riconoscere" attributi con lo stesso RENMatrC,NomeC,StipC,Et àC ← Matr,Nome,Stip,Età(Impiegati)
nome gli premettiamo il nome della relazione JOIN MatrC=Capo
• Usiamo "assegnazioni" (viste) per (Supervisione JOIN Impiegato=Matricola Impiegati)))
ridenominare le relazioni (e gli attributi solo
quando serve per l'unione)
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 89 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 90
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

15
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

PROJMatr,Nome,Stip,MatrC,NomeC,StipC
(SEL Stip>StipC( Calcolo relazionale
RENMatrC,NomeC,StipC,Et àC ← Matr,Nome,Stip,Età(Imp)
JOIN MatrC=Capo • Una famiglia di linguaggi dichiarativi,
(Sup JOIN Imp=Matr Imp)))
basati sul calcolo dei predicati del primo
ordine
Capi := Imp
• Diverse versioni:
PROJImp.Matr, Imp.Nome, Imp.Stip,Capi.Matr,Capi.Nome, Capi.Stip • calcolo relazionale su domini
(SEL Imp.Stip>Capi.Stip(
• calcolo su ennuple con dichiarazioni
Capi JOIN Capi.Matr=Capo (Sup JOIN Imp=Imp.Matr Imp)))
di range

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 91 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 92


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Calcolo su domini, sintassi e


Commenti
semantica
• Le espressioni hanno la forma: • Differenze rispetto al calcolo dei predicati (per
{ A1: x1, …, Ak: xk | f } chi lo conosce):
• f e' una formula (con connettivi booleani e
quantificatori) • simboli di predicato
• A1: x1, …, Ak: xk "target list": • relazioni nella base di dati
• A1, …, Ak attributi distinti (anche non nella base • predicati "standard" predefiniti (=, >, ...)
di dati)
• x 1, …, xk variabili distinte • non ci sono "simboli di funzione"
• interessano (quasi) solo "formule aperte"
• Semantica: il risultato e' una relazione su A1, …, Ak • utilizziamo notazione non posizionale
che contiene ennuple di valori per x 1, …, x k che
rendono vera la formula f

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 93 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 94


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Base di dati per gli esempi Esempio 0a

Impiegati(Matricola,Nome, Età, Stipendio) • Trovare matricola, nome, età e stipendio degli


Supervisione(Capo, Impiegato) impiegati che guadagnano più di 40 milioni

SEL Stipendio>40(Impiegati)

{ Matricola: m, Nome: n, Età: e, Stipendio: s |


Impiegati(Matricola: m, Nome: n, Età: e,
Stipendio: s) ∧ s > 40 }

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 95 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 96


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

16
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Esempio 0b Esempio 1

• Trovare matricola, nome ed età di tutti gli impiegati • Trovare matricola, nome ed età degli
impiegati che guadagnano più di 40 milioni
PROJ Matricola, Nome, Età(Impiegati )
PROJMatricola, Nome, Età(SEL Stipendio>40(Impiegati))
{ Matricola: m, Nome: n, Età: e |
∃s (Impiegati(Matricola: m, Nome: n, Età: e, Stipendio:
s)} { Matricola: m, Nome: n, Età: e |
Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s)
{ Matricola: m, Nome: n, Età: e | ∧ s > 40 }
Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s)}

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 97 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 98


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Esempio 2 Esempio 3

• Trovare le matricole dei capi degli impiegati • Trovare nome e stipendio dei capi degli impiegati che
guadagnano più di 40 milioni
che guadagnano più di 40 milioni
PROJ NomeC,StipC
PROJCapo (Supervisione JOINImpiegato=Matricola (RENMatrC,NomeC,StipC,Et àC← Matr,Nome, Stip,Et à(Impiegati )
(SEL Stipendio>40(Impiegati))) JOIN MatrC=Capo
(Supervisione JOIN Impiegato=Matricola
(SELStipendio>40(Impiegati))))
{ Capo: c | Supervisione(Capo:c,Impiegato:m) ∧
Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) { NomeC: nc, StipC: sc |
∧ s > 40 } Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧
s > 40 ∧ Supervisione (Capo:c,Impiegato:m) ∧
Impiegati(Matricola:c, Nome:nc, Età:ec, Stipendio: sc) }
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 99 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 100
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Esempio 4 Esempio 5

• Trovare gli impiegati che guadagnano più del • Trovare matricola e nome dei capi i cui impiegati guadagnano
rispettivo capo, mostrando matricola, nome e tutti più di 40 milioni.
stipendio di ciascuno di essi e del capo
PROJ Matr,Nome, Stip,MatrC,NomeC,StipC PROJMatricola ,Nome (Impiegati JOIN Matricola =Capo
(SELStipendio>StipC(RENMatrC,NomeC,S t i p C,Età C ← (PROJCapo (Supervisione) -
PROJCapo (Supervisione JOIN Impiegato=Matricola (
Matr,Nome, Stip,Età(Impiegati )
SELStipendio ≤ 40(Impiegati))))
JOIN MatrC=Capo
(Supervisione JOIN Impiegato=Matricola ( (Impiegati ))))
{Matricola: c, Nome: n |
Impiegati(Matricola: c, Nome: n, Età: e, Stipendio: s) ∧
{ Matr: m, Nome: n, Stip: s, MatrC: c, NomeC: nc, StipC: sc |
Supervisione(Capo:c, Impiegato:m) ∧
Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧
Supervisione(Capo:c,Impiegato:m) ∧ ¬ ∃m'(∃n'(∃e'(∃s'(Impiegati( Matr: m', Nome: n', Età: e', Stip: s') ∧
Impiegati(Matricola: c, Nome: nc, Età: ec, Stipendio: sc) ∧ s > sc} Supervisione(Capo:c, Impiegato:m') ∧ s' ≤ 40))))}

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 101 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 102


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

17
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Quantificatori esistenziali o
Calcolo su domini, discussione
universali?
• Sono intercambiabili, per le leggi di De Morgan: • Pregi:
• dichiaratività
{Matricola: c, Nome: n | • Difetti:
Impiegati(Matricola: c, Nome: n, Età: e, Stipendio: s) ∧ • "verbosità": tante variabili!
Supervisione(Capo:c, Impiegato:m) ∧
¬ ∃m'(∃n'(∃e'(∃s'(Impiegati( Matr: m', Nome: n', Età: e', Stip: s') ∧ • espressioni senza senso:
Supervisione(Capo:c, Impiegato:m') ∧ s' ≤ 40))))} { A: x | ¬ R(A: x) }
{ A: x, B: y | R(A: x) }
{Matricola: c, Nome: n | { A: x, B: y | R(A: x) ∧ y=y }
Impiegati(Matricola: c, Nome: n, Età: e, Stipendio: s) ∧ queste espressioni sono "dipendenti dal dominio"
Supervisione(Capo:c, Impiegato:m) ∧ e vorremmo evitarle;
∀m'(∀n'(∀e'(∀s'(¬(Impiegati( Matr:m', Nome:n', Età:e', Stip:s') ∧
nell'algebra espressioni come queste non sono
Supervisione(Capo:c, Impiegato:m')) ∨ s' > 40))))}
formulabili: l'algebra è indipendente dal dominio
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 103 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 104
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Calcolo su ennuple
Calcolo e algebra
con dichiarazioni di range
• Calcolo e algebra sono "equivalenti " • Per superare le limitazioni del calcolo su
• per ogni espressione del calcolo relazionale che domini:
sia indipendente dal dominio esiste • dobbiamo "ridurre" le variabili; un buon
un'espressione dell'algebra relazionale
equivalente a essa modo: una variabile per ciascuna ennupla
• per ogni espressione dell'algebra relazionale • far si' che i valori provengano dalla base di
esiste un'espressione del calcolo relazionale dati
equivalente a essa (e di conseguenza • Il calcolo su ennuple con dichiarazioni di
indipendente dal dominio) range risponde ad entrambe le esigenze

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 105 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 106


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Calcolo su ennuple
Esempio 0a
con dichiarazioni di range, sintassi
• Le espressioni hanno la forma: • Trovare matricola, nome, età e stipendio degli
{ TargetList | RangeList| Formula } impiegati che guadagnano più di 40 milioni
• RangeList elenca le variabili libere della Formula
ognuna con il relativo campo di variabilità (una SELStipendio>40(Impiegati)
relazione)
• TargetList ha elementi del tipo Y: x.Z (oppure x.Z o
anche x.*) { Matricola: m, Nome: n, Età: e, Stipendio: s |
• Formula ha: Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s)
• atomi di confronto x.A ϑ c, x.A ϑ y.B ∧ s > 40 }
• connettivi
• quantificatori che associano un range alle { i.* | i(Impiegati) | i.Stipendio > 40 }
variabili
∃x(R)(...) ∀x(R)(...)
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 107 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 108
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

18
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Esempio 0b Esempio 1

• Trovare matricola, nome ed età di tutti gli impiegati • Trovare matricola, nome ed età degli impiegati che
guadagnano più di 40 milioni
PROJ Matricola, Nome, Età(Impiegati )
PROJ Matricola, Nome, Età(SELStipendio>40(Impiegati ))
{ Matricola: m, Nome: n, Età: e |
Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s)} { Matricola: m, Nome: n, Età: e |
Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s)
{ i.(Matricola,Nome,Età) | i(Impiegati) | } ∧ s > 40 }

{ i.(Matricola,Nome,Età) | i(Impiegati) | i.Stipendio > 40 }

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 109 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 110


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Esempio 2 Esempio 3

• Trovare le matricole dei capi degli impiegati • Trovare nome e stipendio dei capi degli impiegati che
guadagnano più di 40 milioni
che guadagnano più di 40 milioni
{ NomeC: nc, StipC: sc |
{ Capo: c | Supervisione(Capo:c,Impiegato:m) ∧ Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧
Impiegati(Matricola: m, Nome: n, Età: e, s > 40 ∧
Supervisione(Capo:c,Impiegato:m) ∧
Stipendio: s) ∧ s > 40 } Impiegati(Matricola:c, Nome:nc, Età:ec, Stipendio:sc) }

{ s.Capo | i(Impiegati) , s(Supervisione) | { NomeC,StipC: i'.(Nome,Stip) |


i'(Impiegati), s(Supervisione), i(Impiegati) |
i.Matricola=s.Impiegato ∧ i.Stipendio > 40 } i'.Matricola=s.Capo ∧ i.Matricola=s.Impiegato ∧
i.Stipendio > 40 }
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 111 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 112
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Esempio 4 Esempio 5
• Trovare gli impiegati che guadagnano più del rispettivo capo, • Trovare matricola e nome dei capi i cui impiegati guadagnano
mostrando matricola, nome e stipendio di ciascuno di essi e del tutti più di 40 milioni.
capo
{ Matr: m, Nome: n, Stip: s, NomeC : nc, StipC: sc | {Matricola: c, Nome: n |
Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ Impiegati(Matricola: c, Nome: n, Età: e, Stipendio: s) ∧
Supervisione(Capo:c,Impiegato:m) ∧ Supervisione(Capo:c, Impiegato:m) ∧
Impiegati(Matricola: c, Nome: n c, Età: ec, Stipendio: sc) ∧ ¬ ∃m'(∃n'(∃e'(∃s'(Impiegati( Matr: m', Nome: n', Età: e', Stip: s') ∧
s > sc} Supervisione(Capo:c, Impiegato:m') ∧ s' ≤ 40}

{ i.(Nome,Matr,Stip), NomeC,MatrC,StipC: i'.(Nome,Matr,Stip) | { i.(Matricola, Nome) | s(Supervisione), i(Impiegati) |


i'(Impiegati), s(Supervisione), i(Impiegati) | i.Matricola=s.Capo ∧ ¬(∃i'(Impiegati)(∃s'(Supervisione)
i'.Matricola=s.Capo ∧ i.Matricola=s.Impiegato ∧ i.Stipendio > (s.Capo=s'.Capo ∧ s'.Impiegato=i'.Matricola ∧ i'.Stipendio ≤ 40)))}
i'.Stipendio }

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 113 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 114


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

19
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Attenzione! Calcolo e algebra relazionale: limiti


• Calcolo e algebra sono sostanzialmente equivalenti:
• Il calcolo su ennuple con dichiarazioni di range non l'insieme di interrogazioni con essi esprimibili è
permette di esprimere alcune interrogazioni quindi significativo; il concetto è robusto
importanti, in particolare le unioni: • Ci sono però interrogazioni interessanti non
R1(AB) ∪ R2(AB) esprimibili:
• Quale potrebbe essere il range per una variabile? • calcolo di valori derivati: possiamo solo estrarre
Oppure due variabili? valori, non calcolarne di nuovi; calcoli di
interesse:
• Nota: intersezione e differenza sono esprimibili • a livello di ennupla o di singolo valore
• Per questa ragione SQL (che è basato su questo (conversioni somme, differenze, etc.)
calcolo) prevede un operatore esplicito di unione, ma • su insiemi di ennuple (somme, medie, etc.)
non tutte le versioni prevedono intersezione e le estensioni sono ragionevoli, le vedremo in SQL
differenza • interrogazioni inerentemente ricorsive, come la
chiusura transitiva
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 115 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 116
Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Chiusura transitiva Chiusura transitiva, come si fa?


Supervisione(Impiegato, Capo)
• Nell'esempio, basterebbe il join della
relazione con se stessa, previa opportuna
• Per ogni impiegato, trovare tutti i superiori
ridenominazione
(cioè il capo, il capo del capo, e cosi' via)
• Ma: Impiegato Superiore
Impiegato Capo Impiegato Superiore Impiegato Capo Rossi Mori
Lupi
Rossi Mori
Lupi Rossi Mori
Lupi Rossi Mori
Lupi Neri Bruni
Neri Bruni Neri Bruni Neri Bruni Lupi Falchi
Lupi Falchi Lupi Falchi Lupi Falchi Rossi Falchi
Rossi Falchi Falchi Leoni Lupi Leoni
Rossi Leoni

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 117 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 118


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Chiusura transitiva, impossibile! Datalog

• Non esiste in algebra e calcolo relazionale la • Un linguaggio di programmazione logica per basi di
possibilità di esprimere l'interrogazione che, dati derivato dal Prolog
per ogni relazione binaria, ne calcoli la • Utilizza predicati di due tipi:
chiusura transitiva • estensionali: relazioni della base di dati
• intensionali: corrispondono alle viste
• Per ciascuna relazione, è possibile calcolare
• Il linguaggio è basato su regole utilizzate per
la chiusura transitiva, ma con un'espressione "definire" i predicati estensionali
ogni volta diversa:
• quanti join servono?
• non c'è limite!

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 119 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 120


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

20
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Datalog, sintassi Esempio -1

• Regole: • Trovare matricola, nome, età e stipendio degli


impiegati che hanno 30 anni
testa ← corpo
• testa è un predicato atomico (intensionale)
{ Matricola: m, Nome: n, Età: e, Stipendio: s |
• corpo è una lista (congiunzione) di Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s)
predicati atomici ∧ s = 30 }
• Le interrogazioni sono specificate per mezzo
di predicati atomici (convenzionalmente ? Impiegati(Matricola: m, Nome: n, Età: 30, Stipendio: s)
preceduti da "?")

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 121 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 122


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Esempio 0a Esempio 0b

• Trovare matricola, nome, età e stipendio degli impiegati che • Trovare matricola, nome ed età di tutti gli impiegati
guadagnano più di 40 milioni
PROJMatricola , Nome, Età(Impiegati)
{ Matricola: m, Nome: n, Età: e, Stipendio: s |
Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40 } { Matricola: m, Nome: n, Età: e |
Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s)}
• Serve un predicato intensionale
InfoPubbliche(Matricola: m, Nome: n, Età: e)
ImpRicchi(Matricola: m, Nome: n, Età: e, Stipendio: s) ← ← Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) , s >40
Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) , s >40
? InfoPubbliche(Matricola: m, Nome: n, Età: e)
? ImpRicchi(Matricola: m, Nome: n, Età: e, Stipendio: s)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 123 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 124


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

Esempio 2 Esempio 5

• Trovare le matricole dei capi degli impiegati che guadagnano più • Trovare matricola e nome dei capi i cui impiegati guadagnano
di 40 milioni tutti più di 40 milioni.

• serve la negazione
{ Capo: c | Supervisione(Capo:c,Impiegato:m) ∧
Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40 } CapiDiNonRicchi (Capo:c) ←
Supervisione (Capo:c,Impiegato:m),
Impiegati (Matricola: m, Nome: n, Età: e, Stipendio: s) ,
CapiDeiRicchi (Capo:c) ← s ≤ 40
ImpRicchi(Matricola: m, Nome: n, Età: e, Stipendio: s), CapiSoloDiRicchi (Matricola: c, Nome: n) ←
Supervisione (Capo:c,Impiegato:m) Impiegati (Matricola: c, Nome: n, Età: e, Stipendio: s) ,
Supervisione (Capo:c,Impiegato:m),
? CapiDeiRicchi (Capo:c) not CapiDiNonRicchi (Capo:c)

? CapiSoloDiRicchi (Matricola: c, Nome: n)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 125 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 126


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

21
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Esempio 6 Datalog, semantica

• Per ogni impiegato, trovare tutti i superiori. • La definizione della semantica delle regole ricorsive è
delicata (in particolare con la negazione)
• Serve la ricorsione • Potere espressivo:
• Datalog non ricorsivosenza negazione è
equivalente al calcolo senza negazione e senza
Superiore (Impiegato: i, SuperCapo: c) ← quantificatore universale
Supervisione (Impiegato: i, Capo: c) • Datalog non ricorsivocon negazione è equivalente
al calcolo e all'algebra
Superiore (Impiegato: i, SuperCapo: c) ← • Datalog ricorsivo senza negazione e calcolo sono
incomparabili
Supervisione (Impiegato: i, Capo: c'),
• Datalog ricorsivocon negazione è più espressivo
Superiore (Impiegato: c', SuperCapo: c) di calcolo e algebra

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 127 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 128


Basi di dati, Capitolo 3 Basi di dati, Capitolo 3

22
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

SQL

• originariamente "Structured Query


Atzeni, Ceri, Paraboschi, Torlone Language", ora "nome proprio"
Basi di dati • linguaggio con varie funzionalità:
McGraw -Hill, 1996-2002 • contiene sia il DDL sia il DML
Capitolo 4: • ne esistono varie versioni
SQL • vediamo gli aspetti essenziali, non i
dettagli
24/09/2002

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 2
Basi di dati, Capitolo 4

SQL: "storia" Definizione dei dati in SQL

• Istruzione CREATE TABLE:


• prima proposta SEQUEL (1974);
• definisce uno schema di relazione e
• prime implementazioni in SQL/DS e
ne crea un’istanza vuota
Oracle (1981)
• specifica attributi, domini e vincoli
• dal 1983 ca. "standard di fatto"
• standard (1986, poi 1989 e infine 1992,
1999)
• recepito solo in parte (!!)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 3 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 4


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

CREATE TABLE, esempio Domini

CREATE TABLE Impiegato( • Domini elementari (predefiniti)


Matricola CHAR(6) PRIMARY KEY,
• Domini definiti dall'utente (semplici, ma
Nome CHAR(20) NOT NULL,
Cognome CHAR(20) NOT NULL,
riutilizzabili)
Dipart CHAR(15),
Stipendio NUMERIC(9) DEFAULT 0,
FOREIGN KEY( Dipart) REFERENCES
Dipartimento( NomeDip),
UNIQUE (Cognome,Nome)
)
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 5 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 6
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

1
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Domini elementari Definizione di domini

• Carattere: singoli caratteri o stringhe, • Istruzione CREATE DOMAIN:


anche di lunghezza variabile • definisce un dominio (semplice),
• Bit: singoli booleani o stringhe utilizzabile in definizioni di relazioni,
• Numerici, esatti e approssimati anche con vincoli e valori di default
• Data, ora, intervalli di tempo
• Introdotti in SQL:1999:
• Boolean
• BLOB, CLOB (binary/character large
object): per grandi immagini e testi
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 7 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 8
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

CREATE DOMAIN, esempio Vincoli intrarelazionali

CREATE DOMAIN Voto • NOT NULL


AS SMALLINT DEFAULT NULL • UNIQUE definisce chiavi
CHECK ( value >=18 AND value <= 30 ) • PRIMARY KEY: chiave primaria (una
sola, implica NOT NULL)
• CHECK, vedremo più avanti

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 9 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 10


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

UNIQUE e PRIMARY KEY CREATE TABLE, esempio

• due forme: CREATE TABLE Impiegato(


Matricola CHAR(6) PRIMARY KEY,
• nella definzione di un attributo, se
Nome CHAR(20) NOT NULL,
forma da solo la chiave Cognome CHAR(20) NOT NULL,
• come elemento separato Dipart CHAR(15),
Stipendio NUMERIC(9) DEFAULT 0,
FOREIGN KEY( Dipart) REFERENCES
Dipartimento( NomeDip),
UNIQUE (Cognome,Nome)
)
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 11 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 12
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

2
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

PRIMARY KEY, alternative CREATE TABLE, esempio

CREATE TABLE Impiegato(


Matricola CHAR(6) PRIMARY KEY,
Matricola CHAR(6) PRIMARY KEY Nome CHAR(20) NOT NULL,
Cognome CHAR(20) NOT NULL,
Matricola CHAR(6), Dipart CHAR(15),
…, Stipendio NUMERIC(9) DEFAULT 0,
PRIMARY KEY (Matricola) FOREIGN KEY( Dipart) REFERENCES
Dipartimento( NomeDip),
UNIQUE (Cognome,Nome)
)
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 13 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 14
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Chiavi su più attributi, attenzione Vincoli interrelazionali

Nome CHAR(20) NOT NULL, • CHECK, vedremo più avanti


Cognome CHAR(20) NOT NULL, • REFERENCES e FOREIGN KEY permettono di
UNIQUE (Cognome,Nome), definire vincoli di integrità referenziale
• di nuovo due sintassi
Nome CHAR(20) NOT NULL UNIQUE, • per singoli attributi
Cognome CHAR(20) NOT NULL UNIQUE, • su più attributi
• E' possibile definire politiche di reazione alla
• Non è la stessa cosa! violazione

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 15 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 16


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Infrazioni Infrazioni
Codice Data Vigile Prov Numero Codice Data Vigile Prov Numero
34321 1/2/95 3987 MI 39548K 34321 1/2/95 3987 MI 39548K
53524 4/3/95 3295 TO E39548 53524 4/3/95 3295 TO E39548
64521 5/4/96 3295 PR 839548 64521 5/4/96 3295 PR 839548
73321 5/2/98 9345 PR 839548 73321 5/2/98 9345 PR 839548

Vigili Matricola Cognome Nome


Auto Prov Numero Cognome Nome
3987 Rossi Luca
MI 39548K Rossi Mario
3295 Neri Piero
TO E39548 Rossi Mario
9345 Neri Mario
PR 839548 Neri Luca
24/09/2002 7543 Mori
Atzeni-Ceri-Paraboschi-Torlone, Gino 17 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 18
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

3
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

CREATE TABLE, esempio Modifiche degli schemi

CREATE TABLE Infrazioni( ALTER DOMAIN


Codice CHAR(6) NOT NULL PRIMARY KEY,
Data DATE NOT NULL, ALTER TABLE
Vigile INTEGER NOT NULL DROP DOMAIN
REFERENCES Vigili(Matricola), DROP TABLE
Provincia CHAR(2),
Numero CHAR(6) , ...
FOREIGN KEY(Provincia, Numero)
REFERENCES Auto(Provincia, Numero)
)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 19 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 20


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Definzione degli indici DDL, in pratica

• In molti sistemi si utilizzano strumenti


• è rilevante dal punto di vista delle
diversi dal codice SQL per definire lo
prestazioni
schema della base di dati
• ma è a livello fisico e non logico
• in passato era importante perché in
alcuni sistemi era l'unico mezzo per
definire chiavi
• CREATE INDEX

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 21 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 22


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

SQL, operazioni sui dati Istruzione SELECT (versione base)

• interrogazione: SELECT ListaAttributi


• SELECT FROM ListaTabelle
[ WHERE Condizione ]
• modifica:
• INSERT, DELETE, UPDATE
• "target list"
• clausola FROM
• clausola WHERE

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 23 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 24


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

4
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Maternità Madre Figlio Persone


Luisa Maria Nome Età Reddito Selezione e proiezione
Luisa Luigi Andrea 27 21
Anna Olga Aldo 25 15
• Nome e reddito delle persone con
Anna Filippo Maria 55 42
meno di trenta anni
Maria Andrea Anna 50 35
Filippo 26 30 PROJ Nome, Reddito (SEL Eta<30(Persone))
Maria Aldo
Luigi 50 40
Paternità Padre Figlio select nome, reddito
Franco 60 20
Sergio Franco Olga 30 41 from persone
Luigi Olga Sergio 85 35 where eta < 30
Luigi Filippo Luisa 75 87
Franco Andrea
24/09/2002 FrancoAtzeni-Ceri-Paraboschi-Torlone,
Aldo 25 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 26
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Persone
Nome Reddito
Età Reddito SELECT, abbreviazioni
Andrea 2721 21
Aldo 2515 15
select nome, reddito
Filippo
Maria 26
5530 30
42
Anna 50 35
from persone
Filippo 26 30 where eta < 30
Luigi 50 40
select p.nome as nome,
Franco 60 20
Olga 30 41 p.reddito as reddito
Sergio 85 35 from persone p
Luisa 75 87 where p.eta < 30

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 27 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 28


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Selezione, senza proiezione SELECT, abbreviazioni

• Nome, età e reddito delle persone con select *


meno di trenta anni from persone
SELEta<30(Persone) where eta < 30

select * select nome, età, reddito


from persone from persone
where eta < 30 where eta < 30

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 29 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 30


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

5
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Proiezione, senza selezione SELECT, abbreviazioni

• R(A,B)
• Nome e reddito di tutte le persone
select *
PROJ Nome, Reddito (Persone) from R

select nome, reddito equivale (intuitivamente) a


from persone select X.A as A, X.B as B
from R X
where true

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 31 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 32


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Condizione complessa
Espressioni nella target list

select Reddito/2 as redditoSemestrale select *


from Persone from persone
where Nome = 'Luigi' where reddito > 25
and (eta < 30 or eta > 60)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 33 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 34


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Condizione “LIKE”
Gestione dei valori nulli
• Le persone che hanno un nome che Impiegati
inizia per 'A' e ha una 'd' come terza Matricola Cognome Filiale Età
lettera 7309
5998 Rossi
Neri Milano
Roma 32
45
5998
9553 Bruni
Neri Milano 45
NULL

9553 Bruni Milano NULL


select *
from persone • Gli impiegati la cui età è o
where nome like 'A_d%' potrebbe essere maggiore di 40
SEL Età > 40 OR Età IS NULL (Impiegati)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 35 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 36


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

6
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

• Gli impiegati la cui età è o Selezione, proiezione e join


potrebbe essere maggiore di 40
• Istruzioni SELECT con una sola
SEL (Impiegati) relazione nella clausola FROM
Età > 40 OR Età IS NULL
permettono di realizzare:
• selezioni, proiezioni, ridenominazioni
select *
• con più relazioni nella FROM si
from impiegati realizzano join (e prodotti cartesiani)
where eta > 40 or eta is null

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 37 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 38


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

SQL e algebra relazionale SQL e algebra relazionale, 2

• R1(A1,A2) R2(A3,A4) • R1(A1,A2) R2(A3,A4)

select R1.A1, R2.A4 select R1.A1, R2.A4


from R1, R2 from R1, R2
where R1.A2 = R2.A3 where R1.A2 = R2.A3

• prodotto cartesiano (FROM) PROJ A1,A4 (SEL A2=A3 (R1 JOIN R2))
• selezione (WHERE)
• proiezione (SELECT)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 39 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 40


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

• possono essere necessarie


ridenominazioni select X.A1 AS B1, Y.A4 AS B2
• nel prodotto cartesiano from R1 X, R2 Y, R1 Z
• nella target list where X.A2 = Y.A3 AND Y.A4 = Z.A1

select X.A1 AS B1, ... REN B1,B2← A1,A4 (


from R1 X, R2 Y, R1 Z PROJ A1,A4 ( SEL A2 = A3 AND A4 = C1 (
where X.A2 = Y.A3 AND ... R1 JOIN R2 JOIN REN C1,C2 ← A1,A2 (R1))))

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 41 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 42


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

7
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

SQL: esecuzione delle interrogazioni SQL: speciifca delle interrogazioni

• Le espressioni SQL sono dichiarative e • La capacità dei DBMS di "ottimizzare" le


noi ne stiamo vedendo la semantica interrogazioni, rende (di solito) non
• In pratica, i DBMS eseguono le necessario preoccuparsi dell'efficienza
operazioni in modo efficiente, ad quando si specifica un'interrogazione
esempio: • È perciò più importante preoccuparsi
• eseguono le selezioni al più presto della chiarezza (anche perché così è più
• se possibile, eseguono join e non difficile sbagliare …)
prodotti cartesiani

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 43 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 44


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Proiezione, attenzione select select distinct


• cognome e filiale di tutti gli impiegati cognome, filiale cognome, filiale
from impiegati from impiegati
Matricola Cognome Filiale Stipendio
7309 Neri Napoli 55
5998 Neri Milano 64
Cognome Filiale Cognome Filiale
9553 Rossi Roma 44
Neri Napoli Neri Napoli
5698 Rossi Roma 64
Neri Milano Neri Milano
Rossi Roma Rossi Roma
PROJ Cognome, Filiale (Impiegati) Rossi Roma

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 45 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 46


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Maternità Madre Figlio Persone


Nome Età Reddito Selezione, proiezione e join
Luisa Maria
Luisa Luigi Andrea 27 21 • I padri di persone che guadagnano più di
Anna Olga Aldo 25 15 venti milioni
Anna Filippo Maria 55 42
Maria Andrea Anna 50 35 PROJPadre(paternita
Maria Aldo Filippo 26 30 JOIN Figlio =Nome
Luigi 50 40 SEL Reddito>20 (persone))
Paternità Padre Figlio
Franco 60 20
Sergio Franco Olga 30 41 select distinct padre
Luigi Olga from persone, paternita
Sergio 85 35 where figlio = nome and reddito > 20
Luigi Filippo Luisa 75 87
Franco Andrea
24/09/2002 FrancoAtzeni-Ceri-Paraboschi-Torlone,
Aldo 47 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 48
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

8
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Join naturale • Le persone che guadagnano più dei


rispettivi padri; mostrare nome, reddito e
reddito del padre
• Padre e madre di ogni persona
PROJ Nome, Reddito, RP (SELReddito>RP
paternita JOIN maternita (RENNP,EP,RP ß Nome,Eta,Reddito(persone)
JOINNP=Padre
(paternita JOIN Figlio =Nome persone)))
select paternita.figlio,padre, madre
from maternita, paternita select f.nome, f.reddito, p.reddito
where paternita.figlio = maternita.figlio from persone p, paternita, persone f
where p.nome = padre and
figlio = f.nome and
f.reddito > p.reddito
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 49 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 50
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

SELECT, con ridenominazione del


Join esplicito
risultato
• Padre e madre di ogni persona
select figlio, f.reddito as reddito,
p.reddito as redditoPadre select paternita.figlio,padre, madre
from persone p, paternita, persone f from maternita, paternita
where p.nome = padre and figlio = f.nome
and .reddito > p.reddito where paternita.figlio = maternita.figlio

select madre, paternita.figlio, padre


from maternita join paternita on
paternita.figlio = maternita.figlio

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 51 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 52


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

SELECT con join esplicito, sintassi


• Le persone che guadagnano più dei rispettivi padri;
mostrare nome, reddito e reddito del padre
SELECT …
FROM Tabella { … JOIN Tabella ON CondDiJoin }, … select f.nome, f.reddito, p.reddito
[ WHERE AltraCondizione ] from persone p, paternita, persone f
where p.nome = padre and
figlio = f.nome and
f.reddito > p.reddito
select f.nome, f.reddito, p.reddito
from persone p join paternita on p.nome = padre
join persone f on figlio = f.nome
where f.reddito > p.reddito

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 53 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 54


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

9
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Ulteriore estensione: join naturale


Join esterno: "outer join"
(meno diffuso)
PROJ Figlio,Padre,Madre( • Padre e, se nota, madre di ogni persona
paternita JOIN Figlio = Nome REN Nome=Figlio (maternita))
select paternita.figlio, padre, madre
paternita JOIN maternita from paternita left join maternita
on paternita.figlio = maternita.figlio
select madre, paternita.figlio, padre
from maternita join paternita on select paternita.figlio, padre, madre
paternita.figlio = maternita.figlio from paternita left outer join maternita
on paternita.figlio = maternita.figlio
select madre, paternita.figlio, padre
from maternita natural join paternita • outer e' opzionale
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 55 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 56
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Outer join Ordinamento del risultato

select paternita.figlio, padre, madre • Nome e reddito delle persone con meno
from maternita join paternita di trenta anni in ordine alfabetico
on maternita.figlio = paternita.figlio

select paternita.figlio, padre, madre select nome, reddito


from maternita left outer join paternita from persone
on maternita.figlio = paternita.figlio
where eta < 30
select paternita.figlio, padre, madre order by nome
from maternita full outer join paternita
on maternita.figlio = paternita.figlio

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 57 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 58


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

select nome, reddito select nome, reddito Operatori aggregati


from persone from persone
where eta < 30 where eta < 30
• Nelle espressioni della target list possiamo
order by nome
avere anche espressioni che calcolano valori
a partire da insiemi di ennuple:
Persone Persone • conteggio, minimo, massimo, media, totale
Nome Reddito Nome Reddito • sintassi base (semplificata):
Andrea 21 Aldo 15 Funzione ( [ DISTINCT ] * )
Aldo 15 Andrea 21 Funzione ( [ DISTINCT ] Attributo )
Filippo 30 Filippo 30

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 59 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 60


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

10
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Operatori aggregati: COUNT Paternità Padre Figlio


Sergio Franco
• Il numero di figli di Franco Luigi Olga
Luigi Filippo
select count(*) as NumFigliDiFranco Franco Andrea
from Paternita
where Padre = 'Franco' Franco Aldo

• l’operatore aggregato (count) viene applicato al


risultato dell’interrogazione: NumFigliDiFranco
select * 2
from Paternita
where Padre = 'Franco'

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 61 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 62


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Altri operatori aggregati


COUNT e valori nulli
• SUM, AVG, MAX, MIN
select count(*) from persone
• Media dei redditi dei figli di Franco
select count(reddito) from persone

select count(distinct reddito) from persone select avg(reddito)


from persone join paternita on nome=figlio
Persone Nome Età Reddito where padre='Franco'
Andrea 27 21
Aldo 25 NULL
Maria 55 21
Anna 50 35
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 63 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 64
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Operatori aggregati e valori nulli Operatori aggregati e target list


• un’interrogazione scorretta:

select avg(reddito) as redditomedio select nome, max(reddito)


from persone from persone

Persone Nome Età Reddito • di chi sarebbe il nome? La target list deve
Andrea 27 30 essere omogenea
Aldo 25 NULL
Maria 55 36
Anna 50 36 select min(eta), avg(reddito)
from persone
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 65 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 66
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

11
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Operatori aggregati e raggruppamenti Operatori aggregati e raggruppamenti


• Le funzioni possono essere applicate a partizioni • Il numero di figli di ciascun padre
delle relazioni
• Clausola GROUP BY: select padre, count(*) AS NumFigli
GROUP BY listaAttributi from paternita
group by Padre

paternita Padre Figlio


Sergio Franco Padre NumFigli
Luigi Olga Sergio 1
Luigi Filippo Luigi 2
Franco Andrea Franco 2
Franco Aldo
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 67 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 68
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Semantica di interrogazioni
con operatori aggregati e Raggruppamenti e target list
raggruppamenti
scorretta
select padre, avg(f.reddito), p.reddito
1. interrogazione senza group by e senza from persone f join paternita on figlio = nome join
operatori aggregati persone p on padre =p.nome
select * group by padre
from paternita
corretta
2. si raggruppa e si applica l’operatore
select padre, avg(f.reddito), p.reddito
aggregato a ciascun gruppo from persone f join paternita on figlio = nome join
persone p on padre =p.nome
group by padre, p.reddito

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 69 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 70


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Condizioni sui gruppi WHERE o HAVING?

• I padri i cui figli hanno un reddito medio maggiore di • I padri i cui figli sotto i 30 anni hanno un reddito
25 medio maggiore di 20

select padre, avg(f.reddito) select padre, avg(f.reddito)


from persone f join paternita on figlio = nome from persone f join paternita on figlio = nome
group by padre where eta < 30
having avg(f.reddito) > 25 group by padre
having avg(f.reddito) > 25

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 71 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 72


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

12
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Sintassi, riassumiamo Unione, intersezione e differenza

SelectSQL ::= • La select da sola non permette di fare unioni;


select ListaAttributiOEspressioni serve un costrutto esplicito:
from ListaTabelle
[ where CondizioniSemplici ] select …
[ group by union [all]
ListaAttributiDiRaggruppamento ] select ...
[ having CondizioniAggregate ]
[ order by ListaAttributiDiOrdinamento ] • i duplicati vengono eliminati (a meno che si
usi all); anche dalle proiezioni!

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 73 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 74


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Notazione posizionale! Figlio Padre Figlio


Sergio Franco Sergio Franco
select padre
Luigi Olga Luigi Olga
from paternita
Luigi Filippo Luigi Filippo
union Franco Andrea Franco Andrea
select madre Franco Aldo Franco Aldo
from maternita Luisa Maria Luisa Maria
Luisa Luigi Luisa Luigi
• quali nomi per gli attributi del risultato? Anna Olga Anna Olga
• nessuno Anna Filippo Anna Filippo
• quelli del primo operando Maria Andrea Maria Andrea
• … Maria Aldo Maria Aldo
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 75 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 76
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Notazione posizionale, 2 Notazione posizionale, 3


• Anche con le ridenominazioni non cambia niente:
select padre, figlio select padre, figlio select padre as genitore, figlio
from paternita from paternita from paternita
union
union union
select figlio, madre as genitore
select figlio, madre select madre, figlio from maternita
from maternita from maternita • Corretta:
select padre as genitore, figlio
from paternita
union
select madre as genitore, figlio
from maternita

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 77 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 78


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

13
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Differenza Intersezione
select Nome
select Nome from Impiegato
from Impiegato intersect
except select Cognome as Nome
select Cognome as Nome from Impiegato
from Impiegato
• equivale a
• vedremo che si può esprimere con select nidificate
select I.Nome
from Impiegato I, Impiegato J
where I.Nome = J.Cognome

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 79 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 80


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Interrogazioni nidificate

• le condizioni atomiche permettono • nome e reddito del padre di Franco


anche
select Nome, Reddito
• il confronto fra un attributo (o più, from Persone, Paternita
vedremo poi) e il risultato di una where Nome = Padre and Figlio = 'Franco'
sottointerrogazione
select Nome, Reddito
• quantificazioni esistenziali from Persone
where Nome = ( select Padre
from Paternita
where Figlio = 'Franco')

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 81 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 82


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

• Nome e reddito dei padri di persone che guadagnano


più di 20 milioni
Interrogazioni nidificate, commenti
select distinct P.Nome, P.Reddito
• La forma nidificata è “meno from Persone P, Paternita , Persone F
dichiarativa”, ma talvolta più leggibile where P.Nome = Padre and Figlio = F.Nome
(richiede meno variabili) and F.Reddito > 20
• La forma piana e quella nidificata select Nome, Reddito
possono essere combinate from Persone
• Le sottointerrogazioni non possono where Nome in (select Padre
from Paternita
contenere operatori insiemistici where Figlio = any (select Nome
(“l’unione si fa solo al livello esterno”); from Persone
la limitazione non è significativa where Reddito > 20))

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 83 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 84


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

14
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

• Nome e reddito dei padri di persone che guadagnano


più di 20 milioni Interrogazioni nidificate, commenti, 2
select distinct P.Nome, P.Reddito
from Persone P, Paternita , Persone F • La prima versione di SQL prevedeva
where P.Nome = Padre and Figlio = F.Nome solo la forma nidificata (o strutturata),
and F.Reddito > 20
con una sola relazione in ogni clausola
select Nome, Reddito FROM. Insoddisfacente:
from Persone
where Nome in (select Padre • la dichiaratività è limitata
from Paternita, Persone • non si possono includere nella target
where Figlio = Nome list attributi di relazioni nei blocchi
and Reddito > 20)
interni

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 85 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 86


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

• Nome e reddito dei padri di persone che guadagnano


più di 20 milioni, con indicazione del reddito del figlio Interrogazioni nidificate, commenti, 3
select distinct P.Nome, P.Reddito, F.Reddito • regole di visibilità:
from Persone P, Paternita , Persone F • non è possibile fare riferimenti a variabili
where P.Nome = Padre and Figlio = F.Nome definite in blocchi più interni
and F.Reddito > 20
• se un nome di variabile è omesso, si
select Nome, Reddito, ???? assume riferimento alla variabile più
from Persone “vicina”
where Nome in (select Padre • in un blocco si può fare riferimento a variabili
from Paternita definite in blocchi più esterni; la semantica
where Figlio = any (select Nome
from Persone base (prodotto cartesiano, selezione,
where Reddito > 20)) proiezione) non funziona più, vedremo presto

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 87 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 88


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Quantificazione esistenziale • Le persone che hanno almeno un


figlio
• Ulteriore tipo di condizione
select *
• EXISTS ( Sottoespressione ) from Persone
where exists ( select *
from Paternita
where Padre = Nome) or
exists ( select *
from Maternita
where Madre = Nome)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 89 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 90


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

15
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

• I padri i cui figli guadagnano tutti più Semantica delle espressioni


di venti milioni “correlate”
• L’interrogazione interna viene eseguita
select distinct Padre una volta per ciascuna ennupla
from Paternita Z
where not exists ( dell’interrogazione esterna
select *
from Paternita W, Persone
where W.Padre = Z.Padre
and W.Figlio = Nome
and Reddito <= 20)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 91 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 92


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Disgiunzione e unione (ma non sempre)


Visibilità
select * from Persone where Reddito > 30
union
• scorretta: select F.*
from Persone F, Paternita, Persone P
where F.Nome = Figlio and Padre = P.Nome
select * and P.Reddito > 30
from Impiegato
where Dipart in (select Nome select *
from Dipartimento D1 from Persone F
where Nome = 'Produzione') or
where Reddito > 30 or
Dipart in (select Nome exists (select *
from Dipartimento D2 from Paternita, Persone P
where D2.Citta = D1.Citta) where F.Nome = Figlio and Padre = P.Nome
and P.Reddito > 30)
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 93 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 94
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Differenza e nidificazione Massimo e nidificazione

select Nome from Impiegato • La persona (o le persone) con il reddito


except massimo
select Cognome as Nome from Impiegato

select Nome
from Impiegato I select *
where not exists (select * from persone
from Impiegato where reddito = ( select max(reddito)
where Cognome = I.Nome) from persone)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 95 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 96


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

16
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Operazioni di aggiornamento Inserimento

INSERT INTO Tabella [ ( Attributi ) ]


• operazioni di
VALUES( Valori )
• inserimento: insert
• eliminazione: delete
oppure
• modifica: update
• di una o più ennuple di una relazione
INSERT INTO Tabella [ ( Attributi )]
• sulla base di una condizione che può
coinvolgere anche altre relazioni SELECT ...

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 97 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 98


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

INSERT INTO Persone VALUES ('Mario',25,52) Inserimento , commenti


INSERT INTO Persone(Nome, Eta, Reddito) • l’ordinamento degli attributi (se presente) e
VALUES('Pino',25,52) dei valori è significativo
• le due liste debbono avere lo stesso numero
INSERT INTO Persone(Nome, Reddito) di elementi
VALUES('Lino',55)
• se la lista di attributi è omessa, si fa
INSERT INTO Persone ( Nome ) riferimento a tutti gli attributi della relazione,
SELECT Padre secondo l’ordine con cui sono stati definiti
FROM Paternita • se la lista di attributi non contiene tutti gli
WHERE Padre NOT IN (SELECT Nome attributi della relazione, per gli altri viene
FROM Persone) inserito un valore nullo (che deve essere
permesso) o un valore di default
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 99 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 100
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Eliminazione di ennuple DELETE FROM Persone


WHERE Eta < 35
DELETE FROM Tabella
DELETE FROM Paternita
[ WHERE Condizione ]
WHERE Figlio NOT in ( SELECT Nome
FROM Persone)

DELETE FROM Paternita

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 101 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 102


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

17
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Eliminazione, commenti Modifica di ennuple

• elimina le ennuple che soddisfano la


UPDATE NomeTabella
condizione
• può causare (se i vincoli di integrità SET Attributo = < Espressione |
referenziale sono definiti con politiche di SELECT … |
reazione cascade) eliminiazioni da altre NULL |
relazioni
DEFAULT >
• ricordare: se la where viene omessa, si
intende where true [ WHERE Condizione ]

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 103 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 104


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Vincoli di integrità generici: check


UPDATE Persone SET Reddito = 45
WHERE Nome = 'Piero' • Specifica di vincoli di ennupla (e anche
vincoli più complessi)
UPDATE Persone check ( Condizione )
SET Reddito = Reddito * 1.1
WHERE Eta < 30

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 105 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 106


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Vincoli di integrità generici:


Check, esempio
asserzioni
create table Impiegato • Specifica vincoli a livello di schema
(
Matricola character(6),
Cognome character(20), create assertion NomeAss check ( Condizione )
Nome character(20),
Sesso character not null check (sesso in (‘M’,‘F’))
Stipendio integer, create assertion AlmenoUnImpiegato
Superiore character(6), check (1 <= ( select count(*)
check (Stipendio <= (select Stipendio from Impiegato ))
from Impiegato J
where Superiore = J.Matricola)
)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 107 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 108


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

18
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Viste Aggiornamenti sulle viste

create view NomeVista [ ( ListaAttributi ) ] as SelectSQL • Ammessi (di solito) solo su viste
[ with [ local | cascaded ] check option ]
definite su una sola relazione
create view ImpiegatiAmmin • Alcune verifiche possono essere
(Matricola, Nome, Cognome, Stipendio) as imposte
select Matricola, Nome, Cognome, Stipendio
from Impiegato
where Dipart = 'Amministrazione' and
Stipendio > 10

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 109 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 110


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Un’interrogazione non standard

create view ImpiegatiAmminPoveri as • La nidificazione nella having non è ammessa


select *
from ImpiegatiAmmin
where Stipendio < 50 select Dipart
with check option from Impiegato
group by Dipart
• check option permette modifiche, ma solo a
condizione che la ennupla continui ad appartenere having sum (Stipendio) >= all
alla vista (non posso modificare lo stipendio (select sum (Stipendio)
portandolo a 60) from Impiegato
group by Dipart)
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 111 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 112
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Soluzione con le viste Ancora sulle viste

create view BudgetStipendi(Dip,TotaleStipendi) as • Interrogazione scorretta


select Dipart, sum(Stipendio) select avg(count(distinct Ufficio))
from Impiegato from Impiegato
group by Dipart group by Dipart
• Con una vista
select Dip create view DipartUffici(NomeDip,NroUffici) as
select Dipart, count(distinct Ufficio)
from BudgetStipendi from Impiegato
where TotaleStipendi =(select max(TotaleStipendi) group by Dipart;
from BudgetStipendi) select avg(NroUffici)
from DipartUffici

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 113 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 114


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

19
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Viste ricorsive Viste ricorsive in SQL:1999

• Per ogni impiegato, trovare tutti i superiori, avendo with recursive Superiore(Imp,Supercapo
Supervisione (Impiegato, Capo) ( ( select Imp, Capo as Supercapo
from Supervisione)
• Serve la ricorsione ; in Datalog: union
( select Superiore.Imp, Supercapo
from Supervisione, Superiore
Superiore (Impiegato: i, SuperCapo: c) ←
where Supervisione.Capo = Superiore.Imp) )
Supervisione (Impiegato: i, Capo: c) select *
from Superiore
Superiore (Impiegato: i, SuperCapo: c) ←
Supervisione (Impiegato: i, Capo: c'),
Superiore (Impiegato: c', SuperCapo: c)
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 115 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 116
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Controllo dell'accesso Privilegi


• In SQL è possibile specificare chi (utente ) e
come ( lettura, scrittura, …) può utilizzare la • Un privilegio è caratterizzato da:
base di dati (o parte di essa) • la risorsa cui si riferisce
• Oggetto dei privilegi (diritti di accesso) sono • l'utente che concede il privilegio
di solito le tabelle, ma anche altri tipi di
risorse, quali singoli attributi, viste o domini • l'utente che riceve il privilegio
• Un utente predefinito _system • l'azione che viene permessa
(amministratore della base di dati) ha tutti i • la trasmissibilità del privilegio
privilegi
• Il creatore di una risorsa ha tutti i privilegi su
di essa

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 117 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 118


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Tipi di privilegi offerti da SQL grant e revoke


• Concessione di privilegi:
• insert: permette di inserire nuovi oggetti (ennuple) grant < Privileges | all privileges > on Resource
• update: permette di modificare il contenuto to Users [ with grant option ]
• delete: permette di eliminare oggetti • grant option specifica se il privilegio può essere
• select: permette di leggere la risorsa trasmesso ad altri utenti
• references: permette la definizione di vincoli di grant select on Department to Stefano
integrità referenziale verso la risorsa (può limitare la • Revoca di privilegi
possibilità di modificare la risorsa) revoke Privileges on Resource from Users
• usage : permette l'utilizzo in una definizione (per [ restrict | cascade ]
esempio, di un dominio)

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 119 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 120


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

20
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Transazione Le transazioni sono … atomiche


• Insieme di operazioni da considerare • La sequenza di operazioni sulla base di
indivisibile ("atomico"), corretto anche dati viene eseguita per intero o per
in presenza di concorrenza e con effetti niente:
definitivi • trasferimento di fondi da un conto A
• Proprietà ("acide"): ad un conto B: o si fanno il
• Atomicità prelevamento da A e il versamento su
• Consistenza B o nessuno dei due
• Isolamento
• Durabilità (persistenza)
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 121 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 122
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

Le transazioni sono … consistenti Le transazioni sono … isolate

• Al termine dell'esecuzione di una • L'effetto di transazioni concorrenti deve


transazione, i vincoli di integrità essere coerente (ad esempio
debbono essere soddisfatti "equivalente" all'esecuzione separata)
• "Durante" l'esecuzione ci possono • se due assegni emessi sullo stesso
essere violazioni, ma se restano alla fine conto corrente vengono incassati
allora la transazione deve essere contemporaneamente si deve evitare
annullata per intero ("abortita") di trascurarne uno

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 123 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 124


Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

I risultati delle transazioni sono


Transazioni in SQL
durevoli
• La conclusione positiva di una • Istruzioni fondamentali
transazione corrisponde ad un impegno • begin transaction: specifica l'inizio della
(in inglese commit) a mantenere traccia transazione (le operazioni non vengono
eseguite sulla base di dati)
del risultato in modo definitivo, anche in
• commit work: le operazioni specificate a
presenza di guasti e di esecuzione
partire dal begin transaction vengono
concorrente eseguite
• rollback work: si rinuncia all'esecuzione
delle operazioni specificate dopo l'ultimo
begin transaction
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 125 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 126
Basi di dati, Capitolo 4 Basi di dati, Capitolo 4

21
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Una transazione in SQL

begin transaction;
update ContoCorrente
set Saldo = Saldo – 10
where NumeroConto = 12345 ;
update ContoCorrente
set Saldo = Saldo + 10
where NumeroConto = 55555 ;
commit work;

24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 127


Basi di dati, Capitolo 4

22
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

SQL e applicazioni

• In applicazioni complesse, l’utente non vuole


Atzeni, Ceri, Paraboschi, Torlone eseguire comandi SQL, ma programmi, con
poche scelte
Basi di dati
McGraw -Hill, 1996-2002 • SQL non basta, sono necessarie altre
funzionalità, per gestire:
Capitolo 5: • input (scelte dell’utente e parametri)
SQL nei linguaggi di • output (con dati che non sono relazioni o
se si vuole una presentazione complessa)
programmazione
17/10/2002
• per gestire il controllo

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 2
Basi di dati, Capitolo 5

SQL e linguaggi di programmazione Applicazioni ed SQL: architettura


SQL
• Le applicazioni sono scritte in
Applicazione 1
• linguaggi di programmazione Java
tradizionali:
• Cobol, C, Java, Fortran DBMS
Applicazione 2
• linguaggi “ad hoc”, proprietari e non: C
• PL/SQL, Informix4GL, Delphi Base
di dati
• Vediamo solo l’approccio “tradizionale”, Applicazione 3
Delphi
perché più generale Risultati

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 3 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 4


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

Una difficoltà importante Altre differenze, 1

• Conflitto di impedenza • Accesso ai dati e correlazione:


(“disaccoppiamento di impedenza”) fra • linguaggio: dipende dal paradigma e
base di dati e linguaggio dai tipi disponibili; ad esempio
• linguaggi: operazioni su singole scansione di liste o “navigazione” tra
variabili o oggetti oggetti
• SQL: operazioni su relazioni (insiemi • SQL: join (ottimizzabile)
di ennuple)

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 5 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 6


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

1
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

SQL e linguaggi di programmazione:


Altre differenze, 2
tecniche principali

• tipi di base: • SQL immerso (“Embedded SQL”)


• linguaggi: numeri, stringhe, booleani • sviluppata sin dagli anni ’70
• SQL: CHAR, VARCHAR, DATE, ... • “SQL statico”
• costruttori di tipo: • SQL dinamico
• linguaggio: dipende dal paradigma • Call Level Interface (CLI)
• SQL: relazioni e ennuple • più recente
• SQL/CLI, ODBC, JDBC

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 7 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 8


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

SQL immerso SQL immerso, un esempio


#include<stdlib.h>
• le istruzioni SQL sono “immerse” nel main(){
programma redatto nel linguaggio exec sql begin declare section;
char *NomeDip = "Manutenzione";
“ospite” char *CittaDip = "Pisa";
• un precompilatore (legato al DBMS) int NumeroDip = 20;
exec sql end declare section;
viene usato per analizzare il programma exec sql connect to utente@librobd;
if (sqlca.sqlcode != 0) {
e tradurlo in un programma nel printf("Connessione al DB non riuscita\n"); }
linguaggio ospite (sostituendo le else {
exec sql insert into Dipartimento
istruzioni SQL con chiamate alle values(:NomeDip,:CittaDip,:NumeroDip);
funzioni di una API del DBMS) }
exec sql disconnect all;

}
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 9 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 10
Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

SQL immerso, commenti al codice SQL immerso, commenti al codice, 2

• EXEC SQL denota le porzioni di •sqlca è una struttura dati per la


interesse del precompilatore: comunicazione fra programma e DBMS
• definizioni dei dati •sqlcode è un campo di sqlca che
• istruzioni SQL mantiene il codice di errore dell’ultimo
• le variabili del programma possono comando SQL eseguito:
essere usate come “parametri” nelle • zero: successo
istruzioni SQL (precedute da “:”) dove • altro valore : errore o anomalia
sintatticamente sono ammesse costanti

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 11 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 12


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

2
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

SQL immerso, fasi Un altro esempio


int main() {
Sorgente LP + SQL
exec sql connect to universita
Precompilazione user pguser identified by pguser;
exec sql create table studente
Precompilato L P
(matricola integer primary key,
Compilazione nome varchar(20),
annodicorso integer);
Codice oggetto Librerie (del DBMS) exec sql disconnect;
return 0;
Collegamento }
Eseguibile

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 13 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 14


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

L’esempio “precompilato” Note


/* These include files are added by the preprocessor */
#include < ecpgtype.h> • Il precompilatore è specifico della
#include < ecpglib.h> combinazione
#include < ecpgerrno.h>
#include < sqlca.h> linguaggio-DBMS-sistema operativo
int main() {
ECPGconnect(__LINE__, "universita" , " pguser " ,
"pguser" , NULL, 0);
ECPGdo(__LINE__, NULL, "create table studente (
matricola integer primary key , nome varchar ( 20 ) ,
annodicorso integer )", ECPGt_EOIT, ECPGt_EORT);
ECPGdisconnect (__LINE__, "CURRENT");
return 0;
}

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 15 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 16


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

Interrogazioni in SQL immerso:


conflitto di impedenza Cursore

• Il risultato di una select è costituito da zero o Programma select … DBMS


piú ennuple :
• zero o una: ok -- l’eventuale risultato puó
essere gestito in un record
• piú ennuple : come facciamo? Buffer del
programma
• l’insieme (in effetti, la lista) non è
gestibile facilmente in molti linguaggi
• Cursore : tecnica per effettuare la scansione e
passare al programma una ennupla alla volta

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 17 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 18


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

3
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Nota Operazioni sui cursori


Definizione del cursore
declare NomeCursore [ scroll ] cursor for Select …
• Il cursore
Esecuzione dell'interrogazione
• accede a tutte le ennuple di una open NomeCursore
interrogazione in modo globale (tutte Utilizzo dei risultati (una ennupla alla volta)
fetch NomeCursore into ListaVariabili
insieme o a blocchi – è il DBMS che Disabilitazione del cursore
sceglie la strategia efficiente ) close cursor NomeCursore
• trasmette le ennuple al programma Accesso alla ennupla corrente (di un cursore su singola
relazione a fini di aggiornamento)
una alla volta current of NomeCursore
nella clausola where

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 19 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 20


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

write('nome della citta''?'); void VisualizzaStipendiDipart(char NomeDip[])


readln(citta); {
EXEC SQL DECLARE P CURSOR FOR char Nome[20], Cognome[20];
SELECT NOME, REDDITO long int Stipendio;
FROM PERSONE $ declare ImpDip cursor for
WHERE CITTA = :citta ; select Nome, Cognome, Stipendio
EXEC SQL OPEN P ; from Impiegato
where Dipart = :NomeDip;
EXEC SQL FETCH P INTO :nome, :reddito ; $ open ImpDip;
while SQLCODE = 0 $ fetch ImpDip into :Nome, :Cognome, :Stipendio;
do begin printf("Dipartimento %s\n",NomeDip );
write('nome della persona:', nome, 'aumento?'); while (sqlcode == 0)
readln(aumento); {
EXEC SQL UPDATE PERSONE printf("Nome e cognome dell'impiegato: %s
SET REDDITO = REDDITO + :aumento %s",Nome,Cognome);
WHERE CURRENT OF P printf("Attuale stipendio: %d\n",Stipendio);
EXEC SQL FETCH P INTO :nome, :reddito $ fetch ImpDip into :Nome, :Cognome,
:Stipendio;
end;
}
EXEC SQL CLOSE CURSOR P $ close cursor ImpDip;
}
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 21 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 22
Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

Cursori, commenti Cursori, commenti, 2

• Per aggiornamenti e interrogazioni • I cursori possono far scendere la


“scalari” (cioè che restituiscano una programmazione ad un livello troppo
sola ennupla) il cursore non serve: basso, pregiudicando la capacità dei
DBMS di ottimizzare le interrogazioni:
select Nome, Cognome
• se “nidifichiamo” due o più cursori,
into :nomeDip,
:cognomeDip rischiamo di reimplementare il join!
from Dipendente
where Matricola = :matrDip;
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 23 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 24
Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

4
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Esercizio Output

Studenti(Matricola, Cognome, Nome) Matricola Cognome Nome


Materia Data Voto
Esami(Studente,Materia,Voto,Data)

Corsi(Codice ,Titolo) Materia Data Voto
con gli ovvî vincoli di integrità referenziale VotoMedio
Matricola Cognome Nome
Materia Data Voto
• Stampare, per ogni studente, il certificato con …
gli esami e il voto medio Materia Data Voto
VotoMedio

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 25 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 26


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

SQL dinamico SQL dinamico


• Non sempre le istruzioni SQL sono note • Le operazioni SQL possono essere:
quando si scrive il programma • eseguite immediatamente
execute immediate SQLStatement
• Allo scopo, è stata definita una tecnica
• prima “preparate”:
completamente diversa, chiamata Dynamic
prepare CommandName from SQLStatement
SQL che permette di eseguire istruzioni SQL
e poi eseguite (anche più volte):
costruite dal programma (o addirittura execute CommandName [ into TargetList ]
ricevute dal programma attraverso parametri [ using ParameterList]
o da input)
• Non è banale gestire i parametri e la struttura
dei risultati (non noti a priori)

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 27 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 28


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

Call Level Interface SQL immerso vs CLI

• Indica genericamente interfacce che • SQL immerso permette


permettono di inviare richieste a DBMS • precompilazione (e quindi efficienza)
per mezzo di parametri trasmessi a
funzioni • uso di SQL completo
• standard SQL/CLI (’95 e poi parte di • CLI
SQL:1999) • indipendente dal DBMS
• ODBC: implementazione proprietaria di • permette di accedere a più basi di
SQL/CLI dati, anche eterogenee
• JDBC: una CLI per il mondo Java
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 29 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 30
Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

5
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

JDBC I driver JDBC

• Una API (Application Programming Interface) • (A titolo di curiosità; può bastare il primo tipo)
Esistono quattro tipi di driver (chiamati, in modo molto
di Java (intuitivamente: una libreria) per anonimo, tipo 1, tipo 2, tipo 3, tipo 4):
l'accesso a basi di dati, in modo indipendente 1. Bridge JDBC-ODBC: richiama un driver ODBC, che deve
essere disponibile sul client; è comodo ma potenzialmente
dalla specifica tecnologia
inefficiente
• JDBC è una interfaccia, realizzata da classi 2. Driver nativo sul client: richiama un componente
chiamate driver: proprietario (non necessariamente Java) sul client
3. Driver puro Java con server intermedio ("middleware
• l'interfaccia è standard, mentre i driver server"): comunica via protocollo di rete con il server
contengono le specificità dei singoli DBMS intermedio, che non deve risiedere sul client
4. Driver puro Java, con connessione al DBMS: interagisce
(o di altre fonti informative)
direttamente con il DBMS

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 31 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 32


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

Un programma con JDBC


Il funzionamento di JDBC, in breve import java.sql.*;
public class PrimoJDBC {
public static void main(String[] arg){

• Caricamento del driver Connection con = null ;


try {
// Caricamento del driver
• Apertura della connessione alla base di dati Class.forName("sun.jdbc.odbc .JdbcOdbcDriver");
// Apertura della connessione
• Richiesta di esecuzione di istruzioni SQL String url = "jdbc:odbc:Corsi";
con = DriverManager.getConnection(url);
• Elaborazione dei risultati delle istruzioni SQL }
catch (Exception e){ System.exit(1); }
try {
// Esecuzione dell'interrogazione
Statement query = con.createStatement();
ResultSet result =
query.executeQuery("select * from Corsi");
// Elaborazione del risultato
while (result.next()){
String nomeCorso = result.getString("NomeCorso");
System.out.println(nomeCorso);
}
}
catch (Exception e){System.exit(1);}
}
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 33 } 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 34
Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

Preliminari dei preliminari:


Preliminari
origine dati ODBC
• L'interfaccia JDBC è contenuta nel package java.sql • Per utilizzare un driver JDBC-ODBC, la base di dati (o
altro) deve essere definita come "origine dati ODBC"
import java.sql.*; • In Windows (con YYY, avendo già definito la base di
dati xxx.yyy da collegare):
• Il driver deve essere caricato (trascuriamo i dettagli)
• Pannello di controllo
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); • Opzione "Origini dati ODBC"
• Bottone "Aggiungi" ("Add")
• Connessione: oggetto di tipo Connection che costituisce un • Nella finestra di dialogo "Crea Nuova originie dati"
collegamento attivo fra programma Java e base di dati; viene
creato da selezionare “YYY Driver" e nella successiva
• selezionare il file xxx.yyy
String url = "jdbc:odbc:Corsi"; • attribuirgli un nome (che sarà usato da ODBC e
con = DriverManager.getConnection(url);
quindi da JDBC)

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 35 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 36


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

6
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Esecuzione dell'interrogazione ed
Statement
elaborazione del risultato
Esecuzione dell'interrogazione • Un'interfaccia i cui oggetti consentono di inviare, tramite una
connessione, istruzioni SQL e di ricevere i risultati forniti
Statement query = con.createStatement(); • Un oggetto di tipo Statement viene creato con il metodo
ResultSet result = createStatement di Connection
query.executeQuery("select * from Corsi"); • I metodi dell'interfaccia Statement:
• executeUpdate per specificare aggiornamenti o istruzioni
Elaborazione del risultato DDL
• executeQuery per specificare interrogazioni e ottenere un
while (result.next()){ risultato
String nomeCorso = • execute per specificare istruzioni non note a priori
result.getString("NomeCorso"); • executeBatch per specificare sequenze di istruzioni
System.out.println(nomeCorso); • Vediamo executeQuery
}

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 37 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 38


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

ResultSet Specializzazioni di Statement


• I risultati delle interrogazioni sono forniti in oggetti di tipo • PreparedStatement premette di utilizzare codice
ResultSet (interfaccia definita in java.sql) SQL già compilato, eventualmente parametrizzato
• In sostanza, un result set è una sequenza di ennuple su cui si
rispetto alle costanti
può "navigare" (in avanti, indietro e anche con accesso diretto)
e dalla cui ennupla "corrente" si possono estrarre i valori degli • in generale più efficiente di Statement
attributi • permette di distinguere più facilmente istruzioni e
• Metodi principali: costanti (e apici nelle costanti)
• next() i metodi setXXX( , )permettono di definire i
• getXXX(posizione)
parametri
• es: getString(3); getInt(2)
• getXXX(nomeAttributo) • CallableStatement premette di utilizzare "stored
• es: getString("Cognome"); getInt("Codice") procedure", come quelle di Oracle PL/SQL o anche le
query memorizzate (e parametriche) di Access

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 39 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 40


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

import java.sql.*; import java.sql.*;


import javax.swing. JOptionPane; import javax.swing. JOptionPane;
public class SecondoJDBCprep { public class TerzoJDBCcall {
public static void main (String[] arg){ public static void main (String[] arg){
try { try {
Class.forName ("sun. jdbc.odbc .JdbcOdbcDriver"); Class.forName ("sun. jdbc.odbc .JdbcOdbcDriver");
String url = "jdbc: odbc:Corsi"; String url = "jdbc: odbc:Corsi";
Connection con = DriverManager. getConnection (url); Connection con = DriverManager. getConnection (url);
PreparedStatement pquery = con. prepareStatement ( CallableStatement pquery =
select * from Corsi where NomeCorso LIKE ?"); con. prepareCall("{call queryCorso(?)}");
String param = JOptionPane.showInputDialog( String param = JOptionPane.showInputDialog(
"Nome corso (anche parziale)?"); "Nome corso (anche parziale)?");
param = "%" + param + "%"; param = "%" + param + "%";
pquery. setString (1, param) ; pquery. setString (1, param) ;
ResultSet result = pquery .executeQuery(); ResultSet result = pquery .executeQuery();
while ( result .next()){ while ( result .next()){
String nomeCorso = String nomeCorso =
result. getString ("NomeCorso"); result .getString(" NomeCorso ");
System.out. println(nomeCorso) ; System.out. println(nomeCorso) ;
} }
} }
catch (Exception e){System.exit(1);}
finally {System.exit(0);} catch (Exception e){System.exit(1);}
finally {System.exit(0);}
} }
} }

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 41 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 42


Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

7
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Altre funzionalità Transazioni in JDBC

• Molte, fra cui • Scelta della modalità delle transazioni: un metodo


definito nell'interfaccia Connection:
• username e password setAutoCommit(boolean autoCommit)
• aggiornamento dei ResultSet • con.setAutoCommit(true)
• richiesta di metadati • (default) "autocommit": ogni operazione è una
transazione
• gestione di transazioni • con.setAutoCommit(false)
• gestione delle transazioni da programma
con.commit()
con.rollback()
• non c’è begin transaction
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 43 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 44
Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

Procedure Procedure in Oracle PL/SQL


Procedure Debit( ClientAccount char (5),Withdrawal
• SQL:1999 (come già SQL-2) permette la definizione di integer ) i s
procedure e funzioni (chiamate genericamente OldAmount integer ;
“stored procedures”) NewAmount integer ;
Threshold integer ;
• Le stored procedures sono parte dello schema begin
procedure AssignCity(:Dep char(20), :City char(20)) select Amount, Overdraft into OldAmount, Threshold
from BankAccount
update Department where AccountNo = ClientAccount
set City = :City for update o f Amount;
where Name = :Dep NewAmount : = OldAmount - WithDrawal ;
if NewAmount > Threshold
• Lo standard prevede funzionalità limitate e non è then update BankAccount
molto recepito set Amount = NewAmount
• Molti sistemi offrono estensioni molto ricche (ad else
where AccountNo = ClientAccount;

esempio Oracle PL/SQL e Sybase-Microsoft Transact insert into OverDraftExceeded


SQL) values(ClientAccount ,Withdrawal, sysdate);
end i f;
end Debit;
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 45 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 46
Basi di dati, Capitolo 5 Basi di dati, Capitolo 5

8
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Progettazione di basi di dati

• È una delle attività del processo di sviluppo


dei sistemi informativi
Atzeni, Ceri, Paraboschi, Torlone
• va quindi inquadrata in un contesto più
Basi di dati generale:
McGraw -Hill, 1996-2002
• il ciclo di vita dei sistemi informativi:
Capitolo 6: • Insieme e sequenzializzazione delle attività
Progettazione di basi di dati: svolte da analisti, progettisti, utenti, nello
sviluppo e nell’uso dei sistemi informativi
Metodologie e modelli
• attività iterativa, quindi ciclo
17/10/2002
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 2
Basi di dati, Capitolo 6

Studio di fattibilità Fasi (tecniche) del ciclo di vita

Raccolta e analisi • Studio di fattibilità: definizione costi e priorità


dei requisiti
• Raccolta e analisi dei requisiti: studio delle
Progettazione proprietà del sistema
• Progettazione: di dati e funzioni
Realizzazione • Realizzazione

Validazione e • Validazione e collaudo: sperimenazione


collaudo • Funzionamento: il sistema diventa operativo
Funzionamento

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 3 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 4


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

La progettazione di un sistema informativo riguarda due Studio di fattibilità


aspetti:
Raccolta e analisi
dei requisiti
4progettazione dei dati Progettazione
dei dati
progettazione delle applicazioni
Realizzazione
Ma:
Validazione e
collaudo
4i dati hanno un ruolo centrale
• i dati sono più stabili Funzionamento

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 5 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 6


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

1
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Studio di fattibilità

• Per garantire prodotti di buona qualità è Raccolta e analisi


dei requisiti
opportuno seguire una
Progettazione
• metodologia di progetto, con:
dei dati
• articolazione delle attività in fasi
• criteri di scelta Realizzazione

• modelli di rappresentazione Validazione e


collaudo
• generalità e facilità d'uso
Funzionamento

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 7 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 8


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Requisiti della base di dati

Progettazione “CHE COSA”: I prodotti della varie fasi sono


concettuale analisi
Schema concettuale schemi di alcuni modelli di dati:
Progettazione • Schema concettuale
logica
• Schema logico
Schema logico
• Schema fisico
“COME”: Progettazione
progettazione fisica

Schema fisico
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 9 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 10
Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Modello dei dati Schemi e istanze

• insieme di costrutti utilizzati per organizzare i • In ogni base di dati esistono:


dati di interesse e descriverne la dinamica • lo schema, sostanzialmente invariante nel tempo,
• componente fondamentale: meccanismi di che ne descrive la struttura (aspetto intensionale)
strutturazione (o costruttori di tipo) • nel modello relazionale, le intestazioni delle
• come nei linguaggi di programmazione tabelle
esistono meccanismi che permettono di • l’istanza, i valori attuali, che possono cambiare
definire nuovi tipi, così ogni modello dei dati anche molto rapidamente (aspetto estensionale)
prevede alcuni costruttori • nel modello relazionale, il “corpo” di ciascuna
tabella
• ad esempio, il modello relazionale prevede il
costruttore relazione , che permette di definire
insiemi di record omogenei
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 11 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 12
Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

2
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Due tipi (principali) di modelli Modelli concettuali, perché?

• modelli logici: utilizzati nei DBMS esistenti per • Proviamo a modellare una applicazione
l’organizzazione dei dati definendo direttamente lo schema logico della
• utilizzati dai programmi
base di dati:
• indipendenti dalle strutture fisiche
esempi: relazionale, reticolare, gerarchico, a oggetti • da dove cominciamo?
• modelli concettuali: permettono di rappresentare i • rischiamo di perderci subito nei dettagli
dati in modo indipendente da ogni sistema
• dobbiamo pensare subito a come
• cercano di descrivere i concetti del mondo reale
• sono utilizzati nelle fasi preliminari di correlare le varie tabelle (chiavi etc.)
progettazione • i modelli logici sono rigidi
il più noto è il modello Entity-Relationship

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 13 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 14


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Modelli concettuali, perché? Architettura (semplificata) di un DBMS


utente
• servono per ragionare sulla realtà di
interesse, indipendentemente dagli aspetti
realizzativi Schema logico
• permettono di rappresentare le classi di dati
di interesse e le loro correlazioni
• prevedono efficaci rappresentazioni grafiche Schema interno
(utili anche per documentazione e
comunicazione)
BD

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 15 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 16


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Progettazione Modello Entity-Relationship


concettuale (Entità-Relazione)

• Il più diffuso modello concettuale

Progettazione • Ne esistono molte versioni,


logica • (più o meno) diverse l’una dall’altra

Progettazione
fisica
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 17 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 18
Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

3
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

I costrutti del modello E-R Entità

• Entità • Classe di oggetti (fatti, persone, cose) della


• Relationship applicazione di interesse con proprietà
comuni e con esistenza “autonoma”
• Attributo
• Esempi:
• Identificatore
• impiegato, città, conto corrente, ordine,
• Generalizzazione
fattura
• ….

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 19 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 20


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Relationship Uno schema E-R, graficamente


• Legame logico fra due o più entità, rilevante
nell’applicazione di interesse
• Esempi:
• Residenza (fra persona e città)
Studente Esame Corso
• Esame (fra studente e corso)

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 21 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 22


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Entità Entità: schema e istanza

• Classe di oggetti (fatti, persone, cose) della • Entità:


applicazione di interesse con proprietà • classe di oggetti, persone, … "omogenei"
comuni e con esistenza “autonoma”
• Occorrenza (o istanza) di entità:
• Esempi:
• elemento della classe (l'oggetto, la
• impiegato, città, conto corrente, ordine, persona, …, non i dati)
fattura

• nello schema concettuale rappresentiamo le


entità, non le singole istanze (“astrazione”)

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 23 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 24


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

4
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Rappresentazione grafica di entità Entità, commenti

• Ogni entità ha un nome che la identifica


univocamente nello schema:
Impiegato Dipartimento • nomi espressivi
• opportune convenzioni
• singolare

Città Vendita

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 25 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 26


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Rappresentazione grafica
Relationship di relationship

• Legame logico fra due o più entità, rilevante


nell’applicazione di interesse
• Esempi:
Studente Esame Corso
• Residenza (fra persona e città)
• Esame (fra studente e corso)

• Chiamata anche:
Impiegato Residenza Città
• relazione , correlazione , associazione

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 27 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 28


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Relationship, commenti Esempi di occorrenze

• Ogni relationship ha un nome che la identifica E1


univocamente nello schema:
• nomi espressivi S1 E2
C1
• opportune convenzioni E3
S2
• singolare S3 C2
• sostantivi invece che verbi (se
possibile) S4 E4 C3

Studente Corso
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 29 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 30
Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

5
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Relationship, occorrenze Relationship corrette?

• Una occorrenza di una relationship binaria è


coppia di occorrenze di entità, una per
ciascuna entità coinvolta
Studente Esame Corso
• Una occorrenza di una relationship n-aria è
una n-upla di occorrenze di entità, una per
ciascuna entità coinvolta
• Nell'ambito di una relationship non ci
possono essere occorrenze (coppie, ennuple) Paziente Visita Medico
ripetute

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 31 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 32


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Due relationship sulle stesse entità Relationship n-aria

Sede di
lavoro Fornitore Fornitura Prodotto

Impiegato Residenza Città


Dipartimento

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 33 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 34


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Relationship ricorsiva:
Relationship ricorsiva con “ruoli”
coinvolge “due volte” la stessa entità

Successione
Conoscenza

Sovrano
Persona Successore Predecessore

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 35 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 36


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

6
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Relationship ternaria ricorsiva Attributo

• Proprietà elementare di un’entità o di una


Superficie
relationship, di interesse ai fini
dell’applicazione
• Associa ad ogni occorrenza di entità o
Migliore Peggiore relationship un valore appartenente a un
Confronto
insieme detto dominio dell’attributo

Tennista

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 37 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 38


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Attributi, rappresentazione grafica Attributi composti

• Raggruppano attributi di una medesima entità


Cognome Nome Data Voto Titolo o relationship che presentano affinità nel loro
significato o uso
• Esempio:
Studente Esame Corso • Via, Numero civico e CAP formano un
Indirizzo

Matricola Codice

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 39 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 40


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Cognome Telefono
Rappresentazione grafica Direzione

Impiegato Dipartimento
Cognome Afferenza
Codice Nome
Partecipazione Composizione
Impiegato Età Via Data

Indirizzo Numero
Progetto Sede
CAP Via
Indirizzo Città
Budget Nome
CAP
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 41 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 42
Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

7
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Altri costrutti del modello E-R Cardinalità di relationship

• Cardinalità • Coppia di valori associati a ogni entità che


• di relationship partecipa a una relationship

• di attributo
• specificano il numero minimo e massimo di
• Identificatore occorrenze delle relationship cui ciascuna
• interno occorrenza di una entità può partecipare
• esterno
• Generalizzazione

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 43 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 44


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Esempio di cardinalità
• per semplicità usiamo solo tre simboli:
• 0 e 1 per la cardinalità minima:
• 0 = “partecipazione opzionale”
(1,5) (0,50) • 1 = “partecipazione obbligatoria”
Impiegato Assegnamento Incarico • 1 e “N” per la massima:
• “N” non pone alcun limite

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 45 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 46


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Occorrenze di Residenza Cardinalità di Residenza

R1
S1 C1
(1,1) (0,N)
S2 C2
S3 R2 Studente Residenza Città

S4
R3 C3

C4
R4
Studente Città
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 47 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 48
Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

8
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Tipi di relationship Relationship “molti a molti”


(0,N) (0,N)
• Con riferimento alle cardinalità massime ,
Studente Esame Corso
abbiamo relationship:
• uno a uno
• uno a molti (0,N) (1,N)
• molti a molti Montagna Scalata Alpinista

(1,N) (1,N)
Macchinista Abilitazione Locomotore

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 49 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 50


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Due avvertenze Relationship “uno a molti”


(0,1) (0,N)
• Attenzione al "verso" nelle relationship uno a
Persona Impiego Azienda
molti
• le relationship obbligatorie -obbligatorie sono
molto rare (1,1) (0,N)
Cinema Ubicazione Località

(1,1) (1,N)
Comune Ubicazione Provincia

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 51 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 52


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Relationship “uno a uno” Cardinalità di attributi


(0,1) (0,1)
Professore Titolarità Cattedra • E’ possibile associare delle cardinalità anche
agli attributi, con due scopi:

(1,1) (0,1) • indicare opzionalità ("informazione


Professore incompleta")
Titolarità Cattedra
di ruolo • indicare attributi multivalore

(1,1) (1,1)
Professore Cattedra
di ruolo Titolarità coperta

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 53 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 54


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

9
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Rappresentazione grafica Identificatore di una entità

• “strumento” per l’identificazione univoca


delle occorrenze di un’entità
(0,N) Telefono
• costituito da:
• attributi dell’entità
Impiegato Nome • identificatore interno
• (attributi +) entità esterne attraverso
(0,1) Numero patente relationship
• identificatore esterno

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 55 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 56


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Identificatori interni Identificatore esterno


Targa
Cognome Matricola Nome
Automobile Modello
(1,1) (0,N)
Data Nascita Studente Università
Iscrizione

Persona Cognome

Anno di corso Indirizzo


Nome
Indirizzo
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 57 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 58
Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Cognome (0,1) (1,1) Telefono


Alcune osservazioni Direzione (1,N)
Impiegato Dipartimento
• ogni entità deve possedere almeno un (0,1) (0,N)
identificatore, ma può averne in generale più Afferenza
Codice (0,N) (1,1) Nome
di uno
(0,1)
• una identificazione esterna è possibile solo Partecipazione Composizione
attraverso una relationship a cui l’entità da Data
(1,N)
identificare partecipa con cardinalità (1,1) (1,N)

• perché non parliamo degli identificatori delle Sede


relationship? Progetto
Via
Indirizzo Città
Budget Nome
CAP
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 59 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 60
Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

10
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Generalizzazione Rappresentazione grafica

• mette in relazione una o più entità E1, E2, ...,


En con una entità E, che le comprende come
Dipendente
casi particolari

• E è generalizzazione di E1, E2, ..., En


• E1, E2, ..., En sono specializzazioni (o
sottotipi) di E
Impiegato Funzionario Dirigente

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 61 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 62


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Proprietà delle generalizzazioni Città

(0,N)
Se E (genitore) è generalizzazione di E1, E2, Codice
Nascita
..., En (figlie): fiscale
(1,1)
• ogni proprietà di E è significativa per E1,
E2, ..., En Persona Nome
• ogni occorrenza di E1, E2, ..., En è
Età
occorrenza anche di E
Stipendio

Lavoratore Studente

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 63 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 64


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Ereditarietà Tipi di generalizzazioni

• totale se ogni occorrenza dell'entità genitore


• tutte le proprietà (attributi, relationship, altre è occorrenza di almeno una delle entità figlie,
generalizzazioni) dell’entità genitore vengono altrimenti è parziale
ereditate dalle entità figlie e non • esclusiva se ogni occorrenza dell'entità
rappresentate esplicitamente genitore è occorrenza di al più una delle entità
figlie, altrimenti è sovrapposta

• consideriamo (senza perdita di generalità)


solo generalizzazioni esclusive e
distinguiamo fra totali e parziali
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 65 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 66
Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

11
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Persona Persona

Disoccupato Lavoratore Uomo Donna

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 67 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 68


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Altre proprietà Esercizio

• possono esistere gerarchie a più livelli e • Le persone hanno CF, cognome ed età; gli
multiple generalizzazioni allo stesso livello uomini anche la posizione militare; gli
impiegati hanno lo stipendio e possono
• un'entità può essere inclusa in più gerarchie,
essere segretari, direttori o progettisti (un
come genitore e/o come figlia progettista può essere anche responsabile
• se una generalizzazione ha solo un’entità di progetto); gli studenti (che non possono
figlia si parla di sottoinsieme essere impiegati) un numero di matricola;
• alcune configurazioni non hanno senso esistono persone che non sono né
impiegati né studenti (ma i dettagli non ci
• il genitore di una generalizzazione totale può interessano)
non avere identificatore, purché …

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 69 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 70


Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

CF Età
Persona Documentazione associata agli schemi
Cognome
Stipendio Matr. concettuali

Uomo Donna Impiegato Studente • dizionario dei dati


• entità
Militare
• relationship
Segretario Direttore Progettista • vincoli non esprimibili

Responsabile
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 71 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 72
Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

12
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Cognome (0,1) (1,1) Telefono


Direzione (1,N) Dizionario dei dati (entità)
Impiegato Dipartimento
(0,1) (0,N)
Entità Descrizione Attributi Identificatore
Afferenza Nome
Codice (0,N) (1,1) Impiegato Dipendente Codice, Codice
(0,1) dell'azienda Cognome,
Partecipazione Composizione Stipendio
Data Progetto Progetti Nome, Nome
(1,N)
(1,N) aziendali Budget
Dipartimento Struttura Nome, Nome,
Progetto Sede aziendale Telefono Sede
Via Sede Sede Città, Città
dell'azienda Indirizzo
Indirizzo Città
Budget Nome
CAP
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 73 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 74
Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

Dizionario dei dati (relationship) Vincoli non esprimibili

Vincoli di integrità sui dati


Relazioni Descrizione Componenti Attributi (1) Il direttore di un dipartimento deve a afferire a tale
Direzione Direzione di un Impiegato, dipartimento
dipartimento Dipartimento (2) Un impiegato non deve avere uno stipendio
Afferenza Afferenza a un Impiegato, Data maggiore del direttore del dipartimento al quale
dipartimento Dipartimento afferisce
Partecipazione Partecipazione Impiegato, (3) Un dipartimento con sede a Roma deve essere
a un progetto Progetto diretto da un impiegato con più di dieci anni di
Composizione Composizione Dipartimento, anzianità
dell'azienda Sede (4) Un impiegato che non afferisce a nessun
dipartimento non deve partecipare a nessun un
progetto
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 75 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 76
Basi di dati, Capitolo 6 Basi di dati, Capitolo 6

13
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Requisiti della base di dati

Progettazione
concettuale
Atzeni, Ceri, Paraboschi, Torlone Schema concettuale
Basi di dati
McGraw -Hill, 1996-2002 Progettazione
logica
Capitolo 7:
Schema logico
Progettazione concettuale
Progettazione
17/10/2002 fisica

Schema fisico
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 2
Basi di dati, Capitolo 7

Analisi dei requisiti e progettazione


Requisiti
concettuale ("Analisi dei dati")
• Possibili fonti:
• Comprende attività (interconnesse) di
• utenti, attraverso:
• acquisizione dei requisiti
• interviste
• analisi dei requisiti
• documentazione apposita
• costruzione dello schema concettuale
• documentazione esistente :
• costruzione del glossario
• normative (leggi, regolamenti di settore)
• regolamenti interni, procedure aziendali
• realizzazioni preesistenti
• modulistica

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 3 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 4


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Acquisizione e analisi dei requisiti Acquisizione per interviste

• utenti diversi possono fornire informazioni


• Il reperimento dei requisiti è un'attività difficile diverse
e non standardizzabile
• utenti a livello più alto hanno spesso una
visione più ampia ma meno dettagliata
• l'attività di analisi inizia con i primi requisiti • le interviste portano spesso ad una
raccolti e spesso indirizza verso altre acquisizione dei requisiti “per raffinamenti
acquisizioni successivi”

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 5 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 6


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

1
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Interazione con gli utenti Requisiti: documentazione descrittiva

• Spunti: • Regole generali:


• effettuare spesso verifiche di • scegliere il corretto livello di astrazione
comprensione e coerenza • standardizzare la struttura delle frasi
• verificare anche per mezzo di esempi • suddividere le frasi articolate
(generali e relativi a casi limite)
• separare le frasi sui dati da quelle sulle
• richiedere definizioni e classificazioni funzioni
• far evidenziare gli aspetti essenziali
rispetto a quelli marginali

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 7 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 8


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Requisiti: organizzazione di termini e


Requisiti, un esempio
concetti
• Regole generali
• costruire un glossario dei termini Base di dati bibliografica
• individuare omonimi e sinonimi e unificare Si vogliono organizzare i dati di interesse
i termini per automatizzare la gestione dei
• rendere esplicito il riferimento fra termini riferimenti bibliografici
• riorganizzare le frasi per concetti

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 9 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 10


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Base di dati bibliografica


Base di dati bibliografica Si vogliono organizzare i dati di interesse per
Si vogliono organizzare i dati di interesse per automatizzare la gestione dei riferimenti
automatizzare la gestione dei riferimenti bibliografici, con tutte le informazioni da riportarsi
bibliografici, con tutte le informazioni da in una bibliografia. Le pubblicazioni sono di due
riportarsi in una bibliografia. tipi, monografie (per le quali interessano editore,
Per ogni pubblicazione deve esistere un data e luogo di pubblicazione) e articoli su rivista
codice identificante costituito da sette (con nome della rivista, volume, numero, pagine e
caratteri, indicanti le iniziali degli autori, l'anno anno di pubblicazione); per entrambi i tipi si
di pubblicazione e un carattere aggiuntivo per debbono ovviamente riportare i nomi degli autori.
la discriminazione delle collisioni. Per ogni pubblicazione deve esistere un codice
identificante .....
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 11 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 12
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

2
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Un esempio più articolato


Società di formazione (2)
Società di formazione (1) Rappresentiamo anche i seminari che stanno
Si vuole realizzare una base di dati per una attualmente frequentando e, per ogni giorno, i
società che eroga corsi, di cui vogliamo luoghi e le ore dove sono tenute le lezioni. I corsi
rappresentare i dati dei partecipanti ai corsi e dei hanno un codice, un titolo e possono avere varie
docenti. Per gli studenti (circa 5000), identificati edizioni con date di inizio e fine e numero di
da un codice, si vuole memorizzare il codice partecipanti. Se gli studenti sono liberi
fiscale, il cognome, l'età, il sesso, il luogo di professionisti, vogliamo conoscere l'area di
nascita, il nome dei loro attuali datori di lavoro, i interesse e, se lo possiedono, il titolo. Per quelli
posti dove hanno lavorato in precedenza insieme che lavorano alle dipendenze di altri, vogliamo
al periodo, l'indirizzo e il numero di telefono, i conoscere invece il loro livello e la posizione
corsi che hanno frequentato (i corsi sono in tutto ricoperta.
circa 200) e il giudizio finale.
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 13 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 14
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Glossario dei termini

Società di formazione (3) Termine Descrizione Sinonimi Collegamenti


Per gli insegnanti (circa 300), rappresentiamo il Partecipante Persona che Studente Corso,
cognome, l'età, il posto dove sono nati, il nome partecipa ai corsi Società
del corso che insegnano, quelli che hanno Docente Docente dei corsi. Insegnante Corso
insegnato nel passato e quelli che possono Può essere esterno
insegnare. Rappresentiamo anche tutti i loro Corso Corso organizzato Seminario Docente
recapiti telefonici. I docenti possono essere dalla società. Può
dipendenti interni della società o collaboratori avere più edizioni.
esterni. Società Ente presso cui i Posti Partecipante
partecipanti lavorano
o hanno lavorato

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 15 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 16


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Strutturazione dei requisiti Frasi di carattere generale


Si vuole realizzare una base di dati per
in gruppi di frasi omogenee una società che eroga corsi, di cui
vogliamo rappresentare i dati dei
partecipanti ai corsi e dei docenti.

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 17 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 18


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

3
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Frasi relative ai datori di lavoro


Relativamente ai datori di lavoro presenti e
Frasi relative ai partecipanti passati dei partecipanti, rappresentiamo il
Per i partecipanti (circa 5000), identificati da nome, l'indirizzo e il numero di telefono.
un codice, rappresentiamo il codice fiscale,
il cognome, l'età, il sesso, la città di nascita,
i nomi dei loro attuali datori di lavoro e di Frasi relative ai corsi
quelli precedenti (insieme alle date di inizio Per i corsi (circa 200), rappresentiamo il titolo
e fine rapporto), le edizioni dei corsi che e il codice, le varie edizioni con date di inizio e
stanno attualmente frequentando e quelli fine e, per ogni edizione, rappresentiamo il
che hanno frequentato nel passato, con la numero di partecipanti e il giorno della
relativa votazione finale in decimi. settimana, le aule e le ore dove sono tenute le
lezioni.
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 19 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 20
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Frasi relative ai docenti


Frasi relative a tipi specifici di partecipanti Per i docenti (circa 300), rappresentiamo il
Per i partecipanti che sono liberi cognome, l'età, la città di nascita, tutti i
professionisti, rappresentiamo l'area di numeri di telefono, il titolo del corso che
interesse e, se lo possiedono, il titolo insegnano, di quelli che hanno insegnato
professionale. Per i partecipanti che sono nel passato e di quelli che possono
dipendenti, rappresentiamo invece il loro insegnare. I docenti possono essere
livello e la posizione ricoperta. dipendenti interni della società di
formazione o collaboratori esterni.

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 21 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 22


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

• se ha proprietà significative e descrive


oggetti con esistenza autonoma
Quale costrutto E-R va utilizzato per
rappresentare un concetto presente nelle • entità
specifiche? • se è semplice e non ha proprietà
• attributo
• se correla due o più concetti
• Bisogna basarsi sulle definizioni dei • relazione
costrutti del modello E-R
• se è caso particolare di un altro
• generalizzazione

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 23 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 24


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

4
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Strategie di progetto Strategia top-down

• top-down
• bottom -up
• inside-out

Schema
Schema
Schema
Schema finale
intermedio
iniziale
Specifiche
intermedio

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 25 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 26


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Primitive di raffinamento Strategia bottom-up


top-down
Cognome Età Specifiche
Schema 1,1 1,1 Schema 2,1
Specifiche 2,1
Persona

SpecificheSpecifiche
1 Specifiche 2
Schema finale
Studente Impiegato
Persona
Esame
Esame Corso

Specifiche1,2
Schema 1,2 Specifiche
Schema 2,2 2,2
Uomo Donna
Stipendio

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 27 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 28


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Primitive di raffinamento Bottom-up

Persona
Strategia inside-out:
Studente
Specifica su Corso un esempio
Impiegato
Esame
impiegato

Uomo Donna

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 29 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 30


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

5
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Cognome (0,1) (1,1) Telefono


Direzione In pratica
(1,N)
Impiegato Dipartimento • si procede di solito con una strategia ibrida
(0,1) (1,N)
Afferenza (mista):
Codice (0,N) (1,1) Nome
• si individuano i concetti principali e si
(0,1) Composizione realizza uno schema scheletro
Partecipazione
Data
(1,N) • sulla base di questo si può decomporre
(1,N)
• poi si raffina, si espande, si integra

Progetto Sede
Via
Indirizzo Città
Budget Nome
CAP
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 31 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 32
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Qualità di uno schema concettuale


Definizione dello schema scheletro
• correttezza

• Si individuano i concetti più importanti, ad • completezza


esempio perché più citati o perché indicati • leggibilità
esplicitamente come cruciali e li si organizza in • minimalità
un semplice schema concettuale

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 33 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 34


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Un esempio di progettazione
concettuale Frasi di carattere generale
Si vuole realizzare una base di dati per
una società che eroga corsi, di cui
vogliamo rappresentare i dati dei
• Società di formazione partecipanti ai corsi e dei docenti.

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 35 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 36


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

6
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Schema scheletro

Frasi relative ai partecipanti


Corso Per i partecipanti (circa 5000), identificati da
un codice, rappresentiamo il codice fiscale,
il cognome, l'età, il sesso, la città di nascita,
Partecipazione Docenza i nomi dei loro attuali datori di lavoro e di
quelli precedenti (insieme alle date di inizio
e fine rapporto), le edizioni dei corsi che
stanno attualmente frequentando e quelli
Partecipante Docente che hanno frequentato nel passato, con la
relativa votazione finale in decimi.

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 37 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 38


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Frasi relative ai datori di lavoro Datore Nome


Relativamente ai datori di lavoro presenti e
(0,N) (0,N) …..
passati dei partecipanti, rappresentiamo il Impiego Impiego
nome, l'indirizzo e il numero di telefono. corrente passato
(1,1) (0,N) CF

Frasi relative a tipi specifici di partecipanti Partecipante Codice


Per i partecipanti che sono liberi
professionisti, rappresentiamo l'area di …..
interesse e, se lo possiedono, il titolo
professionale. Per i partecipanti che sono Dipendente Professionista
dipendenti, rappresentiamo invece il loro
livello e la posizione ricoperta. Livello Posizione Titolo prof. Area
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 39 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 40
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Data fine
Data inizio N.Part.

Frasi relative ai corsi Edizione


(1,1) corso (1,N)
Per i corsi (circa 200), rappresentiamo il titolo
e il codice, le varie edizioni con date di inizio e
fine e, per ogni edizione, rappresentiamo il Tipologia Composizione
numero di partecipanti e il giorno della
(0,N) (1,1)
settimana, le aule e le ore dove sono tenute le
lezioni. Corso Lezione

Titolo Codice Orario Aula Giorno


17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 41 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 42
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

7
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Telefono
(1,N) CF
Frasi relative ai docenti
Per i docenti (circa 300), rappresentiamo il Docente Cognome
cognome, l'età, la città di nascita, tutti i Città nascita
numeri di telefono, il titolo del corso che Età
insegnano, di quelli che hanno insegnato
nel passato e di quelli che possono
insegnare. I docenti possono essere
dipendenti interni della società di Collaboratore Interno
formazione o collaboratori esterni.

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 43 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 44


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Integrazione

(0,N) (0,N)
partecipazione
Corso passata

Partecipazione Docenza (0,1) (0,N)


partecipazione Edizione
Partecipante Partecipazione Corso
corrente corso

Partecipante Docente

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 45 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 46


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

(0,1) (0,N) Una metodologia


Docenza
passata • Analisi dei requisiti
Edizione • Analizzare i requisiti ed eliminare le ambiguità
Corso Docenza Docente • Costruire un glossario dei termini
corso
(0,1) (0,1) • Raggruppare i requisiti in insiemi omogenei
Data (1,1) Docenza • Passo base
inizio corrente • Definire uno schema scheletro con i concetti più rilevanti
Tipologia • Passo iterativo
(da ripetere finché non si è soddisfatti)
(0,N) (1,N) • Raffinare i concetti presenti sulla base delle loro specifiche
• Aggiungere concetti per descrivere specifiche non descritte
Corso Abilitazione • Analisi di qualità
(ripetuta e distribuita)
(1,N)
• Verificare le qualità dello schema e modificarlo
Titolo Codice
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 47 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 48
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

8
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Una metodologia con integrazione Un'altra metodologia con integrazione


• Analisi dei requisiti • Analisi dei requisiti
• Passo base • Decomposizione dei requisiti
• Decomposizione • individuazione di settoro di interesse e suddivisione dei
• decomporre i requisiti con riferimento ai concetti nello requisiti (o addirittura acquisizione separata)
schema scheletro • Per ciascun settore
• Passo iterativo, per ogni sottoschema • Passo base
• Integrazione • Passo iterativo
• integrare i vari sottoschemi in uno schema complessivo, • Integrazione
facendo riferimento allo schema scheletro • Analisi di qualità
• Analisi di qualità

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 49 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 50


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

9
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Requisiti della base di dati

Progettazione
concettuale
Atzeni, Ceri, Paraboschi, Torlone Schema concettuale
Basi di dati
McGraw -Hill, 1996-2002 Progettazione
logica
Capitolo 8:
Schema logico
Progettazione logica
Progettazione
17/10/2002 fisica

Schema fisico
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 2
Basi di dati, Capitolo 7

Dati di ingresso e uscita


Obiettivo della
progettazione logica • Ingresso:
• schema concettuale
• informazioni sul carico applicativo
• "tradurre" lo schema concettuale in uno • modello logico
schema logico che rappresenti gli
• Uscita:
stessi dati in maniera corretta ed
• schema logico
efficiente • documentazione associata

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 3 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 4


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Carico Schema E-R


applicativo
Non si tratta di una pura e semplice
traduzione Ristrutturazione dello
schema E- R

• alcuni aspetti non sono direttamente Modello Schema E-R


logico ristrutturato
rappresentabili
• è necessario considerare le prestazioni Traduzione nel
modello logico

Schema
logico
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 5 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 6
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

1
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Ristrutturazione schema E-R

• Motivazioni: Per ottimizzare il risultato abbiamo bisogno di


analizzare le prestazioni a questo livello
• semplificare la traduzione
• "ottimizzare" le prestazioni
• Osservazione:
• uno schema E-R ristrutturato non è (più) • Ma:
uno schema concettuale nel senso stretto • le prestazioni non sono valutabili con
del termine precisione su uno schema
concettuale!

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 7 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 8


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Cognome (0,1) (1,1) Telefono


Consideriamo Direzione (1,N)
“indicatori” dei parametri che regolano le
prestazioni Impiegato Dipartimento
(0,1) (1,N)
Afferenza Nome
Codice (0,N) (1,1)
• spazio: numero di occorrenze previste (0,1)
Partecipazione Composizione
• tempo: numero di occorrenze (di entità Data
(1,N)
e relationship) visitate durante (1,N)
un’operazione
Progetto Sede
Via
Indirizzo Città
Budget Nome
CAP
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 9 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 10
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Tavola dei volumi Esempio di valutazione di costo

• Operazione:
Concetto Tipo Volume
• trova tutti i dati di un impiegato, del
Sede E 10
dipartimento nel quale lavora e dei
Dipartimento E 80
progetti ai quali partecipa
Impiegato E 2000
Progetto E 500
Composizione R 80 • Si costruisce una tavola degli accessi basata
Afferenza R 1900 su uno schema di navigazione
Direzione R 80
Partecipazione R 6000

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 11 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 12


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

2
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Cognome Telefono
Tavola degli accessi
(1,N)
Impiegato Dipartimento
(0,1) (1,N)
Codice Afferenza Nome Concetto Costrutto Accessi Tipo
(0,N) (1,1)
Impiegato Entità 1 L
(0,1)
Partecipazione Afferenza Relazione 1 L
Data Dipartimento Entità 1 L
(1,N) Partecipazione Relazione 3 L
Progetto Entità 3 L
Progetto

Budget Nome
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 13 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 14
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Attività della ristrutturazione Analisi delle ridondanze

• Una ridondanza in uno schema E-R è una


• Analisi delle ridondanze informazione significativa ma derivabile da
• Eliminazione delle generalizzazioni altre

• Partizionamento/accorpamento di
• in questa fase si decide se eliminare le
entità e relationship
ridondanze eventualmente presenti o
• Scelta degli identificatori primari mantenerle

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 15 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 16


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Ridondanze Forme di ridondanza in uno schema E-R

• Vantaggi
• semplificazione delle interrogazioni • attributi derivabili:
• Svantaggi • da altri attributi della stessa entità (o
• appesantimento degli aggiornamenti relazione)
• maggiore occupazione di spazio • da attributi di altre entità (o relazioni)
• relazioni derivabili dalla composizione di altre
relazioni in presenza di cicli

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 17 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 18


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

3
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Attributo derivabile Attributo derivabile da


altra entità

Importo netto Importo totale Prezzo

(1,N) (1,N)
Impiegato IVA
Acquisto Composizione Prodotto

Importo lordo

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 19 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 20


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Analisi di una ridondanza


Studente

(0,N)
Frequenza Numero abitanti
(1,N) (0,N)
Ridondanza dovuta a
ciclo Corso Docenza
Persona Residenza Città
(1,1) (1,N)
Insegnamento
(1,1)

Professore
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 21 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 22
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Concetto Tipo Volume Presenza di ridondanza


Città E 200
Operazione 1
Persona E 1000000
Residenza R 1000000 Concetto Costrutto Accessi Tipo
Persona Entità 1 S
• Operazione 1: memorizza una nuova persona Residenza Relazione 1 S
Città Entità 1 L
con la relativa città di residenza (500 volte al
Città Entità 1 S
giorno)
• Operazione 2: stampa tutti i dati di una città Operazione 2
(incluso il numero di abitanti) (2 volte al Concetto Costrutto Accessi Tipo
giorno) Città Entità 1 L

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 23 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 24


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

4
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Assenza di ridondanza Presenza di ridondanza

Operazione 1 • Costi:
Concetto Costrutto Accessi Tipo • Operazione 1: 1500 accessi in scrittura e
Persona Entità 1 S 500 accessi in lettura al giorno
Residenza Relazione 1 S • Operazione 2: trascurabile.
• Contiamo doppi gli accessi in scrittura
Operazione 2 • Totale di 3500 accessi al giorno
Concetto Costrutto Accessi Tipo
Città Entità 1 L
Residenza Relazione 5000 L

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 25 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 26


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Assenza di ridondanza Attività della ristrutturazione

• Costi:
• Operazione 1: 1000 accessi in scrittura • Analisi delle ridondanze
• Operazione 2: 10000 accessi in lettura al • Eliminazione delle generalizzazioni
giorno
• Partizionamento/accorpamento di
• Contiamo doppi gli accessi in scrittura entità e relazioni
• Totale di 12000 accessi al giorno
• Scelta degli identificatori primari

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 27 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 28


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Eliminazione delle gerarchie Tre possibilità

• il modello relazionale non può rappresentare 1. accorpamento delle figlie della


direttamente le generalizzazioni generalizzazione nel genitore
• entità e relazioni sono invece direttamente
2. accorpamento del genitore della
rappresentabili
generalizzazione nelle figlie
• si eliminano perciò le gerarchie, sostituendole
3. sostituzione della generalizzazione con
con entità e relazioni relazioni

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 29 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 30


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

5
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

A01 A02 A01 A02


(0,1)
A11
E0 R1 E3 E0 R1 E3
A21
(0,1)
TIPO

(0,..)
E1 E2 R2 R2

A11 A21
E4 E4

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 31 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 32


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

A01 A02
R11

E0 R1 E3 R12 E3

E1 E2 R2 E1 E2 R2

A11 A21 A01 A11 A02 A01 A21 A02


E4 E4

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 33 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 34


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

A01 A02 A01 A02

E0 R1 E3 E0 R1 E3

(0,1) (0,1)
RG1 RG2
(1,1) (1,1)

E1 E2 R2 E1 E2 R2

A11 A21 A11 A21


E4 E4

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 35 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 36


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

6
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

1. conviene se gli accessi al padre e alle figlie


sono contestuali
• la scelta fra le alternative si può fare con
metodo simile a quello visto per l'analisi delle 2. conviene se gli accessi alle figlie sono
distinti
ridondanze (però non basato solo sul numero
degli accessi) 3. conviene se gli accessi alle entità figlie sono
separati dagli accessi al padre

• è possibile seguire alcune semplici regole • sono anche possibili soluzioni “ibride”,
generali soprattutto in gerarchie a più livelli

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 37 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 38


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

A01 A02 A01 A02


(0,1)
E0 R1 E3 A11 E0 R1 E3

(0,1)
TIPO RG2
(1,1)

E1 E2 R2 E2 R2

A11 A21 A21


E4 E4

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 39 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 40


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Attività della ristrutturazione • Ristrutturazioni effettuate per rendere più


efficienti le operazioni in base a un semplice
principio
• Analisi delle ridondanze • Gli accessi si riducono:
• Eliminazione delle generalizzazioni • separando attributi di un concetto che
vengono acceduti separatamente
• Partizionamento/accorpamento di
entità e relazioni • raggruppando attributi di concetti diversi
acceduti insieme
• Scelta degli identificatori primari

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 41 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 42


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

7
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Ristrutturazioni, casi principali

Cognome Codice
• partizionamento verticale di entità
Livello
• partizionamento orizzontale di
Indirizzo
relationship Impiegato Stipendio
• eliminazione di attributi multivalore Data
Ritenute
• accorpamento di entità/ relationship nascita

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 43 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 44


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Cognome Codice Stipendio Livello Nome

Indirizzo
(1,1) (1,1)
Dati Dati Città
R Agenzia
anagrafici lavorativi

(1,N) Telefono
Indirizzo Data Ritenute
nascita

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 45 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 46


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Codice
Città Nome Numero Cognome fiscale Interno Indirizzo

(1,N) (1,1) (0,1) (1,1)


Agenzia Utenza Telefono Persona Intestazione Appartamento

Indirizzo Indirizzo Data


nascita

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 47 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 48


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

8
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Codice
Cognome fiscale Ruolo Cognome Città Nome
Interno
Indirizzo (0,1) (1,N) (1,N)
Persona Giocatore Composizione Squadra

Data
Indirizzo (0,1)
nascita
(0,1) Data Data
acquisto cessione

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 49 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 50


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Data
acquisto Attività della ristrutturazione
Ruolo (1,1) Comp. (1,N) Nome
attuale • Analisi delle ridondanze
• Eliminazione delle generalizzazioni
Giocatore Squadra
• Partizionamento/accorpamento di entità
Comp. e relazioni
(1,N)
passata (1,N) • Scelta degli identificatori primari
Cognome Città

Data Data
acquisto cessione
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 51 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 52
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Scelta degli identificatori principali


Se nessuno degli identificatori soddisfa i
• operazione indispensabile per la traduzione requisiti visti?
nel modello relazionale
• Criteri
• assenza di opzionalità
Si introducono nuovi attributi (codici) contenenti
• semplicità valori speciali generati appositamente per
• utilizzo nelle operazioni più frequenti o questo scopo
importanti

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 53 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 54


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

9
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Traduzione verso il Entità e relationship molti a molti


modello relazionale
Cognome Matricola Data inizio Codice Nome
• idea di base:
(0,N) (1,N)
• le entità diventano relazioni sugli stessi
Impiegato Partecipazione Progetto
attributi
• le associazioni (ovvero le relazioni E- R)
diventano relazioni sugli identificatori Stipendio Budget
delle entità coinvolte (più gli attributi
Impiegato(Matricola, Cognome, Stipendio)
propri)
Progetto(Codice, Nome, Budget)
Partecipazione(Matricola, Codice, DataInizio)
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 55 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 56
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Entità e relationship molti a molti


Nomi più espressivi per gli attributi
Impiegato(Matricola, Cognome, Stipendio)
della chiave della relazione che
Progetto(Codice, Nome, Budget) rappresenta la relationship
Partecipazione(Matricola, Codice, DataInizio)
Impiegato(Matricola, Cognome, Stipendio)
• con vincoli di integrità referenziale fra
• Matricola in Partecipazione e (la chiave di) Progetto(Codice, Nome, Budget)
Impiegato
• Codice in Partecipazione e (la chiave di) Progetto Partecipazione(Matricola, Codice, DataInizio)
Partecipazione(Impiegato, Progetto, DataInizio)

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 57 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 58


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Relationship ricorsive Relationship n-arie


Partita IVA Quantità Genere Codice
Quantità Nome

(0,N) (0,N) (0,N) (1,N)


Composizione Fornitore Fornitura Prodotto

(1,N)
Composto Componente
Prodotto Nome
Dipartimento
Telefono
Costo Nome Codice
Fornitore(PartitaIVA, Nome)
Prodotto(Codice , Nome, Costo) Prodotto(Codice, Genere)
Dipartimento(Nome, Telefono)
Composizione(Composto, Componente , Quantità) Fornitura(Fornitore, Prodotto, Dipartimento, Quantità)

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 59 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 60


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

10
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Relationship uno a molti Soluzione più compatta

Cognome Data Giocatore(Cognome, DataNascita, Ruolo)


Ingaggio
nascita Città Nome
(1,1) Contratto(CognGiocatore, DataNascG, Squadra, Ingaggio)
(0,N)
Squadra(Nome, Città, ColoriSociali)
Giocatore Contratto Squadra

Giocatore(Cognome, DataNasc, Ruolo, Squadra, Ingaggio)


Ruolo Colori sociali Squadra(Nome, Città, ColoriSociali)
• con vincolo di integrità referenziale fra Squadra in
Giocatore(Cognome, DataNascita, Ruolo) Giocatore e la chiave di Squadra
Contratto(CognGiocatore, DataNascG, Squadra, Ingaggio) • se la cardinalità minima della relationship è 0, allora
Squadra(Nome, Città, ColoriSociali) Squadra in Giocatore deve ammettere valore nullo
• corretto?
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 61 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 62
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Entità con identificazione esterna Relationship uno a uno


Data inizio
Cognome Matricola Nome Città Cognome Codice Sede Nome

(1,1) (1,1)
(1,1) (1,N)
Direttore Direzione Dipartimento
Studente Iscrizione Università

Indirizzo
AnnoDiCorso Stipendio Telefono
Studente(Matricola, Università , Cognome, AnnoDiCorso) • varie possibilità:
Università(Nome, Città, Indirizzo) • fondere da una parte o dall'altra
• fondere tutto?
• con vincolo …
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 63 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 64
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Una possibilità privilegiata Un altro caso


Data inizio Data inizio
Cognome Codice Sede Nome Cognome Codice Sede Nome

(0,1) (1,1) (0,1) (0,1)


Direttore Direzione Dipartimento Direttore Direzione Dipartimento

Stipendio Telefono Stipendio Telefono

Impiegato (Codice, Cognome, Stipendio)


Dipartimento (Nome, Sede, Telefono, Direttore, InizioD)
• con vincolo di integrità referenziale, senza valori nulli
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 65 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 66
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

11
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Cognome (0,1) (1,1) Telefono


Direzione Schema finale

Impiegato Dipartimento
(0,1) (1,N) Impiegato(Codice, Cognome,
Afferenza Nome Dipartimento*,Sede*, Data*)
Codice (0,N) (1,1)
(0,1) Composizione
Partecipazione Dipartimento( Nome, Città, Telefono, Direttore)
Data
(1,N) Sede(Città, Via, CAP)
(1,N)

Sede Progetto(Nome, Budget)


Progetto
Via Partecipazione(Impiegato, Progetto)
Indirizzo Città
Budget Nome
CAP
17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 67 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 68
Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

Strumenti di supporto

• Esistono sul mercato prodotti CASE che


forniscono un supporto a tutte le fasi della
progettazione di basi di dati

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 69 17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 70


Basi di dati, Capitolo 7 Basi di dati, Capitolo 7

17/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 71
Basi di dati, Capitolo 7

12
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Forme normali

• Una forma normale è una proprietà di una


base di dati relazionale che ne garantisce la
Atzeni, Ceri, Paraboschi, Torlone “qualità”, cioè l'assenza di determinati difetti
Basi di dati • Quando una relazione non è normalizzata:
McGraw -Hill, 1996-2002
• presenta ridondanze,
Capitolo 9: • si presta a comportamenti poco
La normalizzazione desiderabili durante gli aggiornamenti
• Le forme normali sono di solito definite sul
23/10/2002
modello relazionale, ma hanno senso in altri
contesti, ad esempio il modello E- R
23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 2
Basi di dati, Capitolo 9

Normalizzazione Una relazione con anomalie


• Procedura che permette di trasformare schemi
non normalizzati in schemi che soddisfano
Impiegato Stipendio Progetto Bilancio Funzione
una forma normale
Rossi 20 Marte 2 tecnico
Verdi 35 Giove 15 progettista
• La normalizzazione va utilizzata come tecnica Verdi 35 Venere 15 progettista
Neri 55 Venere 15 direttore
di verifica dei risultati della progettazione di Neri 55 Giove 15 consulente
una base di dati Neri 55 Marte 2 consulente
• Non costituisce una metodologia di Mori 48 Marte 2 direttore
Mori 48 Venere 15 progettista
progettazione Bianchi 48 Venere 15 progettista
Bianchi 48 Giove 15 direttore
23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 3 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 4
Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

Anomalie Perché questi fenomeni indesiderabili?


• Lo stipendio di ciascun impiegato è ripetuto in tutte le
ennuple relative • abbiamo usato un'unica relazione per
• ridondanza rappresentare informazioni eterogenee
• Se lo stipendio di un impiegato varia, è necessario • gli impiegati con i relativi stipendi
andarne a modificare il valore in diverse ennuple • i progetti con i relativi bilanci
• anomalia di aggiornamento
• le partecipazioni degli impiegati ai progetti
• Se un impiegato interrompe la partecipazione a tutti i con le relative funzioni
progetti, dobbiamo cancellarlo
• anomalia di cancellazione
• Un nuovo impiegato senza progetto non può essere
inserito
• anomalia di inserimento
23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 5 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 6
Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

1
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Proprietà

• Ogni impiegato ha un solo stipendio (anche


se partecipa a più progetti)
Per studiare in maniera sistematica questi • Ogni progetto ha un bilancio
aspetti, è necessario introdurre un vincolo • Ogni impiegato in ciascun progetto ha una
di integrità: sola funzione (anche se può avere funzioni
la dipendenza funzionale diverse in progetti diversi)

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 7 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 8


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

Dipendenza funzionale Notazione

• relazione r su R(X) X→Y


• due sottoinsiemi non vuoti Y e Z di X
• esiste in r una dipendenza funzionale (FD) da • Esempi:
Y a Z se, per ogni coppia di ennuple t 1 e t 2 di r
con gli stessi valori su Y, risulta che t 1 e t 2 Impiegato → Stipendio
hanno gli stessi valori anche su Z
Progetto → Bilancio
Impiegato Progetto → Funzione

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 9 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 10


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

Altre FD Le anomalie sono legate ad alcune FD

• Impiegato Progetto → Progetto • gli impiegati hanno un unico stipendio


Impiegato → Stipendio
• Si tratta però di una FD “banale” (sempre • i progetti hanno un unico bilancio
soddisfatta) Progetto → Bilancio

• Y → A è non banale se A non appartiene a Y


• Y → Z è non banale se nessun attributo in Z
appartiene a Y

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 11 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 12


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

2
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Non tutte le FD causano anomalie Una differenza fra FD

• In ciascun progetto, un impiegato svolge una Impiegato → Stipendio


sola funzione Progetto → Bilancio
• causano anomalie
Impiegato Progetto → Funzione Impiegato Progetto → Funzione
• non causa anomalie
• Il soddisfacimento è più "semplice " • Perché?

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 13 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 14


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

Impiegato Stipendio Progetto Bilancio Funzione


FD e anomalie
Rossi 20 Marte 2 tecnico
Verdi 35 Giove 15 progettista
Verdi 35 Venere 15 progettista • La terza FD corrisponde ad una chiave e non
Neri 55 Venere 15 direttore causa anomalie
Neri 55 Giove 15 consulente
Neri 55 Marte 2 consulente • Le prime due FD non corrispondono a chiavi
Mori 48 Marte 2 direttore e causano anomalie
Mori 48 Venere 15 progettista
Bianchi 48 Venere 15 progettista
Bianchi 48 Giove 15 direttore • La relazione contiene alcune informazioni
legate alla chiave e altre ad attributi che non
Impiegato → Stipendio
formano una chiave
Progetto → Bilancio
Impiegato Progetto → Funzione
23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 15 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 16
Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

Impiegato → Stipendio
Progetto → Bilancio
• abbiamo usato un'unica relazione per Impiegato Progetto → Funzione
rappresentare informazioni eterogenee • Impiegato Progetto è chiave
• gli impiegati con i relativi stipendi • Impiegato solo no
• Progetto solo no
• i progetti con i relativi bilanci
• Le anomalie sono causate dalla presenza di concetti
• le partecipazioni degli impiegati ai progetti eterogenei:
con le relative funzioni • proprietà degli impiegati (lo stipendio)
• proprietà di progetti (il bilancio)
• proprietà della chiave Impiegato Progetto

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 17 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 18


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

3
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Che facciamo se una relazione non


Forma normale di Boyce e Codd (BCNF)
soddisfa la BCNF?
• Una relazione r è in forma normale di • La rimpiazziamo con altre relazioni che
Boyce e Codd se, per ogni dipendenza soddisfano la BCNF
funzionale (non banale) X → Y definita
su di essa, X contiene una chiave K di r Come?
• Decomponendo sulla base delle dipendenze
• La forma normale richiede che i concetti in funzionali, al fine di separare i concetti
una relazione siano omogenei (solo proprietà
direttamente associate alla chiave)

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 19 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 20


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

Non sempre così facile


Impiegato Stipendio Progetto Bilancio Funzione
Impiegato Progetto Funzione Impiegato Progetto Sede
Rossi 20 Marte 2 tecnico
Impiegato Stipendio Rossi Marte tecnico
Verdi 35Verdi Giove
Giove 15
progettista progettista Rossi Marte Roma
Rossi 20 Progetto Bilancio
Verdi
Verdi 35
35 Verdi Venere
Venere 15
progettista progettista Verdi Giove Milano
Marte 2
Neri Neri 55 55 Neri Venere
Venere direttore
15 direttore15
Giove Verdi Venere Milano
Mori Neri 48 Neri Giove consulente
55 Giove 15 consulente
Venere 15
Neri Saturno Milano
BianchiNeri 48 Neri Marte consulente
55 Mori Marte
Marte 2
direttore consulente
Mori 48 Mori Marte 2 direttore
Neri Venere Milano
Venere progettista
Mori 48Bianchi Venere
Venere progettista
15 progettista
Bianchi 48Bianchi Venere
Gio ve direttore
15 progettista Impiegato → Sede
Bianchi 48 Giove 15 direttore
Progetto → Sede

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 21 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 22


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

Decomponiamo sulla base Proviamo a ricostruire


delle dipendenze Impiegato Sede
Progetto Sede
Marte Roma
Rossi Roma
Impiegato Progetto Sede Verdi Milano
Giove Milano
Rossi Marte Roma Saturno Milano
Neri Milano
Venere Milano
Verdi Giove Milano
Verdi Venere Milano Impiegato Progetto Sede
Neri Saturno Milano Rossi Marte Roma
Neri Venere Milano Verdi Giove Milano
Verdi Venere Milano
Impiegato Sede
Progetto Sede Neri Saturno Milano
Marte Roma Neri Venere Milano
Rossi Roma
Giove Milano Verdi Saturno Milano
Verdi Milano
Saturno Milano Neri Giove Milano
Neri Milano
Venere Milano Diversa dalla relazione di partenza!
23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 23 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 24
Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

4
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Decomposizione senza perdita Proviamo a decomporre senza perdita


Impiegato Progetto Sede
• Una relazione r si decompone senza perdita Rossi Marte Roma
su X1 e X2 se il join delle proiezioni di r su X1 e Verdi Giove Milano
X2 è uguale a r stessa (cioè non contiene Verdi Venere Milano
Neri Saturno Milano
ennuple spurie) Neri Venere Milano
Impiegato Progetto
• La decomposizione senza perdita è garantita Impiegato Sede Rossi Marte
Rossi Roma Verdi Giove
se gli attributi comuni contengono una chiave
Verdi Milano Verdi Venere
per almeno una delle relazioni decomposte Neri Saturno
Neri Milano
Neri Venere
Impiegato → Sede
Progetto → Sede
23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 25 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 26
Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

Un altro problema
• Supponiamo di voler inserire una nuova
ennupla che specifica la partecipazione
dell'impiegato Neri, che opera a Milano, al
Impiegato Progetto
progetto Marte
Impiegato Sede Rossi Marte
Impiegato Progetto
Verdi Giove
Impiegato Sede Rossi Marte Rossi Roma
Verdi Giove Verdi Venere
Rossi Roma Verdi Milano
Verdi Venere Neri Saturno
Verdi Milano Neri Milano
Neri Saturno Neri Venere
Neri Milano
Neri Venere Neri Marte
Impiegato → Sede
Progetto → Sede
23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 27 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 28
Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

Conservazione delle dipendenze

Impiegato Progetto Sede


Rossi Marte Roma
• Una decomposizione conserva le dipendenze
Verdi Giove Milano se ciascuna delle dipendenze funzionali dello
Verdi Venere Milano schema originario coinvolge attributi che
Neri Saturno Milano compaiono tutti insieme in uno degli schemi
Neri Venere Milano decomposti
Neri Marte Milano

• Progetto → Sede non è conservata

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 29 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 30


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

5
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Qualità delle decomposizioni Una relazione non-normalizzata


• Una decomposizione dovrebbe sempre Dirigente Progetto Sede
soddisfare : Rossi Marte Roma
• la decomposizione senza perdita, che Verdi Giove Milano
garantisce la ricostruzione delle Verdi Marte Milano
Neri Saturno Milano
informazioni originarie Neri Venere Milano
• la conservazione delle dipendenze , che
garantisce il mantenimento dei vincoli di Progetto Sede → Dirigente
integrità originari Dirigente → Sede

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 31 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 32


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

La decomposizione è problematica Una nuova forma normale

• Una relazione r è in terza forma normale se,


• Progetto Sede → Dirigente coinvolge per ogni FD (non banale) X → Y definita su r, è
tutti gli attributi e quindi nessuna verificata almeno una delle seguenti
condizioni:
decomposizione può preservare tale • X contiene una chiave K di r
dipendenza • ogni attributo in Y è contenuto in almeno
• quindi in alcuni casi la BCNF “non è una chiave di r

raggiungibile”

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 33 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 34


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

BCNF e terza forma normale


Decomposizione in terza forma normale
• la terza forma normale è meno restrittiva della
forma normale di Boyce e Codd (e ammette
• si crea una relazione per ogni gruppo di attributi
relazioni con alcune anomalie)
coinvolti in una dipendenza funzionale
• ha il vantaggio però di essere sempre
• si verifica che alla fine una relazione contenga
“raggiungibile”
una chiave della relazione originaria

• Dipende dalle dipendenze individuate

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 35 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 36


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

6
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Una possibile strategia Uno schema non decomponibile in BCNF

• se la relazione non è normalizzata si Dirigente Progetto Sede


decompone in terza forma normale Rossi Marte Roma
Verdi Giove Milano
• alla fine si verifica se lo schema ottenuto è Verdi Marte Milano
Neri Saturno Milano
anche in BCNF Neri Venere Milano

Dirigente → Sede
• Se una relazione ha una sola chiave allora le Progetto Sede → Dirigente

due forme normali coincidono

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 37 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 38


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

Una possibile riorganizzazione Decomposizione in BCNF

Dirigente Progetto Sede Reparto


Rossi Marte Roma 1
Progetto Sede Reparto
Verdi Giove Milano 1
Dirigente Sede Reparto Marte Roma 1
Verdi Marte Milano 1
Neri Saturno Milano 2 Rossi Roma 1 Giove Milano 1
Verdi Milano 1 Marte Milano 1
Neri Venere Milano 2
Neri Milano 2 Saturno Milano 2
Venere Milano 2
Dirigente → Sede Reparto
Sede Reparto → Dirigente
Progetto Sede → Reparto

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 39 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 40


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

Progettazione e normalizzazione Nome Codice


fornitore
Nome
• la teoria della normalizzazione può essere prodotto
Indirizzo
usata nella progettazione logica per verificare
lo schema relazionale finale Prodotto
• si può usare anche durante la progettazione Partita Prezzo
concettuale per verificare la qualità dello IVA
schema concettuale

PartitaIVA → NomeFornitore Indirizzo

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 41 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 42


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

7
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

Analisi dell’entità
Nome Partita Nome
prodotto Codice IVA fornitore
• L’entità viola la terza forma normale a
causa della dipendenza: (1,1) (0,N)
PartitaIVA → NomeFornitore Indirizzo Prodotto Fornitura Fornitore
• Possiamo decomporre sulla base di
questa dipendenza
Prezzo Indirizzo

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 43 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 44


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

Dipartimento Analisi della relationship


(0,N)
(0,N) (0,1) • La relationship viola la terza forma
Professore Tesi Studente normale a causa della dipendenza:
Professore → Dipartimento
(0,N)
• Possiamo decomporre sulla base di
Corso di
laurea questa dipendenza
Studente → Corso di laurea
Studente → Professore
Professore → Dipartimento
23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 45 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 46
Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

Ulteriore analisi sulla base delle


(0,N) dipendenze
Dipartimento
Afferenza
• La relationship Tesi è in BCNF sulla base
(1,1) delle dipendenze
(0,N) (0,1)
Professore Tesi Studente Studente → CorsoDiLaurea
Studente → Professore
(0,N) • le due proprietà sono indipendenti
Corso di • questo suggerisce una ulteriore
laurea decomposizione

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 47 23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 48


Basi di dati, Capitolo 9 Basi di dati, Capitolo 9

8
Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli www.copy-riot.org

(0,N) (0,1)
Professore Tesi Studente

(1,1) (1,1)
(0,N)
Corso di
Afferenza Iscrizione
laurea
(0,N) (0,N)
Corso di
Dipartimento
laurea

23/10/2002 Atzeni-Ceri-Paraboschi-Torlone, 49
Basi di dati, Capitolo 9