Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in...

73
Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2019/2020 SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II 1

Transcript of Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in...

Page 1: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Corso di

Sistemi di Elaborazione delle Informazioni

Dott. Francesco Rossia.a. 2019/2020

SCUOLA DI MEDICINA E CHIRURGIA

Università degli Studi di Napoli Federico II

1

Page 2: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Le basi di dati

Page 3: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Prima parteCosa abbiamo fatto e cosa faremo

Page 4: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Oggi studieremo le basi di dati (DB)

• Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaborare automaticamente l’informazione

• Hanno alcuni aspetti in comune con i fogli di calcolo:

– gestiscono tipi diversi di informazione

– visualizzano l’informazione in forma tabulare

• Tuttavia, sono profondamente diverse dai fogli di calcolo

Page 5: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Fogli di calcolo e DB: differenze

• Nonostante abbiano finalità e metodi di visualizzazione simili, i fogli di calcolo e le DB sono sostanzialmente differenti

• DB strutturano “maggiormente” l’informazione:

– vediamo tra poco cosa vuol dire

• DB sono utilizzate principalmente per memorizzare grandi quantità di informazione:

– non tanto per elaborare automaticamente l’informazione

Page 6: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

La logica booleana

• Per poter capire le DB, dobbiamo imparare le nozioni della logica booleana:

– è utilizzata in diversi ambiti informatici

– in realtà l’abbiamo già vista:

• nei circuiti elettronici del processore

• nelle funzioni avanzate dei motori di ricerca per Internet

Page 7: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Seconda parteLa logica booleana

Page 8: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

La logica booleana

• Definisce espressioni costituite da operatori e operandi

• Gli operandi possono assumere solo valori binari:

– “vero” o “falso”

– 0 o 1

• Ogni operatore può essere applicato ad uno o due operandi

Page 9: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Gli operatori booleani

• Operatori con due operandi:

– AND: restituisce il valore “vero” solo se entrambi gli operandi sono veri

– OR: restituisce il valore “vero” se almeno uno dei due operandi è vero

• Operatore con un solo operando:

– NOT: restituisce il valore “vero” se il valore dell’operando è falso (altrimenti restituisce il valore “falso”)

Page 10: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Tavole di verità

a b a AND b

VERO VERO VERO

VERO FALSO FALSO

FALSO VERO FALSO

FALSO FALSO FALSO

a b a OR b

VERO VERO VERO

VERO FALSO VERO

FALSO VERO VERO

FALSO FALSO FALSO

a NOT a

VERO FALSO

FALSO VERO

a b “a x b”

1 1 1

1 0 0

0 1 0

0 0 0

AND

a b “a + b”

1 1 1

1 0 1

0 1 1

0 0 0

a NOT a

1 0

0 1

OR NOT

Page 11: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Espressioni booleane

• Così come è possibile comporre le operazioni algebriche (somma, prodotto, …), è possibile comporre anche le operazioni booleane

• Esempio: a AND (b OR (NOT c))– dove a, b, c sono singoli operandi o intere proposizioni,

ognuna delle quali può assumere valore vero o falso

– Esempio di proposizioni (vere o false?):

• a = “il triangolo è una figura geometrica con tre lati”

• b = “3+2 = 7”

• c = “4 è un numero dispari”

Page 12: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Tavola di verità di espressioni booleane

• Permette di valutare la verità di un’espressione per tutte le possibili combinazioni di valori delle variabili:

– l’espressione è valutata nell’ordine dato dalle parentesi

a b c NOT c b OR (NOT c) a AND (b OR (NOT c))

VERO VERO VERO FALSO VERO VERO

VERO VERO FALSO VERO VERO VERO

VERO FALSO VERO FALSO FALSO FALSO

VERO FALSO FALSO VERO VERO VERO

FALSO VERO VERO FALSO VERO FALSO

FALSO VERO FALSO VERO VERO FALSO

FALSO FALSO VERO FALSO FALSO FALSO

FALSO FALSO FALSO VERO VERO FALSO

Page 13: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Espressioni booleane

• Così come è possibile comporre le operazioni algebriche (somma, prodotto, …), è possibile comporre anche le operazioni booleane

• Esercizi

– (a AND b) OR (c AND d)

– NOT (a OR b)

– ((NOT a) AND b) OR c

Page 14: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Terza parteIntroduzione alle basi di dati:

le entità

Page 15: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Cosa può essere rappresentato nei DB?

• Nei DB è possibile rappresentare qualunque entità che sia rappresentabile su un computer

– Es: una casa, una persona, ecc.

• Per rappresentare un’entità, si identificano le sue caratteristiche, dette attributi

– in particolare, si identificano quegli attributi che sono necessari agli scopi di uno specifico contesto applicativo

Page 16: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Entità e attributi: un esempio

• Es: attributi dell’entità “appartamento”

– Applicazione “agenzia immobiliare”: superficie commerciale, piano, numero di stanze, indirizzo, box, etc....

– Applicazione “catasto”: indirizzo, numero piantina catastale, valore catastale, etc....

Page 17: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Come si rappresentano gli attributi

• Gli attributi hanno un nome e un dominio

– non un “valore”, come scritto nel libro di testo

– il dominio è l’insieme di possibili valori che possono essere assunti

– es. entità “appartamento”:

• attributo “indirizzo”: dominio un testo

• attributo “numero di stanze”: dominio un numero

Page 18: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Distinzione tra dati e metadati

• Il dominio è un metadato:

– informazione che descrive il dato

• nei fogli di calcolo: il formato della cella è un metadato che descrive i dati della cella

• I metadati definiscono il tipo di informazione che può essere memorizzato in una specifica base di dati

• I dati sono gli specifici valori inseriti per gli attributi.

Page 19: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Metadati: esempio

• Entità: “appartamento”

• Attributi:

– “superficie commerciale”, dominio: numero

– “piano”, dominio: numero

– “numero di stanze”, dominio: numero

– “indirizzo”, dominio: testo

– “box”, dominio: booleano (“sì” o “no”)

Page 20: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Istanza

Superficie Piano Stanze Indirizzo Box

100 4 4 Via Rossi, 5 No

50 4 2 Via Verdi, 4 Sì

150 8 7 Via Bianchi, 9 Sì

– I metadati specificano il tipo di dati ma non i dati stessi

– Uno specifico insieme di dati in una tabella viene detto istanza

Tabella: appartamenti

Page 21: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Atomicità degli attributi

• Gli attributi devono contenere dati che non necessitano di essere scomposti

• Esempio:

– attributo “nome completo” (es: “Mario Rossi”)

– Attributo “nome” e attributo “cognome” (es: “Mario”, “Rossi”)

• Se il nome e il cognome si trattano sempre assieme, va bene anche “nome completo”

– altrimenti “nome” e “cognome” è indispensabile

Page 22: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Unicità delle entità• Due entità possono avere lo stesso valore per

uno o più attributi

– es: due appartamenti possono essere allo stesso piano

• In pratica: non esistono due entità con gli stessi valori per tutti gli attributi

Page 23: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Chiavi candidate• Non possono esistere due entità con gli stessi

valori per tutti gli attributi. Quindi:

– esistono insiemi di attributi i cui valori non possono essere

ripetuti in due entità

– come minimo, l’insieme di tutti gli attributi

– ognuno di questi insiemi identifica univocamente un’entità

• Un insieme di attributi che identifica univocamente un’entità è detto chiave candidata

Page 24: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Chiavi candidate: esempio• Entità “persona”, attributi:

– Nome, cognome, data di nascita, luogo di nascita, codice fiscale

• Chiavi candidate:

– Nome, cognome, data di nascita, luogo di nascita, codice fiscale• l’insieme di tutti gli attributi è sempre una chiave candidata

– Codice fiscale

– Codice fiscale con un qualunque insiemi di attributi è una chiave candidata

– Nome, cognome, data di nascita, luogo di nascita• in molti contesti applicativi può essere considerata una chiave

candidata

Page 25: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Chiave primaria

• Tra tutte le chiavi candidate, ne viene scelta una che svolge il ruolo di chiave primaria

• La chiave primaria viene utilizzata per identificare tutte le righe in una tabella

• Esempio:

– “codice fiscale” è una buona scelta: è una chiave candidata ed è composta da pochi attributi (uno solo)

Page 26: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Quarta parteLe operazioni sulle tabelle

Page 27: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Il formalismo dei DB

• I DB sono basati su solidi risultati teorici

• E’ possibile definire 5 operazioni sulle tabelle, analoghe alle operazioni algebriche:

– selezione, proiezione, unione, differenza, prodotto

– si applicano a tabelle, restituiscono come risultato una tabella

Page 28: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

1. Selezione

• Permette di selezionare alcune righe da una tabella

• Si specifica una condizione (o “test”) e una tabella di input

• Il risultato è dato da una tabella con gli stessi attributi della tabella in input e contenente solo le righe in cui la condizione è verificata

– la condizione viene valutata per ogni riga.

Page 29: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Selezione, esempio

• Tabella: appartamentiSuperficie Piano Stanze Indirizzo Box

100 4 4 Via Rossi, 5 No

50 4 2 Via Verdi, 4 Sì

150 8 7 Via Bianchi, 9 Sì

• Seleziona appartamenti piano = 4Superficie Piano Stanze Indirizzo Box

100 4 4 Via Rossi, 5 No

50 4 2 Via Verdi, 4 Sì

Page 30: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Combinazione di condizioni: la logica booleana

• E se volessimo esprimere più condizioni?

– Usiamo la logica booleana

• Es: “è al quarto piano e non ha il box”

– Piano=4 AND Box=“no”

• Es: “è al quarto piano e non ha il box, oppure è al primo piano e ha il box”

– (Piano = 4 AND Box=“no”) OR (Piano=1 AND Box = “Sì”)

Page 31: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

2. Proiezione

• Permette di scegliere quali attributi di una tabella

visualizzare

• Si specificano una tabella e una lista di attributi di quella

tabella

• Il risultato è una tabella con solo quell’insieme di

attributi e tutte le righe della tabella in input

Page 32: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Proiezione, esempio

• Tabella: appartamentiSuperficie Piano Stanze Indirizzo Box

100 4 4 Via Rossi, 5 No

50 4 2 Via Verdi, 4 Sì

150 8 7 Via Bianchi, 9 Sì

• Proiezione Indirizzo, Box from appartamentiIndirizzo Box

Via Rossi, 5 No

Via Verdi, 4 Sì

Via Bianchi, 9 Sì

Page 33: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

3. Unione

• Operazione applicata a due tabelle che hanno esattamente gli stessi attributi

• Restituisce la tabella che contiene l’unione delle righe di entrambe le tabelle in input

Page 34: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Unione, esempio

• Tabella: appartamenti

Superficie Piano Stanze Indirizzo Box

100 4 4 Via Rossi, 5 No

50 4 2 Via Verdi, 4 Sì

150 8 7 Via Bianchi, 9 Sì

Piccolo = selezione appartamenti stanze < 3

Grande = selezione appartamenti stanza > 5

Piccolo unito Grande:

Superficie Piano Stanze Indirizzo Box

50 4 2 Via Verdi, 4 Sì

150 8 7 Via Bianchi, 9 Sì

Page 35: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

4. Differenza

• Operazione applicata a due tabelle che hanno esattamente gli stessi attributi

• Assume in input due tabelle, A e B

• Restituisce la tabella che contiene le righe che fanno parte di A ma non di B

– “sottrae da A le righe di B”

Page 36: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Differenza, esempio

• Tabella: appartamentiSuperficie Piano Stanze Indirizzo Box

100 4 4 Via Rossi, 5 No

50 4 2 Via Verdi, 4 Sì

150 8 7 Via Bianchi, 9 Sì

Grande = seleziona appartamenti stanze > 5

Superficie Piano Stanze Indirizzo Box

100 4 4 Via Rossi, 5 No

50 4 2 Via Verdi, 4 Sì

Superficie Piano Stanze Indirizzo Box

150 8 7 Via Bianchi, 9 Sì

Differenza = appartamenti - Grande:

Page 37: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

5. Prodotto

• Si applica ad una coppia di tabelle (anche senza gli stessi attributi)

• Restituisce una tabella che contiene tutti gli attributi delle due tabelle in input e tutte le combinazioni dei valori delle due tabelle in input

– funziona come il prodotto cartesiano fra due insiemi

• {a, b} x {c, d, e} = {{ a,c }, {a, d}, {a, e}, {b, c}, {b, d}, {b, e}}

Page 38: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Il prodotto: esempio

Tabella: BambiniNome Anni Genere

Andrea 2 Maschio

Luca 3 Maschio

Anna 4 Femmina

Gioco Colore GiocoDa

Macchinina blu Maschio

Bambola rosa Femmina

Tabella: Giochi

Bambini x GiochiNome Anni Genere Gioco Colore GiocoDa

Andrea 2 Maschio Macchinina blu Maschio

Andrea 2 Maschio Bambola rosa Femmina

Luca 3 Maschio Macchinina blu Maschio

Luca 3 Maschio Bambola rosa Femmina

Anna 4 Femmina Macchinina blu Maschio

Anna 4 Femmina Bambola rosa Femmina

Page 39: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Composizione di operazioni

• E’ possibile combinare le operazioni in modo da utilizzare il risultato di una operazione come operando per una nuova operazione

– analogo a 5 + (2 * 3): prima svolgiamo (2*3) e otteniamo un numero che poi usiamo come operando sommato a 5

Page 40: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Composizione di operazioni, esempio

• Tabella: appartamentiSuperficie Piano Stanze Indirizzo Box

100 4 4 Via Rossi, 5 No

50 4 2 Via Verdi, 4 Sì

150 8 7 Via Bianchi, 9 Sì

Proiezione superficie, piano selezione di appartamenti con stanze > 3

Superficie Piano

100 4

150 8

Page 41: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Il join

• E’ una forma di composizione:

– si applica una selezione ad un prodotto

• E’ molto usata, quindi prende un nome specifico

• L’idea è: fai il prodotto ma non restituire tutti le combinazioni ma solo alcune per cui vale una certa condizione

Page 42: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Il join naturale

• Si moltiplicano due tabelle A e B e si

selezionano solo le righe per le quali un

attributo (specificato) di A ha valore uguale ad

un attributo (specificato) di B

Page 43: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Join naturale, esempio

Tabella: BambiniNome Anni Genere

Andrea 2 Maschio

Luca 3 Maschio

Anna 4 Femmina

Gioco Colore GiocoDa

Macchinina blu Maschio

Bambola rosa Femmina

Tabella: Giochi

Join Bambini, Giochi on Bambini.genere = Giochi.GiocoDaNome Anni Genere Gioco Colore GiocoDa

Andrea 2 Maschio Macchinina blu Maschio

Luca 3 Maschio Macchinina blu Maschio

Anna 4 Femmina Bambola rosa Femmina

Page 44: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Quinta partePrincipi di progettazione di DB

Page 45: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

La ridondanza dei dati• Molti contesti applicativi portano ad avere,

come soluzione naturale, la duplicazione di dati tra diverse tabelle.

Tabella: StudentiNome Cognome Matricola Indirizzo

Andrea Bianchi 111111 Via Roma, 1

Beatrice Verdi 222222 Corso Milano, 2

Carlo Rossi 333333 Piazza Genova, 3

Libro Autore Nome Cognome Indirizzo

Fluency Snyder Andrea Bianchi Via Roma, 1

La Relatività Einstein Beatrice Verdi Corso Milano, 2

Tabella: Libri prestati

Page 46: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

I problemi derivanti dalla ridondanza

• Spreco di spazio di memorizzazione:

– le stesse informazioni vengono memorizzate due volte: sarà necessario utilizzare il doppio dello spazio per memorizzare quei dati

• Inconsistenza dei dati:

– se un dato cambia, deve essere cambiato in tutte le tabelle dove quel dato è presente.

– è difficile verificare automaticamente che questa operazione venga realizzata correttamente

– se non viene realizzata correttamente, i dati diventano inconsistenti

Page 47: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Esempio di inconsistenza dei dati

Tabella: StudentiNome Cognome Matricola Indirizzo

Andrea Bianchi 111111 Via Roma, 1

Beatrice Verdi 222222 Viale Monza, 4

Carlo Rossi 333333 Piazza Genova, 3

Libro Autore Nome Cognome Indirizzo

Fluency Snyder Andrea Bianchi Via Roma, 1

La Relatività Einstein Beatrice Verdi Corso Milano, 2

Tabella: Libri prestati

• Beatrice Bianchi cambia indirizzo e comunica la modifica solo alla segreteria (ma non alla biblioteca)

Page 48: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

“mmm, non capisco dovevuoi andare a parare”• “Va bene, ho capito che la

ridondanza è tanto brutta, però l’informazione dell’indirizzo serve in entrambe le tabelle, quindi non posso fare a meno di duplicarla”

Page 49: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

La soluzione: l’intuizione

• Nella tabella della biblioteca non memorizzo tutte le informazioni di uno studente, ma solo la sua matricola:

Tabella: StudentiNome Cognome Matricola Indirizzo

Andrea Bianchi 111111 Via Roma, 1

Beatrice Verdi 222222 Corso Milano, 2

Carlo Rossi 333333 Piazza Genova, 3

Titolo Autore Matricola

Fluency Snyder 111111

La Relatività Einstein 222222

Tabella: Libri

Page 50: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

La soluzione: cosa abbiamo fatto

• Abbiamo scelto l’insieme di attributi {Matricola} come chiave primaria della tabella Studenti

• Nella tabella Libri usiamo un riferimento alla matricola dello studente che ha preso in prestito il libro:

– l’insieme di attributi {Matricola} prende il nome di chiave esterna

Page 51: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

La chiave esterna

• Una chiave esterna è un insieme di attributi di una tabella che fanno riferimento alla chiave primaria di un’altra tabella.

Page 52: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

“Non mi stai convincendo”

• “Ci sono almeno due cose che non mi vanno bene di quello che ci hai appena detto:

1. non hai tolto del tutto la ridondanza dei dati, in quanto la matricola viene sempre ripetuta due volte

2. nella tabella Libri non ci sono più i dettagli dello studente ma solo la matricola: se volessi sapere come si chiama chi ha preso un certo libro, come faccio?”

Page 53: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

1 – la ridondanza

• E’ vero che la chiave esterna ripete i valori della chiave primaria

– nel nostro esempio: Libri.Matricola ripete i valori di Studenti.Matricola

Page 54: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

1 – la ridondanza (cont)

• tuttavia:

– abbiamo scelto una chiave primaria che richiede poco spazio per essere memorizzata (dunque si spreca poco spazio)

– abbiamo aggiunto metadati (abbiamo specificato che Libri.Matricola è una chiave esterna che si riferisce a Studenti.Matricola) quindi possiamo aggiornare automaticamente i dati qualora un valore di Studenti.Matricola o di Libri.Matricolavenisse aggiornato.

Page 55: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

2-la completezza dei dati

• Come fa la libreria a sapere il nome degli studenti a cui i libri sono stati prestati?

• Applichiamo un’operazione tra tabelle:

– quale?

– Usiamo il Join naturale

Page 56: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

2-la completezza dei dati (cont)

• Usiamo il Join naturale

LibriStudenti = join Libri, Studenti on Studenti.Matricola =

Libri.Matricola

Titolo Autore Libri.Matricola

Nome Cognome Studenti.Matricola

Indirizzo

Fluency Snyder 111111 Andrea Bianchi 111111 Via Roma, 1

La Relatività Einstein 222222 Beatrice Verdi 222222 Corso Milano, 2

Page 57: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Relazioni tra tabelle

• Relazione tra tabelle: corrispondenza tra attributi di una tabella con alcuni attributi di un’altra tabella.

– Es: Studenti e Libri sono in relazione in quanto Libri.Matricolaè una chiave esterna che fa riferimento a Studenti.Matricola

– La relazione inPrestitoA collega Libri a Studenti

– diagramma entità-relazione: è uno schema usato per rappresentare le entità (con i loro attributi) e le loro relazioni

Libro

TitoloAutore

Studente

NomeCognomeMatricolaIndirizzo

inPrestitoA

Page 58: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Esempi Relazioni

Page 59: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Il modello relazionale

Il Modello Relazionale può essere ricavato direttamente dal

Modello E/R attraverso una sequenza di operazioni di

conversione:

Conversione Entità:

Si crea ana tabella per ciascuna entità del Modello E/R

• Inserendo i campi gli stessi attributi semplici dell'entità di

provenienza

• chiave primaria scelta tra le chiavi candidate

Page 60: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Il modello relazionale

• Inserire nelle relazioni gli attributi composti delle entità,

considerando però solo gli attributi semplici componenti.

Ad esempio, se nel Modello E/R avevamo un attributo composto

"indirizzo" dell'entità "studente" costituito a sua volta da "via",

"numero", "città", ecc. allora nella relazione dovremo

considerare tali sotto-attributi come tanti campi indipendenti.

Page 61: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Il modello relazionale

• Le relazioni 1:1 si possono conglobare come le 1:N, a scelta nell'una o nell'altra tabella.

• Le relazioni N:1 si possono conglobare nella tabella relativa all'entità dalla parte dell' 1. La chiave della tabella dalla parte dell' N viene inglobata nella tabella dalla parte dell' 1.

Page 62: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Il modello relazionale

Associazioni:

• Le associazioni M:N devono essere tradotte in tabelle che hanno come attributi gli eventuali attributi della relazione e (da non dimenticare!) le chiavi di entrambe le entità collegate dalla relazione.

Page 63: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Esercizi

Testo del problema

Si vuole costruire una base dati per un'azienda sanitaria locale, tenendo traccia delle seguenti informazioni:

• Gli ospedali sono caratterizzati da un codice identificativo, dal nome e dall'indirizzo

• I dipendenti di ciascun ospedale sono caratterizzati dalla matricola (univoca all'interno dell'ospedale), dal cognome, dal nome, dalla data di nascita, dall'indirizzo e dal numero di figli a carico.

• L'ospedale è suddiviso in reparti, caratterizzati da un codice, un nome, il numero di posti letto disponibili.

Page 64: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente
Page 65: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Modello relazionale

• Ospedale(CodOsp, Nome, Indirizzo)

• Dipendente(Matricola, Nome, Cognome, DataNascita, Indirizzo, Figli, Tipo, Mansione, CodOsp, CodR)

• Reparto(CodR, Nome, PostiLetto, CodOsp)

Page 66: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Esercizi

Testo del problema

Si vuole rappresentare una base di dati per la gestione delle informazioni relative ai musei di una città, tenendo conto delle seguenti informazioni:

• Ciascun museo è identificato attraverso il suo nome. Inoltre la base dati contiene le informazioni relative all'indirizzo del museo, il numero telefonico, il numero di fax e l'indirizzo del relativo sito web (se esiste)

• Le mostre che si tengono nella città sono indentificate univocamente dal nome dell'argomento della mostra e dal nome del museo presso cui la mostra stessa è tenuta (ad es. David Hockney alla GAM, i Fauves a Palazzo Bricherasio,….). Inoltre sono noti l'intervallo di tempo in cui la mostra si è tenuta in quel museo ed il numero di persone che hanno visitato la mostra stessa.

Page 67: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Esercizi

• Per incentivare l'afflusso di visitatori ai musei, è possibile acquistare una tessera di abbonamento annuale ai musei, che da' diritto a visitare tutte le mostre organizzate nella città. Gli abbonamenti possono essere di vario tipo: per ciascuno di essi è nota la categoria ("Giovani", "Regolari", "Anziani") ed il costo. Le tessere di abbonamento sono identificate univocamente attraverso un codice numerico.

Page 68: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente
Page 69: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Traduzione modello relazionale

• Museo(Nome, Indirizzo, Telefono, Fax, Web)

• Mostra(NomeMostra, DataInizio, DataFine, NumeroVisitatori, NomeMuseo)

• Abbonamento(CodA, Tipo, Costo, Rinnovo, NomeMuseo)

Page 70: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Esercizi

Testo del problema

Si vuole rappresentare una base dati per una società di spedizione di pacchi, tenendo conto delle seguenti informazioni:

• le sedi della società di spedizione sono dislocate sul territorio nazionale. Ciascuna sede è identificata da un codice e caratterizzata da indirizzo, numero di telefono e nominativo del responsabile.

• I dipendenti della società di spedizione, identificati da una matricola univoca per ogni sede, sono caratterizzati da nome, indirizzo, data di nascita e mansione.

• I clienti della società di spedizione sono identificati da un codice e caratterizzati da un nome, un indirizzo, il responsabile amministrativo e da un insieme di più numeri telefonici di riferimento.

Page 71: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Esercizi

Testo del problema

Si vuole rappresentare una base dati per una società di spedizione di pacchi, tenendo conto delle seguenti informazioni:

• I pacchi che vengono trasmessi si distinguono in documenti cartacei ed in altri tipi di pacchi. Ogni pacco ha un codice univoco relativo alla sede di spedizione ed è caratterizzato da data e ora in cui è stato consegnato dal mittente.

Per ogni documento si vuole memorizzare il peso; per gli altri pacchi si indicano le dimensioni del pacco, se il pacco è fragile e se contiene materiali degradabili. Ad ogni pacco corrisponde un unico cliente mittente. Inoltre, per ogni pacco sono noti il giorno e l’ora di arrivo nella sede destinazione del pacco.

Page 72: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente
Page 73: Corso di · 2020-01-28 · Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare, memorizzare e poter rielaorare automati amente

Traduzione modello relazionale

• Sede(CodS, Indirizzo, Ntel, MatrResp)

• Dipendente(Matr, Nome, Mansione, DataNascita, Indirizzo, CodSede)

• Cliente(CodC, Nome, Indirizzo)

• Pacco(CodP, DataSpedizione, Oraspedizione, Tipo Indirizzo, CodeSedeP, CodeSedeA, CodC)