Basi di dati [5ª ed] 9788838694455, 8838694451

1,741 329 43MB

Italian Pages 745 [120] Year 2002

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Basi di dati [5ª ed]
 9788838694455, 8838694451

Citation preview

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Base di dati • Insieme organizzato di dati utilizzati per il supporto allo svolgimento di attività (di un ente, azienda, ufficio, persona)

Atzeni, Ceri, Paraboschi, Torlone

Basi di dati McGraw -Hill, 1996-2002

Capitolo 1:

Introduzione 24/09/2002 24/09/2002

Punti di vista

• • • •

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

2

Che cos'è l'informatica? • Scienza del trattamento razionale, specialmente per mezzo di macchine automatiche, dell’informazione, considerata come supporto alla conoscenza umana e alla comunicazione (Accad. di Francia) Due anime: – metodologica – tecnologica

• Metodologico • Tecnologico

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

3

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

4

Contenuti

Metodo di studio

modelli per l'organizzazione dei dati linguaggi per l'utilizzo dei dati sistemi per la gestione dei dati metodologie di progettazione di basi di dati

• studio individuale, con riflessione sui concetti e riferimento alle esperienze personali • svolgimento di esercizi • sviluppo di progetti, con realizzazione con opportuno strumento (MS Access, Oracle, DB2, SQLServer, Informix, …)

Il corso 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

5

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

6

1

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Sistema informativo

Sistema informativo, commenti

• Componente (sottosistema) di una organizzazione che gestisce (acquisisce, elabora, conserva, produce) le informazioni di interesse (cioè utilizzate per il perseguimento degli scopi dell’organizzazione )

• Ogni organizzazione ha un sistema informativo, eventualmente non esplicitato nella struttura • Quasi sempre, il sistema informativo è di supporto ad altri sottosistemi, e va quindi studiato nel contesto in cui è inserito • 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, Basi di dati, Capitolo 1

7

24/09/2002

Sistema organizzativo

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

8

Risorse

• Insieme di risorse e regole per lo svolgimento coordinato delle attività (processi) al fine del perseguimento degli scopi

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

• le risorse di una azienda (o ente, amministrazione): – persone – denaro – materiali – informazioni

9

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

10

Sistema organizzativo e sistema informativo

Sistemi informativi e automazione

• Il sistema informativo è parte del sistema organizzativo • Il sistema informativo esegue/gestisce processi informativi (cioè i processi che coinvolgono informazioni)

• Il concetto di “sistema informativo” è indipendente da qualsiasi automatizzazione: – esistono organizzazioni la cui ragion d’essere è la gestione di informazioni (p. es. servizi anagrafici e banche) e che operano da secoli

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

11

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

12

2

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Sistema Informatico

Sistema Informatico

• porzione automatizzata del sistema informativo: la parte del sistema informativo che gestisce informazioni con tecnologia informatica

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

13

Gestione delle informazioni

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

Sistema organizzativo Sistema informativo Sistema informatico

24/09/2002

15

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

16

Informazioni e dati

• Nelle attività standardizzate dei sistemi informativi complessi, sono state introdotte col tempo forme di organizzazione e codifica delle informazioni • Ad esempio, nei servizi anagrafici si è iniziato con registrazioni discorsive e poi – nome e cognome – estremi anagrafici – codice fiscale Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

14

• Nelle attività umane, le informazioni vengono gestite in forme diverse: – idee informali – linguaggio naturale (scritto o parlato, formale o colloquiale, in varie lingue) – disegni, grafici, schemi – numeri e codici • e su vari supporti – mente umana, carta, dispositivi elettronici

Gestione delle informazioni

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

Gestione delle informazioni

• Raccolta, acquisizione • Archiviazione, conservazione • Elaborazione, trasformazione, produzione • Distribuzione, comunicazione, scambio

24/09/2002

Sistema azienda

17

• Nei sistemi informatici (e non solo), le informazioni vengono rappresentate in modo essenziale, spartano: attraverso i dati

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

18

3

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Informazioni e dati

Dati e informazioni • Un esempio:

(definizioni dal Vocabolario della lingua italiana 1987)

informazione : notizia, dato o elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni, modi di essere. dato: ciò che è immediatamente presente alla conoscenza, prima di ogni elaborazione; (in informatica) elementi di informazione costituiti da simboli che debbono essere elaborati 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

19

Mario 275 su un foglio di carta sono due dati e non significano molto • Se il foglio di carta viene fornito in risposta alla domanda “A chi mi devo rivolgere per il problema X; qual è il suo numero di telefono?”, allora i dati possono essere interpretati per fornire informazione e arricchire la conoscenza 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

20

Perché i dati?

Base di dati

• La rappresentazione precisa di forme più ricche di informazione e conoscenza è difficile • I dati costituiscono spesso una risorsa strategica, perché più stabili nel tempo di altre componenti (processi, tecnologie, ruoli umani): – ad esempio, i dati delle banche o delle anagrafi

(accezione generica, metodologica ) • Insieme organizzato di dati utilizzati per il supporto allo svolgimento delle attività di un ente (azienda, ufficio, persona) (accezione specifica, metodologica e tecnologica ) • insieme di dati gestito da un DBMS

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

21

24/09/2002

Che cos'è l'informatica?

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

22

Base di dati

• Scienza del trattamento razionale, 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, Basi di dati, Capitolo 1

23

(accezione generica, metodologica ) • Insieme organizzato di dati utilizzati per il supporto allo svolgimento delle attività di un ente (azienda, ufficio, persona) (accezione specifica, metodologica e tecnologica ) • insieme di dati gestito da un DBMS 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

24

4

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Sistema di gestione di basi di dati DataBase Management System (DBMS)

• Prodotti software (complessi) disponibili sul mercato; esempi: – Access – DB2 – Oracle – Informix – Sybase – SQLServer

• Sistema che gestisce collezioni di dati: – grandi – persistenti – condivise garantendo – privatezza – affidabilità – efficienza – efficacia 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

25

Le basi di dati sono ... grandi

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

26

Le basi di dati sono ... persistenti

• dimensioni (molto) maggiori della memoria centrale dei sistemi di calcolo utilizzati • il limite deve essere solo quello fisico dei dispositivi

24/09/2002

DBMS

• hanno un tempo di vita indipendente dalle singole esecuzioni dei programmi che le utilizzano

27

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

28

29

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

30

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, 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, Basi di dati, Capitolo 1

31

24/09/2002

Archivi e basi di dati

Gestione orario lezioni

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

32

Archivi e basi di dati

Archivio 1: orario lezioni

Gestione orario lezioni Base di dati

Gestione ricevimento 24/09/2002

Gestione ricevimento

Archivio 2: ricevimento

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

33

Le basi di dati sono condivise

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

34

I DBMS garantiscono ... privatezza

• Una base di dati e' una risorsa integrata , condivisa fra applicazioni • conseguenze – Attivita' diverse su dati condivisi: • meccanismi di autorizzazione – Accessi di più utenti ai dati condivisi: • controllo della concorrenza 24/09/2002

24/09/2002

• Si possono definire meccanismi di autorizzazione – l'utente A è autorizzato a leggere tutti i dati e a modificare quelli sul ricevimento – l'utente B è autorizzato a leggere i X e a modificare Y

35

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

36

6

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

I DBMS garantiscono... affidabilità • Affidabilità (per le basi di dati): – resistenza a malfunzionamenti hardware e software • Una base di dati è una risorsa pregiata e quindi deve essere conservata a lungo termine • Tecnica fondamentale: – gestione delle transazioni 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

• Insieme di operazioni da considerare indivisibile ("atomico"), corretto anche in presenza di concorrenza e con effetti definitivi

37

Le transazioni sono … atomiche • La sequenza di operazioni sulla base di dati viene eseguita per intero o per niente: – trasferimento di fondi da un conto A ad un conto B: o si fanno il prelevamento da A e il versamento su B o nessuno dei due

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

39

I risultati delle transazioni sono permanenti

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

38

Le transazioni sono … concorrenti • L'effetto di transazioni concorrenti deve essere coerente (ad esempio "equivalente" all'esecuzione separata) – se due assegni emessi sullo stesso conto corrente vengono incassati contemporaneamente si deve evitare di trascurarne uno 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

40

I DBMS debbono essere...efficienti

• La conclusione positiva di una transazione corrisponde ad un impegno (in inglese commit) a mantenere traccia del risultato in modo definitivo, anche in presenza di guasti e di esecuzione concorrente

24/09/2002

Transazione

41

• Cercano di utilizzando al meglio le risorse di spazio di memoria (principale e secondaria) e tempo (di esecuzione e di risposta) • I DBMS, con tante funzioni, rischiano 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, Basi di dati, Capitolo 1

42

7

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

I DBMS debbono essere...efficaci

• La gestione di insiemi di dati grandi e persistenti è possibile anche attraverso sistemi più semplici — gli ordinari file system dei sistemi operativi • I file system prevedono forme rudimentali di condivisione: "tutto o niente" • I DBMS estendono le funzionalità dei file system, fornendo più servizi ed in maniera integrata

• Cercano di rendere produttive le attività dei loro utilizzatori, offrendo funzionalità articolate, potenti e flessibili: – il corso è in buona parte dedicato ad illustrare come i DBMS perseguono l'efficacia

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

DBMS vs file system

43

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

44

DBMS vs file system (2)

Descrizioni dei dati nei DBMS

• Nei programmi tradizionali che accedono a file, ogni programma contiene una descrizione della struttura del file stesso, con i conseguenti rischi di incoerenza fra le descrizioni (ripetute in ciascun programma) e i file stessi • Nei DBMS, esiste una porzione della base di dati (il catalogo o dizionario) che contiene una descrizione centralizzata dei dati, che può essere utilizzata dai vari programmi

• Rappresentazioni dei dati a livelli diversi – permettono l’indipendenza dei dati dalla rappresentazione fisica:

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

45

• i programmi fanno riferimento alla struttura a livello più alto, e le rappresentazioni sottostanti possono essere modificate senza necessità di modifica dei programmi – Precisiamo attraverso il concetto di • modello dei dati 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

46

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

48

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, Basi di dati, Capitolo 1

47

8

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Organizzazione dei dati in una base di dati

www.copy-riot.org

Basi di dati: schema e istanza 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

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

49

Schema e istanza

24/09/2002

L'istanza della base di dati Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

50

Due tipi (principali) di modelli

• In ogni base di dati esistono: – lo schema, sostanzialmente invariante 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

• modelli logici • modelli concettuali

Ex 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

51

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

52

Modelli logici

Modelli concettuali

• Adottati nei DBMS esistenti per l’organizzazione dei dati – utilizzati dai programmi – indipendenti dalle strutture fisiche • esempi: relazionale, reticolare, gerarchico, a oggetti

• Permettono di rappresentare i dati in modo indipendente da ogni sistema – cercano di descrivere i concetti del mondo reale – sono utilizzati nelle fasi preliminari di progettazione • Il più diffuso è il modello EntityRelationship

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

53

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

54

9

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Architettura semplificata di un DBMS: schemi

Architettura (semplificata) di un DBMS

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

utente Schema logico

Schema interno

BD 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

55

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

Architettura standard (ANSI/SPARC) a tre livelli per DBMS

Indipendenza dei dati • Il livello logico è indipendente da quello fisico: – una tabella è utilizzata nello stesso modo qualunque sia la sua realizzazione fisica (che può anche cambiare nel tempo) • Perciò in questo corso vedremo solo il livello logico e non quello fisico

56

utente

utente

utente

Schema esterno

Schema esterno

utente

utente

Schema esterno

Schema logico

Schema interno

BD 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

57

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

Architettura ANSI/SPARC: schemi schema logico: descrizione dell’intera base di dati nel modello logico “principale” del DBMS Schema interno (o fisico): rappresentazione dello schema logico per mezzo di strutture fisiche di memorizzazione schema esterno: descrizione di parte della base di dati in un modello logico (“viste” parziali, derivate, anche in modelli diversi) 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

59

58

Una vista Corsi Corso Docente Basi di dati Rossi Sistemi Neri Reti Bruni Controlli Bruni CorsiSedi

24/09/2002

Aula DS3 N3 N3 G

Aule Nome DS1 N3 G

Edificio OMI OMI Pincherle

Corso Aula Edificio Sistemi N3 OMI Reti N3 OMI Controlli G Pincherle Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

Piano Terra Terra Primo

Piano Terra Terra Primo 60

10

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Indipendenza dei dati

Indipendenza fisica

• conseguenza della articolazione in livelli • l’accesso avviene solo tramite il livello esterno (che può coincidere con il livello logico) • due forme: – indipendenza fisica – indipendenza logica 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

• il livello logico e quello esterno sono indipendenti da quello fisico – una relazione è utilizzata nello stesso modo qualunque sia la sua realizzazione fisica – la realizzazione fisica può cambiare senza che debbano essere modificati i programmi 61

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

62

Indipendenza logica

Linguaggi per basi di dati

• il livello esterno è indipendente da quello logico • aggiunte o modifiche alle viste non richiedono modifiche al livello logico • modifiche allo schema logico che lascino inalterato lo schema esterno sono trasparenti

• Un altro contributo all’efficacia: disponibilità di vari linguaggi e interfacce ð linguaggi testuali interattivi (SQL) ð comandi (SQL) immersi in un linguaggio ospite (Pascal, Java, C ...) ð comandi (SQL) immersi in un linguaggio ad hoc, con anche altre funzionalità (p.es. per grafici o stampe strutturate) ð con interfacce amichevoli (senza linguaggio testuale)

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

63

SQL, un linguaggio interattivo

24/09/2002

24/09/2002

Aule Nome Edificio DS1 OMI N3 OMI G Pincherle

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

64

SQL, un linguaggio interattivo

• "Trovare i corsi tenuti in aule a piano terra" Corsi Corso Docente Aula Basi di dati Rossi DS3 Sistemi Neri N3 Reti Bruni N3 Controlli Bruni G

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

SELECT Corso, Aula, Piano FROM Aule, Corsi WHERE Nome = Aula AND Piano = "Terra"

Piano Terra Terra Primo

65

Corso Sistemi Reti

24/09/2002

Aula Piano N3 Terra N3 Terra

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

66

11

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

SQL in linguaggio ad hoc (Oracle PL/SQL)

SQL immerso in linguaggio ospite write('nome della citta''?'); readln(citta); EXEC SQL DECLARE P CURSOR FOR SELECT NOME, REDDITO FROM PERSONE WHERE CITTA = :citta ; EXEC SQL OPEN P ; EXEC SQL FETCH P INTO :nome, :reddito ; while SQLCODE = 0 do begin write('nome della persona:', nome, 'aumento?'); readln(aumento); EXEC SQL UPDATE PERSONE SET REDDITO = REDDITO + :aumento WHERE CURRENT OF P EXEC SQL FETCH P INTO :nome, :reddito end; EXEC SQL CLOSE CURSOR P 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

declare Stip number; begin select Stipendio into Stip from Impiegato where Matricola = '575488' for update of Stipendio; if Stip > 30 then update Impiegato set Stipendio = Stipendio * 1.1 where Matricola = '575488'; else update Impiegato set Stipendio = Stipendio * 1.15 where Matricola = '575488'; end if; commit; exception when no_data_found then insert into Errori values('Matricola inesistente',sysdate); end; 67

Interazione non testuale (Access)

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

68

Una distinzione terminologica (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, Basi di dati, Capitolo 1

69

24/09/2002

Un'operazione DDL (sullo schema)

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

70

Personaggi e interpreti • progettisti e realizzatori di DBMS • progettisti della base di dati e amministratori della base di dati (DBA) • progettisti e programmatori di applicazioni • utenti – utenti finali (terminalisti): eseguono applicazioni predefinite (transazioni) – utenti casuali: eseguono operazioni non previste a priori, usando linguaggi interattivi

CREATE TABLE orario ( insegnamento CHAR(20) , docente CHAR(20) , aula CHAR(4) , ora CHAR(5) )

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

71

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

72

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 responsabile del controllo centralizzato e della gestione del sistema, delle prestazioni, dell’affidabilità, delle autorizzazioni • Le funzioni del DBA includono quelle di progettazione, anche se in progetti complessi ci possono essere distinzioni

• Programmi che realizzano attività frequenti e predefinite, con poche eccezioni, previste a priori. • Esempi: – versamento presso uno presso sportello bancario – emissione di certificato anagrafico – dichiarazione presso l’ufficio di stato civile – prenotazione aerea • Le transazioni sono di solito realizzate in linguaggio ospite (tradizionale o ad hoc)

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

73

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

74

Transazioni, due accezioni

Vantaggi e svantaggi dei DBMS, 1

• Per l'utente: – programma a disposizione, da eseguire per realizzare una funzione di interesse • Per il sistema: – sequenza indivisibile di operazioni (cfr. affidabilità )

Pro • dati come risorsa comune, base di dati come modello della realtà • gestione centralizzata con possibilità di standardizzazione ed “economia di scala” • disponibilità di servizi integrati • riduzione di ridondanze e inconsistenze • indipendenza dei dati (favorisce lo sviluppo e la manutenzione delle applicazioni)

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

75

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

76

Vantaggi e svantaggi dei DBMS, 2 Contro • costo dei prodotti e della transizione verso di essi

Esercizi su

Basi di dati e DBMS

• non scorporabilità delle funzionalità (con riduzione di efficienza)

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

77

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

78

13

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

• Quali delle seguenti affermazioni sono vere? – l'indipendenza dei dati permette di scrivere programmi senza conoscere le strutture fisiche dei dati – l'indipendenza dei dati permette di modificare le strutture fisiche dei dati senza dover modificare i programmi che accedono alla base di dati – l'indipendenza dei dati permette di scrivere programmi conoscendo solo lo schema concettuale della BD – l'indipendenza dei dati permette di formulare interrogazioni senza conoscere le strutture fisiche 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

79

• Quali delle seguenti affermazioni sono vere? – la distinzione fra DDL e DML corrisponde alla distinzione fra schema e istanza – le istruzioni DML permettono di interrogare la base di dati ma non di modificarla – le istruzioni DDL permettono di specificare la struttura della base di dati ma non di modificarla – non esistono linguaggi che includono sia istruzioni DDL sia istruzioni DML – SQL include istruzioni DML e DDL – le istruzioni DML permettono di interrogare la base di dati e di modificarla 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

81

www.copy-riot.org

• Quali delle seguenti affermazioni sono vere? – il fatto che le basi di dati siano condivise favorisce l'efficienza dei programmi che le utilizzano – il fatto che le basi di dati siano condivise permette di ridurre ridondanze e inconsistenze – il fatto che le basi di dati siano persistenti ne garantisce l'affidabilità – il fatto che le basi di dati siano persistenti favorisce l'efficienza dei programmi – il fatto che le basi di dati siano condivise rende necessaria la gestione della privatezza e delle autorizzazioni 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

80

• Quali delle seguenti affermazioni sono vere? – gli utenti casuali utilizzano transazioni predefinite – i terminalisti utilizzano transazioni predefinite – gli utenti casuali progettano la base di dati – i progettisti del DBMS realizzano le transazioni che saranno utilizzate dai terminalisti – i progettisti della base di dati realizzano il DBMS – i progettisti delle applicazioni utilizzano la base di dati come progettata dal progettista del DBMS – i progettisti delle applicazioni utilizzano la BD come progettata dal progettista della BD 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

82

• 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, Basi di dati, Capitolo 1

83

14

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

I modelli logici dei dati • Tre modelli logici tradizionali • gerarchico • reticolare • relazionale • Più recente (e poco diffuso) • a oggetti

Atzeni, Ceri, Paraboschi, Torlone

Basi di dati McGraw -Hill, 1996-2002 Capitolo 2:

IL MODELLO RELAZIONALE 24/09/2002

24/09/2002

Modelli logici, caratteristiche

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

2

Il modello relazionale

• Gerarchico e reticolare • utilizzano riferimenti espliciti (puntatori) fra record • Relazionale "è basato su valori" • anche i riferimenti fra dati in strutture (relazioni) diverse sono rappresentati per mezzo dei valori stessi

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

3

• Proposto da E. F. Codd nel 1970 per favorire l’indipendenza dei dati • Disponibile in DBMS reali nel 1981 (non è facile implementare l’indipendenza con efficienza e affidabilità!) • 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, Basi di dati, Capitolo 2

4

Relazione: tre accezioni

Relazione matematica

• relazione matematica : come nella teoria degli insiemi • relazione (dall’inglese relationship) che rappresenta una classe di fatti, nel modello Entity-Relationship; tradotto anche con associazione o correlazione • relazione secondo il modello relazionale dei dati

• D1, …, Dn (n insiemi anche non distinti) • prodotto cartesiano D1×…×Dn: • l’insieme di tutte le n-uple (d1, …, dn) tali che d1∈D1, …, dn ∈ Dn • relazione matematica su D1, …, Dn: • un sottoinsieme di D1×…×Dn. • D1, …, Dn sono i domini della relazione

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

5

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

6

1

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Relazione matematica, esempio • D1={a,b} • D2={x,y,z} • prodotto cartesiano D1 × D2

• una relazione 24/09/2002

r ⊆ D1 × D2

a a a b b b

x y z x y z

a a b

x z y

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

www.copy-riot.org

Relazione matematica, proprietà • una relazione matematica è un insieme di n-uple ordinate: • (d1, …, dn) tali che d1∈D1, …, dn ∈ Dn • una relazione è un insieme; quindi: • non c'è ordinamento fra le n-uple • le n-uple sono distinte • ciascuna n-upla è ordinata: l’ i-esimo valore proviene dall’ i-esimo dominio 7

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

8

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 Juve Roma

Lazio Milan Roma Milan

3 2 0 0

1 0 2 1

Casa Juve Lazio Juve Roma

• Ciascuno dei domini ha due ruoli diversi, distinguibili attraverso la posizione: • La struttura è posizionale 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

9

Tabelle e relazioni

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

10

Il modello è basato su valori

• Una tabella rappresenta una relazione se • i valori di ogni colonna sono fra loro omogenei • 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

24/09/2002

Fuori RetiCasaRetiFuori Lazio 3 1 Milan 2 0 Roma 0 2 Milan 0 1

11

• i riferimenti fra dati in relazioni diverse sono rappresentati per mezzo di valori dei domini che compaiono nelle ennuple

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

12

2

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

studenti Matricola Cognome 6554 Rossi 8765 Neri 9283 Verdi 3456 Rossi esami

corsi

24/09/2002

Studente 3456 3456 9283 6554

Nome Data di nascita Mario 05/12/1978 Paolo 03/11/1976 Luisa 12/11/1979 Maria 01/02/1978 Voto 30 24 28 26

studenti Matricola Cognome 6554 Rossi 8765 Neri 9283 Verdi 3456 Rossi

Corso 04 02 01 01

esami

Codice Titolo Docente 01 Analisi Mario 02 Chimica Bruni 04 Chimica Verdi

corsi

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

13

24/09/2002

Struttura basata su valori: vantaggi • indipendenza dalle strutture fisiche (si potrebbe avere anche con puntatori di alto livello) che possono cambiare dinamicamente • si rappresenta solo ciò che è rilevante dal punto di vista dell’applicazione • l’utente finale vede gli stessi dati dei programmatori • i dati sono portabili piu' facilmente da un sistema ad un altro • i puntatori sono direzionali 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

15

Voto 30 24 28 26

Corso

Codice Titolo Docente 01 Analisi Mario 02 Chimica Bruni 04 Chimica Verdi Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

14

• Schema di relazione : un nome R con un insieme di attributi A1, ..., An: R(A 1,..., An) • Schema di base di dati: insieme di schemi di relazione: R = {R1(X 1), ..., Rk(X k)} 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

16

Definizioni, 3

• Una ennupla su un insieme di attributi X è una funzione che associa a ciascun attributo A in X un valore del dominio di A • t[A] denota il valore della ennupla t sull'attributo A

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

Studente

Nome Data di nascita Mario 05/12/1978 Paolo 03/11/1976 Luisa 12/11/1979 Maria 01/02/1978

Definizioni

Definizioni, 2

24/09/2002

www.copy-riot.org

17

• (Istanza di) relazione su uno schema R(X): insieme r di ennuple su X • (Istanza di) base di dati su uno schema R= {R1(X 1), ..., Rn(X n)}: insieme di relazioni r = {r1,..., rn} (con ri relazione su Ri) 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

18

3

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Relazioni su singoli attributi studenti Matricola Cognome 6554 Rossi 8765 Neri 9283 Verdi 3456 Rossi

Strutture nidificate

Nome Data di nascita Mario 05/12/1978 Paolo 03/11/1976 Luisa 12/11/1979 Maria 01/02/1978

Da Filippo Via Roma 2, Roma Ricevuta Fiscale 1235 del 12/10/2000 3 Coperti 3,00 2 Antipasti 6,20 3 Primi 12,00 2 Bistecche 18,00

Da Filippo Via Roma 2, Roma Ricevuta Fiscale 1240 del 13/10/2000 2 Coperti 2,00 2 Antipasti 7,00 2 Primi 8,00 2 Orate 20,00 2 Caffè 2,00

Totale 39,20

Totale 39,00

studenti lavoratori Matricola 6554 3456 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

19

Relazioni che rappresentano strutture nidificate Ricevute

Dettaglio

Numero 1235 1240 Numero 1235 1235 1235 1235 1240 …

24/09/2002

Data 12/10/2000 13/10/2000 Qtà 3 2 3 2 2 …

Dettaglio

24/09/2002

Numero 1235 1240

Descrizione Importo Coperti 3,00 Antipasti 6,20 Primi 12,00 Bistecche 18,00 Coperti 2,00 … …

Numero 1235 1235 1235 1235 1240 …

Data 12/10/2000 13/10/2000

Riga Qtà 1 3 2 2 3 3 4 2 1 2 … …

21

Totale 39,20 39,00

Descrizione Importo Coperti 3,00 Antipasti 6,20 Primi 12,00 Bistecche 18,00 Coperti 2,00 … …

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

20

• Abbiamo rappresentato veramente tutti gli aspetti delle ricevute? • Dipende da che cosa ci interessa! • l'ordine delle righe e' rilevante? • possono esistere linee ripetute in una ricevuta? • Sono possibili rappresentazioni diverse 24/09/2002

Rappresentazione alternativa per strutture nidificate Ricevute

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

Strutture nidifcate , riflessione

Totale 39,20 39,00

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

24/09/2002

23

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

22

Informazione incompleta • ll modello relazionale impone ai dati una struttura rigida: • le informazioni sono rappresentate per mezzo di ennuple • solo alcuni formati di ennuple sono ammessi: quelli che corrispondono agli schemi di relazione • I dati disponibili possono non corrispondere al formato previsto 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

24

4

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Informazione incompleta: motivazioni Nome Franklin Winston Charles Josip

24/09/2002

SecondoNome Delano

Informazione incompleta: soluzioni? • non conviene (anche se spesso si fa) usare valori del dominio (0, stringa nulla, “99”, ...): • potrebbero non esistere valori “non utilizzati” • valori “non utilizzati” potrebbero diventare significativi • in fase di utilizzo (nei programmi) sarebbe necessario ogni volta tener conto del “significato” di questi valori

Cognome Roosevelt Churchill De Gaulle Stalin

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

www.copy-riot.org

25

24/09/2002

Informazione incompleta nel modello relazionale

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

Troppi valori nulli

• Tecnica rudimentale ma efficace: • valore nullo: denota l’assenza di un valore del dominio (e non è un valore del dominio) • t[A], per ogni attributo A, è un valore del dominio dom(A) oppure il valore nullo NULL • Si possono (e debbono) imporre restrizioni sulla presenza di valori nulli

studenti Matricola Cognome 6554 Rossi 9283 Verdi NULL Rossi esami

corsi

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

27

24/09/2002

Tipi di valore nullo

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

Studente NULL NULL 9283

Nome Data di nascita Mario 05/12/1978 Luisa 12/11/1979 Maria 01/02/1978 Voto 30 24 28

Corso NULL 02 01

Codice Titolo Docente 01 Analisi Mario 02 NULL NULL 04 Chimica Verdi Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

28

Vincoli di integrità

• (almeno) tre casi differenti • valore sconosciuto • valore inesistente • valore senza informazione • I DBMS non distinguono i tipi di valore nullo

24/09/2002

26

29

• Esistono istanze di basi di dati che, pur sintatticamente corrette, non rappresentano informazioni possibili per l’applicazione di interesse

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

30

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 276545 30 e lode 02 787643 27 e lode 03 739430 24 04

• Proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l’applicazione • Un vincolo è una funzione booleana (un predicato): associa ad ogni istanza il valore vero o falso

Studenti Matricola Cognome Nome 276545 Rossi Mario 787643 Neri Piero 787643 Bianchi Luca

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

31

24/09/2002

descrizione più accurata della realtà contributo alla “qualità dei dati” utili nella progettazione (vedremo) usati dai DBMS nella esecuzione delle interrogazioni

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

32

Vincoli di integrità, nota

Vincoli di integrità, perché? • • • •

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

33

• non tutte le proprietà di interesse sono rappresentabili per mezzo di vincoli formulabili in modo esplicito

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

34

Tipi di vincoli Esami Studente Voto Lode Corso 276545 32 01 276545 30 e lode 02 787643 27 e lode 03 739430 24 04

• vincoli intrarelazionali • vincoli su valori (o di dominio) • vincoli di ennupla • vincoli interrelazionali

Studenti Matricola Cognome Nome 276545 Rossi Mario 787643 Neri Piero 787643 Bianchi Luca

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

35

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

36

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 ciascuna ennupla, indipendentemente dalle altre ennuple • Caso particolare: • Vincoli di dominio: coinvolgono un solo attributo

• Una possibile sintassi: • espressione booleana di atomi che confrontano valori di attributo o espressioni aritmetiche su di essi (Voto ≥ 18) AND (Voto ≤ 30) (Voto = 30) OR NOT (Lode = "e lode")

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

37

24/09/2002

Vincoli di ennupla, esempio

Stipendi Impiegato Rossi Neri Bruni

Corso Nascita Matricola Cognome Nome 27655 Rossi Mario Ing Inf 5/12/78 78763 Rossi Mario Ing Inf 3/11/76 Neri Piero Ing Mecc 10/7/79 65432 87654 Neri Mario Ing Inf 3/11/76 67653 Rossi Piero Ing Mecc 5/12/78

Lordo Ritenute Netto 55.000 12.500 42.500 45.000 10.000 35.000 47.000 11.000 36.000

Lordo = (Ritenute + Netto)

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

• 39

non ci sono due ennuple con lo stesso valore sull’attributo Matricola non ci sono due ennuple uguali su tutti e tre gli attributi Cognome, Nome e Data di Nascita

24/09/2002

Chiave

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

40

Una chiave

• insieme di attributi che identificano le ennuple di una relazione Formalmente: • un insieme K di attributi è superchiave per r se r non contiene due ennuple distinte t1 e t2 con t1[K] = t2[K] • K è chiave per r se è una superchiave minimale per r (cioè non contiene un’altra superchiave) 24/09/2002

38

Identificazione delle ennuple



24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

41

Matricola Cognome Nome Corso Nascita Ing Inf 27655 Rossi Mario 5/12/78 78763 Rossi Mario Ing Inf 3/11/76 65432 Neri Piero Ing Mecc 10/7/79 87654 Neri Mario Ing Inf 3/11/76 67653 Rossi Piero Ing Mecc 5/12/78

• Matricola è una chiave: • è superchiave • contiene un solo attributo e quindi è minimale 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

42

7

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Un'altra chiave Matricola Cognome Nome Corso Ing Inf 27655 Rossi Mario Mario Rossi 78763 Rossi Rossi Mario Mario Ing Inf 65432 Neri Piero Ing Mecc 87654 Neri Mario Ing Inf Mario 67653 Rossi Piero Ing Mecc Rossi

Un'altra chiave?? Matricola Cognome Nome Corso Nascita 27655 Rossi Mario Ing Inf 5/12/78 78763 Rossi Mario Ing Civile 3/11/76 65432 Neri Piero Ing Mecc 10/7/79 3/11/76 87654 Neri Mario Ing Inf 67653 Rossi Piero Ing Mecc 5/12/78

Nascita 5/12/78 5/12/78 3/11/76 3/11/76 10/7/79 3/11/76 3/11/76 5/12/78 5/12/78

• Non ci sono ennuple uguali su Cognome e Corso: • Cognome e Corso formano una chiave • Ma è sempre vero?

• Cognome, Nome, Nascita è un’altra chiave: • è superchiave • minimale 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

43

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

44

Vincoli, schemi e istanze • i vincoli corrispondono a proprietà del mondo reale modellato dalla base di dati • interessano a livello di schema (con riferimento cioè a tutte le istanze) • ad uno schema associamo un insieme di vincoli e consideriamo corrette (valide, ammissibili) le istanze che soddisfano tutti i vincoli • un'istanza può soddisfare altri vincoli (“per caso”) 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

45

Matricola Cognome, Nome, Nascita

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

46

• Una relazione non può contenere ennuple distinte ma uguali • Ogni relazione ha come superchiave l’insieme degli attributi su cui è definita • e quindi ha (almeno) una chiave

• È corretta: soddisfa i vincoli • Ne soddisfa anche altri ("per caso"): • Cognome, Corso è chiave Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

• chiavi:

Esistenza delle chiavi

Matricola Cognome Nome Corso Nascita 27655 Rossi Mario Ing Inf 5/12/78 78763 Rossi Mario Ing Civile 3/11/76 65432 Neri Piero Ing Mecc 10/7/79 87654 Neri Mario Ing Inf 3/11/76 67653 Rossi Piero Ing Mecc 5/12/78

24/09/2002

Studenti Matricola Cognome Nome Corso Nascita

47

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

48

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 l’accessibilità a ciascun dato della base di dati • le chiavi permettono di correlare i dati in relazioni diverse: • il modello relazionale è basato su valori

• In presenza di valori nulli, i valori della chiave non permettono • di identificare le ennuple • di realizzare facilmente i riferimenti da altre relazioni

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

Matricola Cognome Nome

Corso

49

Mario Ing Inf 5/12/78 Mario Ing Civile 3/11/76

NULL

NULL NULL

Rossi

65432

Neri

Piero Ing Mecc 10/7/79

87654 87654

Neri Neri Neri Neri

Mario Mario Mario Mario

50

Chiave primaria • Chiave su cui non sono ammessi nulli • Notazione: sottolineatura Matricola Cognome Nome

Corso

Nascita

Ing Inf

5/12/78

Ing Ing Inf Inf

NULL NULL

86765

NULL

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

87654

Neri

Mario

Ing Inf

NULL

43289

Neri

Mario

NULL

5/12/78

• La presenza di valori nulli nelle chiavi deve essere limitata 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

Nascita

78763

NULL NULL

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

51

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

52

Infrazioni

Integrità referenziale • informazioni in relazioni diverse sono correlate attraverso valori comuni • in particolare, valori delle chiavi (primarie) • le correlazioni debbono essere "coerenti"

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

Codice

Data

Vigile

34321

1/2/95

3987

Prov Numero MI

39548K

53524 64521

4/3/95 5/4/96

3295 3295

TO PR

E39548 839548

73321

5/2/98

9345

PR

839548

Vigili Matricola Cognome

53

24/09/2002

Nome

3987

Rossi

Luca

3295 9345

Neri Neri

Piero Mario

7543 Mori Atzeni-Ceri-Paraboschi-Torlone,

Gino

54

Basi di dati, Capitolo 2

9

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Infrazioni

Vincolo di integrità referenziale

Codice

Data

Vigile

34321

1/2/95

3987

MI

39548K

53524 64521

4/3/95 5/4/96

3295 3295

TO PR

E39548 839548

73321

5/2/98

9345

PR

839548

Prov Numero

Auto Prov Numero Cognome MI TO PR 24/09/2002

www.copy-riot.org

• Un vincolo di integrità referenziale (“foreign key”) fra gli attributi X di una relazione R1 e un’altra relazione R2 impone ai valori su X in R1 di comparire come valori della chiave primaria di R2

Nome

39548K E39548

Rossi Rossi

Mario Mario

839548

Neri

Luca

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

55

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

56

Violazione di vincolo di integrità referenziale Infrazioni

• vincoli di integrità referenziale fra: • l’attributo Vigile della relazione INFRAZIONI e la relazione VIGILI • gli attributi Prov e Numero di INFRAZIONI e la relazione AUTO

Codice 34321 53524 64521 73321

Data 1/2/95 4/3/95 5/4/96 5/2/98

Vigile 3987 3295 3295 9345

Prov MI TO PR PR

Auto Prov Numero Cognome MI TO PR 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

57

Vincoli di integrità referenziale: commenti

• Sono possibili meccanismi per il supporto alla loro gestione ("azioni" compensative a seguito di violazioni) • Attenzione ai vincoli su più attributi Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

Rossi Rossi Neri

Nome Mario Mario Luca

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

58

Integrità referenziale e valori nulli

• Giocano un ruolo fondamentale nel concetto di “modello basato su valori” • In presenza di valori nulli i vincoli possono essere resi meno restrittivi

24/09/2002

24/09/2002

E39548 F34268 839548

Numero 39548K E39548 839548 839548

Impiegati Matricola Cognome Progetto 34321 53524 64521 73032

Progetti

59

24/09/2002

Codice IDEA XYZ BOH

Rossi Neri Verdi Bianchi

Inizio 01/2000 07/2001 09/2001

IDEA XYZ NULL

IDEA

Durata 36 24 24

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

Costo 200 120 150 60

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: • Viene eliminata una ennupla causando una violazione • Comportamento “standard”: • Rifiuto dell'operazione • Azioni compensative: • Eliminazione in cascata • Introduzione di valori nulli 24/09/2002

34321 53524 64521 73032

Progetti

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

61

Introduzione di valori nulli

Progetti

24/09/2002

Codice IDEA XYZ BOH

Rossi Neri Verdi Bianchi

Inizio 01/2000 07/2001 09/2001

Durata 36 24 24

Costo 200 120 150

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

62

Codice Data ProvA NumeroA ProvB NumeroB 34321 1/2/95 TO E39548 MI 39548K

NULL

64521 5/4/96

IDEA Costo 200 120 150

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

NULL

IDEA

Incidenti

IDEA NULL XYZ

Durata 36 24 24

24/09/2002

Inizio 01/2000 07/2001 09/2001

IDEA XYZ

Vincoli multipli su più attributi

Impiegati Matricola Cognome Progetto 34321 53524 64521 73032

Codice IDEA XYZ BOH

Rossi Neri Verdi Bianchi

63

PR

839548

TO

Auto Prov Numero Cognome

24/09/2002

E39548

MI

39548K

Rossi

Nome Mario

TO

E39548

Rossi

Mario

PR

839548

Neri

Luca

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 2

64

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, Basi di dati, Capitolo 2

65

11

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Linguaggi per basi di dati • operazioni sullo schema • DDL: data definition language • operazioni sui dati • DML: data manipulation language • interrogazione ("query") • aggiornamento

Atzeni, Ceri, Paraboschi, Torlone

Basi di dati McGraw -Hill, 1996-2002 Capitolo 3:

ALGEBRA E CALCOLO RELAZIONALE 24/09/2002

24/09/2002

Linguaggi di interrogazione per basi di dati relazionali

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

• Algebra relazionale: procedurale • Calcolo relazionale: dichiarativo (teorico) • SQL (Structured Query Language): parzialmente dichiarativo (reale) • QBE (Query by Example): dichiarativo (reale)

3

24/09/2002

Algebra relazionale

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

4

Operatori dell'algebra relazionale

• Insieme di operatori • su relazioni • che producono relazioni • e possono essere composti

24/09/2002

2

Linguaggi di interrogazione

• Dichiarativi • specificano le proprietà del risultato ("che cosa") • Procedurali • specificano le modalità di generazione del risultato ("come")

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

• • • • •

5

unione, intersezione, differenza ridenominazione selezione proiezione join (join naturale, prodotto cartesiano, theta-join)

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

6

1

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Operatori insiemistici

Unione

• le relazioni sono insiemi • i risultati debbono essere relazioni • è possibile applicare unione , intersezione , differenza solo a relazioni definite sugli stessi attributi

Laureati Matricola Nome 7274 Rossi 7432 Neri 9824 Verdi

Età 42 54 45

Quadri Matricola Nome 9297 Neri 7432 Neri 9824 Verdi

Laureati ∪ Quadri Matricola Nome 7274 Rossi 7432 Neri 9824 Verdi 9297 Neri

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

7

24/09/2002

Età 42 54 45

Quadri Matricola Nome 9297 Neri 7432 Neri 9824 Verdi

24/09/2002

Laureati Età 33 54 45

Quadri

Matricola Nome 7274 Rossi 7432 Neri 9824 Verdi

Età 42 54 45

Matricola Nome 9297 Neri 7432 Neri 9824 Verdi

Età 33 54 45

Laureati – Quadri Matricola Nome 7274 Rossi 7432 Neri 9824 Verdi

Età 54 45

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

9

24/09/2002

Un’unione sensata ma impossibile Paternità Padre Figlio Adamo Abele Adamo Caino Abramo Isacco

8

Differenza

Laureati ∩ Quadri Matricola Nome 7432 Neri 9824 Verdi

Età 42 54 45 33

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Intersezione Laureati Matricola Nome 7274 Rossi 7432 Neri 9824 Verdi

Età 33 54 45

Età 42 54 45

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

10

Ridenominazione • operatore monadico (con un argomento) • "modifica lo schema" lasciando inalterata l'istanza dell'operando

Maternità Madre Figlio Eva Abele Eva Set Sara Isacco

Paternità ∪ Maternità ?? 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

11

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

12

2

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

RENGenitore ←

Paternità

Paternità

Padre Figlio Adamo Abele Adamo Caino Abramo Isacco

Padre Figlio Adamo Abele Adamo Caino Abramo Isacco RENGenitore ← Genitore Padre Adamo Adamo Abramo

24/09/2002

Padre

Figlio Abele Caino Isacco

Madre Eva Eva Sara 13

Figlio Abele Set Isacco

24/09/2002

Genitore Figlio Eva Abele Eva Set Sara Isacco

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

14

Impiegati Cognome Ufficio Stipendio

RENGenitore ←



Padre

Genitore Adamo Adamo Abramo Eva Eva Sara

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Figlio Abele Caino Isacco Abele Set Isacco

15

Operai

Roma Milano

55 64

Cognome Fabbrica Salario Bruni Monza 45 Verdi Latina 55

(Impiegati)

REN Sede, Retribuzione ←

Ufficio, Stipendio

REN Sede, Retribuzione ←

Fabbrica, Salario (Operai)



Cognome Sede Retribuzione Rossi Roma 55 Neri Milano 64 Bruni Monza 45 Verdi Latina 55 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

16

Impiegati

Selezione • operatore monadico • produce un risultato che • ha lo stesso schema dell'operando • contiene un sottoinsieme delle ennuple dell'operando, • quelle che soddisfano una condizione

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Rossi Neri

(Paternità)

RENGenitore ← Madre (Maternità)

Genitore Figlio Eva Abele Eva Set Sara Isacco

24/09/2002

Figlio Abele Caino Isacco

RENGenitore ← Madre (Maternità)

Maternità

(Paternità)

RENGenitore ← Madre (Maternità)

24/09/2002

(Paternità)

(Paternità)

Figlio Abele Caino Isacco

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

RENGenitore ← Genitore Adamo Adamo Abramo

Padre

Genitore Adamo Adamo Abramo

Padre

17

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

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

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

18

3

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

• impiegati che guadagnano più di 50

Selezione, sintassi e semantica • sintassi SEL Condizione (Operando) • Condizione: espressione booleana (come quelle dei vincoli di ennupla) • semantica • il risultato contiene le ennuple dell'operando che soddisfano la condizione 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

19

• impiegati che guadagnano più di 50 e lavorano a Milano

Impiegati Matricola Cognome Filiale Stipendio 7309 Rossi Roma 55 5998 Neri Milano 64 9553 5698 Milano Neri Milano Napoli 44 64 5698 Neri Napoli 64 SELStipendio > 50 (Impiegati)

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

• impiegati che hanno lo stesso nome della filiale presso cui lavorano

Impiegati

Impiegati

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

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

SEL Stipendio > 50 AND Filiale = 'Milano' (Impiegati) 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

20

21

SEL 24/09/2002

(Impiegati)

Cognome = Filiale

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

22

Selezione e proiezione selezione

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

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

proiezione

23

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

24

4

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Impiegati

Proiezione • operatore monadico • produce un risultato che • ha parte degli attributi dell'operando • contiene ennuple cui contribuiscono tutte le ennuple dell'operando

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

25

Proiezione, sintassi e semantica

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

26

PROJ Matricola, Cognome (Impiegati)

27

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

28

Cardinalità delle proiezioni • una proiezione • contiene al più tante ennuple quante l'operando • può contenerne di meno

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

• se X è una superchiave di R, allora PROJX (R) contiene esattamente tante ennuple quante R

PROJ Cognome, Filiale (Impiegati)

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

• per tutti gli impiegati: • matricola e cognome • cognome e filiale

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

• cognome e filiale di tutti gli impiegati

24/09/2002

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

• matricola e cognome di tutti gli impiegati

• sintassi PROJ ListaAttributi (Operando) • semantica • il risultato contiene le ennuple ottenute da tutte le ennuple dell'operando ristrette agli attributi nella lista

24/09/2002

www.copy-riot.org

29

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

30

5

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli



Selezione e proiezione • Combinando selezione e proiezione, possiamo estrarre interessanti informazioni da una relazione

www.copy-riot.org

matricola e cognome degli impiegati che guadagnano più di 50

Matricola Cognome Filiale Stipendio 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, Basi di dati, Capitolo 3

31

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

32

Join • Combinando selezione e proiezione, possiamo estrarre informazioni da una relazione • non possiamo però correlare informazioni presenti in relazioni diverse

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

33

• il join è l'operatore più interessante dell'algebra relazionale • permette di correlare dati in relazioni diverse

24/09/2002

Prove scritte in un concorso pubblico

1 2 3 4

• I compiti sono anonimi e ad ognuno è associata una busta chiusa con il nome del candidato • Ciascun compito e la relativa busta vengono contrassegnati con uno stesso numero

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

35

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

25 13 27 28

1 2 3 4

Mario Rossi Nicola Russo Mario Bianchi Remo Neri

Mario Rossi Nicola Russo Mario Bianchi Remo Neri 24/09/2002

34

25 13 27 28

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

36

6

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Numero Voto 1 25 2 13 3 27 4 28

Numero 1 2 3 4

Numero 1 2 3 4 24/09/2002

Join naturale

Candidato Mario Rossi Nicola Russo Mario Bianchi Remo Neri

Candidato Mario Rossi Nicola Russo Mario Bianchi Remo Neri

• operatore binario (generalizzabile) • produce un risultato • sull'unione degli attributi degli operandi • con ennuple costruite ciascuna a partire da una ennupla di ognuno degli operandi

Voto 25 13 27 28

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

www.copy-riot.org

37

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Impiegato Reparto Rossi A Neri B Bianchi B

Join, sintassi e semantica • R1(X 1), R2(X 2) • R1 JOIN R2 è una relazione su X1X2

Reparto A B

Impiegato Reparto Rossi A Neri B Bianchi B

{ t su X1X2 | esistono t1∈R1e t2∈R2 con t[X 1] =t1 e t[X 2] =t2 }

38

Capo Mori Bruni

Capo Mori Bruni Bruni

• ogni ennupla contribuisce al risultato: • join completo 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

39

24/09/2002

Un join non completo Impiegato Reparto Rossi A Neri B Bianchi B

Reparto B C

Impiegato Reparto Neri B Bianchi B

24/09/2002

40

Un join vuoto

Capo Mori Bruni

Impiegato Reparto Rossi A Neri B Bianchi B

Capo Mori Mori

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Reparto D C

Impiegato Reparto

41

24/09/2002

Capo Mori Bruni

Capo

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

42

7

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Un join completo, con n x m ennuple Impiegato Reparto Rossi A B Neri B

Reparto A B B

Impiegato Reparto Rossi B Rossi B Neri B Bianchi B 24/09/2002

• Il join di R1 e R2 contiene un numero di ennuple compreso fra zero e il prodotto di |R1| e |R2 | • se il join coinvolge una chiave di R2, allora il numero di ennuple è compreso fra zero e |R1| • se il join coinvolge una chiave di R2 e un vincolo di integrità referenziale, allora il numero di ennuple è pari a |R1 |

Capo Mori Bruni

Capo Mori Bruni Mori Bruni

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Cardinalità del join

43

24/09/2002

Cardinalità del join, 2

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

45

Impiegato Reparto Rossi A Neri B Bianchi B

Capo Mori Bruni

Capo Mori Mori

• alcune ennuple non contribuiscono al risultato: vengono "tagliate fuori" 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

46

Join esterno

• Il join esterno estende, con valori nulli, le ennuple che verrebbero tagliate fuori da un join (interno) • esiste in tre versioni: • sinistro, destro, completo

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Reparto B C

Impiegato Reparto Neri B Bianchi B

Join esterno

24/09/2002

44

Join, una difficoltà

• R1(A,B) , R2 (B,C) • in generale 0 ≤ |R1 JOIN R2| ≤ |R1 | × |R2| • se B è chiave in R2 0 ≤ |R1 JOIN R2| ≤ |R1 | • se B è chiave in R2 ed esiste vincolo di integrità referenziale fra B (in R1) e R2: |R 1 JOIN R2| = |R 1| 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

47

• sinistro: mantiene tutte le ennuple del primo operando, estendendole con valori nulli, se necessario • destro: ... del secondo operando ... • completo: … di entrambi gli operandi ...

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

48

8

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Impiegati Impiegato Reparto Rossi A Neri B Bianchi B

Reparti Reparto B C

www.copy-riot.org

Impiegati Impiegato Reparto Rossi A Neri B Bianchi B

Capo Mori Bruni

Impiegati JOINLEFT Reparti Impiegato Reparto Neri B Bianchi B Rossi A 24/09/2002

Reparti Reparto B C

Capo Mori Bruni

Impiegati JOINRIGHT Reparti

Capo Mori Mori

Impiegato Reparto Neri B Bianchi B NULL C

NULL

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

49

24/09/2002

Capo Mori Mori Bruni

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

50

Join e proiezioni Impiegati Impiegato Reparto Rossi A Neri B Bianchi B

Reparti Reparto B C

Impiegato Reparto Rossi A Neri B Bianchi B

Capo Mori Bruni

Impiegato Reparto Neri B Bianchi B

Impiegati JOINFULL Reparti Impiegato Reparto Neri B Bianchi B Rossi A NULL C 24/09/2002

Capo Mori Mori

Impiegato Reparto Neri B Bianchi B

NULL

Bruni

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

51

24/09/2002

Proiezioni e join Impiegato Reparto Capo Neri B Mori Bianchi B Bruni Verdi A Bini Impiegato Reparto Reparto Capo Neri B B Mori Bianchi B B Bruni Verdi A A Bini Impiegato Reparto Capo Neri B Mori Bianchi B Bruni Neri B Bruni Bianchi B Mori Verdi A Bini 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Reparto B C

Capo Mori Bruni

Capo Mori Mori

Reparto B

Capo Mori

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

52

Join e proiezioni • R 1 (X 1), R 2(X 2 ) PROJX1 (R 1 JOIN R2 ) ⊆ R 1 • R(X), X = X 1 ∪ X2 (PROJX 1 (R)) JOIN (PROJX 2 (R)) ⊇ R 53

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

54

9

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Prodotto cartesiano

• un join naturale su relazioni senza attributi in comune • contiene sempre un numero di ennuple pari al prodotto delle cardinalità degli operandi (le ennuple sono tutte combinabili )

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

55

• Il prodotto cartesiano, in pratica, ha senso (quasi) solo se seguito da selezione: SELCondizione (R1 JOIN R2) • L'operazione viene chiamata theta -join e indicata con R1 JOINCondizione R2

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Impiegati Impiegato Reparto Rossi A Neri B Bianchi B

57

Reparti Codice A B

Capo Mori Bruni

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Impiegati Impiegato Reparto Rossi A Neri B Bianchi B

Capo Mori Bruni Bruni Mori Bruni Mori Bruni

Reparti Codice A B

Capo Mori Bruni

Impiegati JOIN Reparti Impiegato Reparto Codice Rossi A A Rossi A B Neri B A Neri B B Bianchi B A Bianchi B B 24/09/2002

Capo Mori Bruni Mori Bruni Mori Bruni

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

56

Perché "theta-join"? • La condizione C è spesso una congiunzione (AND) di atomi di confronto A1ϑ A2 dove ϑ è uno degli operatori di confronto (=, >, 40(Impiegati)

SEL Stipendio>40(Impiegati)

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

63

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Matricola Nome 7309 Rossi 5998 Bianchi 5698 Bruni 9553 4076 Mori Neri 5698 8123 Bruni Lupi 4076 Mori 8123 Lupi

• Trovare matricola, nome ed età degli impiegati che guadagnano più di 40 milioni PROJMatricola, Nome, Età

64

Età Stipendio 34 45 37 43 38 42 42 45 35 50 43 46 42 60 45 50 46 60

(SEL Stipendio>40(Impiegati)) PROJMatricola, Nome, Età

( SEL Stipendio>40(Impiegati) ) 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

65

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

66

11

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

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

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

PROJCapo (Supervisione JOIN Impiegato=Matricola (SEL Stipendio>40(Impiegati)))

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

www.copy-riot.org

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

67

• Trovare gli impiegati che guadagnano più del proprio capo, mostrando matricola, nome e stipendio dell'impiegato e del capo

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

69

Equivalenza di espressioni

PROJCapo (Supervisione ) -

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

PROJCapo (Supervisione JOIN Impiegato=Matricola (SEL Stipendio ≤ 40(Impiegati)))

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

70

Un 'equivalenza importante

• Due espressioni sono equivalenti se producono lo stesso risultato qualunque sia l'istanza attuale della base di dati • L'equivalenza è importante in pratica perché i DBMS cercano di eseguire espressioni equivalenti a quelle date, ma meno "costose" 24/09/2002

68

• Trovare le matricole dei capi i cui impiegati guadagnano tutti più di 40 milioni

PROJMatr,Nome,Stip,MatrC,NomeC,StipC (SEL Stipendio>StipC ( RENMatrC,NomeC,StipC,Et àC ← Matr,Nome,Stip,Età(Impiegati) JOIN MatrC=Capo (Supervisione JOIN Impiegato=Matricola Impiegati)))

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

• Push selections (se A è attributo di R1 ) SEL A=10 (R 1 JOIN R 2) = R1 JOIN SEL A=10 ( R2) • Riduce in modo significativo la dimensione del risultato intermedio (e quindi il costo dell'operazione)

71

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

72

12

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Selezione con valori nulli

Un risultato non desiderabile

Matricola Cognome Filiale 7309 Rossi Roma 5998 Neri Milano 9553 Bruni Milano Età > 40

Età 32 45 NULL

(Impiegati)

• la condizione atomica è vera solo per valori non nulli 24/09/2002

∪ SEL Età≤30 (Persone) ≠ Persone • Perché? Perché le selezioni vengono valutate separatamente! • Ma anche SEL Età>30 ∨ Et à≤30 (Persone) ≠ Persone • Perché? Perché anche le condizioni atomiche vengono valutate separatamente! SEL Età>30 (Persone)

Impiegati

SEL

www.copy-riot.org

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

73

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

74

Selezione con valori nulli: soluzione SEL Età > 40 (Impiegati) • la condizione atomica è vera solo per valori non nulli • per riferirsi ai valori nulli esistono forme apposite di condizioni: IS NULL IS NOT NULL • si potrebbe usare (ma non serve) una "logica a tre valori" (vero, falso, sconosciuto) 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

75

• Quindi: SEL Età>30 (Persone) ∪

SEL Età≤30 (Persone) SEL Età IS NULL (Persone)



= SEL Età>30 ∨

Et à≤30 ∨ Età IS NULL

(Persone)

= Persone 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

76

Viste (relazioni derivate) Impiegati Matricola Cognome Filiale 7309 5998 Rossi Neri Milano Roma 5998 9553 Bruni Neri Milano 9553 Bruni Milano

• Rappresentazioni diverse per gli stessi dati (schema esterno) • Relazioni derivate : • relazioni il cui contenuto è funzione del contenuto di altre relazioni (definito per mezzo di interrogazioni) • Relazioni di base: contenuto autonomo • Le relazioni derivate possono essere definite su altre derivate, ma …

Età 32 45 NULL 45 NULL

SEL (Età > 40) OR (Età IS NULL) (Impiegati)

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

77

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

78

13

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Architettura standard (ANSI/SPARC) a tre livelli per DBMS utente

utente

Schema esterno

utente

utente Schema esterno

utente

Schema esterno

www.copy-riot.org

Viste virtuali e materializzate • Due tipi di relazioni derivate: • viste materializzate • relazioni virtuali (o viste)

Schema logico

Schema interno

BD 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

79

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Viste materializzate

Viste virtuali

• relazioni derivate memorizzate nella base di dati • vantaggi: • immediatamente disponibili per le interrogazioni • svantaggi: • ridondanti • appesantiscono gli aggiornamenti • sono raramente supportate dai DBMS 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

81

• relazioni virtuali (o viste): • sono supportate dai DBMS (tutti) • una interrogazione su una vista viene eseguita "ricalcolando" la vista (o quasi)

24/09/2002

Viste, esempio Afferenza Impiegato Reparto Rossi A Neri B Bianchi B Bianchi B • una vista: Supervisione = PROJ Impiegato,

24/09/2002

Direzione Reparto A B B

80

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

82

Interrogazioni sulle viste Capo Mori Bruni Bruni

• Sono eseguite sostituendo alla vista la sua definizione: SEL Capo='Leoni' (Supervisione )

viene eseguita come Capo (Afferenza JOIN Direzione)

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

83

PROJ Impiegato,

24/09/2002

SEL Capo='Leoni'( (Afferenza JOIN Direzione))

Capo

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

84

14

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Viste come strumento di programmazione

Viste, motivazioni • Schema esterno: ogni utente vede solo • ciò che gli interessa e nel modo in cui gli interessa, senza essere distratto dal resto • ciò che e' autorizzato a vedere (autorizzazioni) • Strumento di programmazione : • si può semplificare la scrittura di interrogazioni: espressioni complesse e sottoespressioni ripetute • Utilizzo di programmi esistenti su schemi ristrutturati Invece: • L'utilizzo di viste non influisce sull'efficienza delle interrogazioni 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

85

• Trovare gli impiegati che hanno lo stesso capo di Rossi • Senza vista: PROJ Impiegato (Afferenza JOIN Direzione) JOIN REN ImpR,RepR ← Imp,Reparto ( SEL Impiegato='Rossi' (Afferenza JOIN Direzione ))

• Con la vista:

PROJ Impiegato (Supervisione) JOIN REN ImpR,RepR ← Imp,Reparto ( SEL Impiegato='Rossi' (Supervisione )) 24/09/2002

Viste e aggiornamenti, attenzione Afferenza Impiegato Rossi Neri Verdi Supervisione

Reparto A B A

Direzione Reparto A B B C

Impiegato Rossi Neri Verdi

Capo Mori Bruni Bruni

Capo Mori Bruni Mori

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

87

Una convenzione e notazione alternativa per i join • Nota: è sostanzialmente l'approccio usato in SQL • Ignoriamo il join naturale (cioè non consideriamo implicitamente condizioni su attributi con nomi uguali) • Per "riconoscere" attributi con lo stesso nome gli premettiamo il nome della relazione • Usiamo "assegnazioni" (viste) per ridenominare le relazioni (e gli attributi solo quando serve per l'unione) 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

86

Viste e aggiornamenti

• Vogliamo inserire , nella vista, il fatto che Lupi ha come capo Bruni; oppure che Belli ha come capo Falchi; come facciamo? 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

89

• "Aggiornare una vista": • modificare le relazioni di base in modo che la vista, "ricalcolata" rispecchi l'aggiornamento • L'aggiornamento sulle relazioni di base corrispondente a quello specificato sulla vista deve essere univoco • In generale però non è univoco! • Ben pochi aggionamenti sono ammissibili sulle viste 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

88

• Trovare gli impiegati che guadagnano più del proprio capo, mostrando matricola, nome e stipendio dell'impiegato e del capo PROJMatr,Nome,Stip,MatrC,NomeC,StipC (SEL Stipendio>StipC ( RENMatrC,NomeC,StipC,Et àC ← Matr,Nome,Stip,Età(Impiegati) JOIN MatrC=Capo (Supervisione JOIN Impiegato=Matricola Impiegati)))

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

90

15

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

PROJMatr,Nome,Stip,MatrC,NomeC,StipC (SEL Stip>StipC(

Calcolo relazionale

RENMatrC,NomeC,StipC,Et àC ← Matr,Nome,Stip,Età(Imp) JOIN MatrC=Capo (Sup JOIN Imp=Matr Imp))) Capi := Imp PROJImp.Matr, Imp.Nome, Imp.Stip,Capi.Matr,Capi.Nome, Capi.Stip (SEL Imp.Stip>Capi.Stip( Capi JOIN Capi.Matr=Capo (Sup JOIN Imp=Imp.Matr Imp)))

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

91

• Una famiglia di linguaggi dichiarativi, basati sul calcolo dei predicati del primo ordine • Diverse versioni: • calcolo relazionale su domini • calcolo su ennuple con dichiarazioni di range

24/09/2002

Calcolo su domini, sintassi e semantica

• Semantica: il risultato e' una relazione su A1, …, Ak che contiene ennuple di valori per x 1, …, x k che rendono vera la formula f Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

92

Commenti

• Le espressioni hanno la forma: { A1: x1, …, Ak: xk | f } • f e' una formula (con connettivi booleani e quantificatori) • A1: x1, …, Ak: xk "target list": • A1, …, Ak attributi distinti (anche non nella base di dati) • x 1, …, xk variabili distinte

24/09/2002

www.copy-riot.org

93

• Differenze rispetto al calcolo dei predicati (per chi lo conosce): • simboli di predicato • relazioni nella base di dati • predicati "standard" predefiniti (=, >, ...) • non ci sono "simboli di funzione" • interessano (quasi) solo "formule aperte" • utilizziamo notazione non posizionale

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

94

Base di dati per gli esempi

Esempio 0a

Impiegati(Matricola,Nome, Età, Stipendio) Supervisione(Capo, Impiegato)

• Trovare matricola, nome, età e stipendio degli 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, Basi di dati, Capitolo 3

95

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

96

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 ) { 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)} 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

97

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

24/09/2002

Esempio 2

PROJCapo (Supervisione JOINImpiegato=Matricola (SEL Stipendio>40(Impiegati))) { Capo: c | Supervisione(Capo:c,Impiegato:m) ∧ Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40 } Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

99

• Trovare nome e stipendio dei capi degli impiegati che guadagnano più di 40 milioni PROJ NomeC,StipC (RENMatrC,NomeC,StipC,Et àC← Matr,Nome, Stip,Et à(Impiegati ) JOIN MatrC=Capo (Supervisione JOIN Impiegato=Matricola (SELStipendio>40(Impiegati)))) { NomeC: nc, StipC: sc | 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

Esempio 4

{ Matr: m, Nome: n, Stip: s, MatrC: c, NomeC: nc, StipC: sc | Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ Supervisione(Capo:c,Impiegato:m) ∧ Impiegati(Matricola: c, Nome: nc, Età: ec, Stipendio: sc) ∧ s > sc} Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

100

Esempio 5

• Trovare gli impiegati che guadagnano più del rispettivo capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo PROJ Matr,Nome, Stip,MatrC,NomeC,StipC (SELStipendio>StipC(RENMatrC,NomeC,S t i p C,Età C ← Matr,Nome, Stip,Età(Impiegati ) JOIN MatrC=Capo (Supervisione JOIN Impiegato=Matricola ( (Impiegati ))))

24/09/2002

98

Esempio 3

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

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

101

• Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di 40 milioni. PROJMatricola ,Nome (Impiegati JOIN Matricola =Capo (PROJCapo (Supervisione) PROJCapo (Supervisione JOIN Impiegato=Matricola ( SELStipendio ≤ 40(Impiegati)))) {Matricola: c, Nome: n | Impiegati(Matricola: c, Nome: n, Età: e, Stipendio: s) ∧ Supervisione(Capo:c, Impiegato:m) ∧ ¬ ∃m'(∃n'(∃e'(∃s'(Impiegati( Matr: m', Nome: n', Età: e', Stip: s') ∧ Supervisione(Capo:c, Impiegato:m') ∧ s' ≤ 40))))} 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

102

17

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Quantificatori esistenziali o universali?

Calcolo su domini, discussione

• Sono intercambiabili, per le leggi di De Morgan: {Matricola: c, Nome: n | Impiegati(Matricola: c, Nome: n, Età: e, Stipendio: s) ∧ Supervisione(Capo:c, Impiegato:m) ∧ ¬ ∃m'(∃n'(∃e'(∃s'(Impiegati( Matr: m', Nome: n', Età: e', Stip: s') ∧ Supervisione(Capo:c, Impiegato:m') ∧ s' ≤ 40))))} {Matricola: c, Nome: n | Impiegati(Matricola: c, Nome: n, Età: e, Stipendio: s) ∧ Supervisione(Capo:c, Impiegato:m) ∧ ∀m'(∀n'(∀e'(∀s'(¬(Impiegati( Matr:m', Nome:n', Età:e', Stip:s') ∧ Supervisione(Capo:c, Impiegato:m')) ∨ s' > 40))))} 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

www.copy-riot.org

103

• Pregi: • dichiaratività • Difetti: • "verbosità": tante variabili! • espressioni senza senso: { A: x | ¬ R(A: x) } { A: x, B: y | R(A: x) } { A: x, B: y | R(A: x) ∧ y=y } queste espressioni sono "dipendenti dal dominio" e vorremmo evitarle; nell'algebra espressioni come queste non sono formulabili: l'algebra è indipendente dal dominio 24/09/2002

• Calcolo e algebra sono "equivalenti " • per ogni espressione del calcolo relazionale che sia indipendente dal dominio esiste un'espressione dell'algebra relazionale equivalente a essa • per ogni espressione dell'algebra relazionale esiste un'espressione del calcolo relazionale equivalente a essa (e di conseguenza indipendente dal dominio)

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

105

• Per superare le limitazioni del calcolo su domini: • dobbiamo "ridurre" le variabili; un buon modo: una variabile per ciascuna ennupla • far si' che i valori provengano dalla base di dati • Il calcolo su ennuple con dichiarazioni di range risponde ad entrambe le esigenze

24/09/2002

Calcolo su ennuple con dichiarazioni di range, sintassi • Le espressioni hanno la forma: { TargetList | RangeList| Formula } • RangeList elenca le variabili libere della Formula ognuna con il relativo campo di variabilità (una relazione) • TargetList ha elementi del tipo Y: x.Z (oppure x.Z o anche x.*) • Formula ha: • atomi di confronto x.A ϑ c, x.A ϑ y.B • connettivi • quantificatori che associano un range alle variabili ∃x(R)(...) ∀x(R)(...) 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

104

Calcolo su ennuple con dichiarazioni di range

Calcolo e algebra

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

107

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

106

Esempio 0a • Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 milioni SELStipendio>40(Impiegati) { Matricola: m, Nome: n, Età: e, Stipendio: s | Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40 } { i.* | i(Impiegati) | i.Stipendio > 40 } 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

108

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)} { i.(Matricola,Nome,Età) | i(Impiegati) | }

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

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

109

24/09/2002

Esempio 2

{ Capo: c | Supervisione(Capo:c,Impiegato:m) ∧ Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40 } { s.Capo | i(Impiegati) , s(Supervisione) | i.Matricola=s.Impiegato ∧ i.Stipendio > 40 } Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

111

• Trovare nome e stipendio dei capi degli impiegati che guadagnano più di 40 milioni { NomeC: nc, StipC: sc | 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) } { NomeC,StipC: i'.(Nome,Stip) | i'(Impiegati), s(Supervisione), i(Impiegati) | i'.Matricola=s.Capo ∧ i.Matricola=s.Impiegato ∧ i.Stipendio > 40 } 24/09/2002

Esempio 4

{ i.(Nome,Matr,Stip), NomeC,MatrC,StipC: i'.(Nome,Matr,Stip) | i'(Impiegati), s(Supervisione), i(Impiegati) | i'.Matricola=s.Capo ∧ i.Matricola=s.Impiegato ∧ i.Stipendio > i'.Stipendio } Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

112

Esempio 5

• Trovare gli impiegati che guadagnano più del rispettivo capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo { Matr: m, Nome: n, Stip: s, NomeC : nc, StipC: sc | Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ Supervisione(Capo:c,Impiegato:m) ∧ Impiegati(Matricola: c, Nome: n c, Età: ec, Stipendio: sc) ∧ s > sc}

24/09/2002

110

Esempio 3

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

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

113

• Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di 40 milioni. {Matricola: c, Nome: n | Impiegati(Matricola: c, Nome: n, Età: e, Stipendio: s) ∧ Supervisione(Capo:c, Impiegato:m) ∧ ¬ ∃m'(∃n'(∃e'(∃s'(Impiegati( Matr: m', Nome: n', Età: e', Stip: s') ∧ Supervisione(Capo:c, Impiegato:m') ∧ s' ≤ 40} { i.(Matricola, Nome) | s(Supervisione), i(Impiegati) | i.Matricola=s.Capo ∧ ¬(∃i'(Impiegati)(∃s'(Supervisione) (s.Capo=s'.Capo ∧ s'.Impiegato=i'.Matricola ∧ i'.Stipendio ≤ 40)))}

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

114

19

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Calcolo e algebra relazionale: limiti

Attenzione! • Il calcolo su ennuple con dichiarazioni di range non permette di esprimere alcune interrogazioni importanti, in particolare le unioni: R1(AB) ∪ R2(AB) • Quale potrebbe essere il range per una variabile? Oppure due variabili? • Nota: intersezione e differenza sono esprimibili • Per questa ragione SQL (che è basato su questo calcolo) prevede un operatore esplicito di unione, ma non tutte le versioni prevedono intersezione e differenza 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

115

Supervisione(Impiegato, Capo)

24/09/2002

Impiegato Rossi Neri Lupi Rossi

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

24/09/2002

Superiore Mori Lupi Bruni Falchi Falchi

117

Impiegato Rossi Neri Lupi Falchi

24/09/2002

Chiusura transitiva, impossibile! • Non esiste in algebra e calcolo relazionale la possibilità di esprimere l'interrogazione che, per ogni relazione binaria, ne calcoli la chiusura transitiva • Per ciascuna relazione, è possibile calcolare la chiusura transitiva, ma con un'espressione ogni volta diversa: • quanti join servono? • non c'è limite! 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

116

• Nell'esempio, basterebbe il join della relazione con se stessa, previa opportuna ridenominazione • Ma: Impiegato Superiore

• Per ogni impiegato, trovare tutti i superiori (cioè il capo, il capo del capo, e cosi' via) Capo Mori Lupi Bruni Falchi

• Calcolo e algebra sono sostanzialmente equivalenti: l'insieme di interrogazioni con essi esprimibili è quindi significativo; il concetto è robusto • Ci sono però interrogazioni interessanti non esprimibili: • calcolo di valori derivati: possiamo solo estrarre valori, non calcolarne di nuovi; calcoli di interesse: • a livello di ennupla o di singolo valore (conversioni somme, differenze, etc.) • su insiemi di ennuple (somme, medie, etc.) le estensioni sono ragionevoli, le vedremo in SQL • interrogazioni inerentemente ricorsive, come la chiusura transitiva

Chiusura transitiva, come si fa?

Chiusura transitiva

Impiegato Rossi Neri Lupi

www.copy-riot.org

119

Capo Mori Lupi Bruni Falchi Leoni

Rossi Neri Lupi Rossi Lupi Rossi

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

Mori Lupi Bruni Falchi Falchi Leoni Leoni 118

Datalog • Un linguaggio di programmazione logica per basi di dati derivato dal Prolog • Utilizza predicati di due tipi: • estensionali: relazioni della base di dati • intensionali: corrispondono alle viste • Il linguaggio è basato su regole utilizzate per "definire" i predicati estensionali

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

120

20

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Datalog, sintassi

Esempio -1

• Regole: testa ← corpo • testa è un predicato atomico (intensionale) • corpo è una lista (congiunzione) di predicati atomici • Le interrogazioni sono specificate per mezzo di predicati atomici (convenzionalmente preceduti da "?")

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

• Trovare matricola, nome, età e stipendio degli impiegati che hanno 30 anni { Matricola: m, Nome: n, Età: e, Stipendio: s | Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s = 30 } ? Impiegati(Matricola: m, Nome: n, Età: 30, Stipendio: s)

121

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

122

Esempio 0b

Esempio 0a • Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 milioni

• Trovare matricola, nome ed età di tutti gli impiegati 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 ImpRicchi(Matricola: m, Nome: n, Età: e, Stipendio: s) ← Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) , s >40

InfoPubbliche(Matricola: m, Nome: n, Età: e) ← 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, Basi di dati, Capitolo 3

123

24/09/2002

Esempio 2

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

124

Esempio 5

• Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni { Capo: c | Supervisione(Capo:c,Impiegato:m) ∧ Impiegati(Matricola: m, Nome: n, Età: e, Stipendio: s) ∧ s > 40 } CapiDeiRicchi (Capo:c) ← ImpRicchi(Matricola: m, Nome: n, Età: e, Stipendio: s), Supervisione (Capo:c,Impiegato:m) ? CapiDeiRicchi (Capo:c)



Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di 40 milioni.



serve la negazione CapiDiNonRicchi (Capo:c) ← Supervisione (Capo:c,Impiegato:m), Impiegati (Matricola: m, Nome: n, Età: e, Stipendio: s) , s ≤ 40 CapiSoloDiRicchi (Matricola: c, Nome: n) ← Impiegati (Matricola: c, Nome: n, Età: e, Stipendio: s) , Supervisione (Capo:c,Impiegato:m), not CapiDiNonRicchi (Capo:c) ? CapiSoloDiRicchi (Matricola: c, Nome: n)

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

125

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

126

21

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Esempio 6

Datalog, semantica • La definizione della semantica delle regole ricorsive è delicata (in particolare con la negazione) • Potere espressivo: • Datalog non ricorsivosenza negazione è equivalente al calcolo senza negazione e senza quantificatore universale • Datalog non ricorsivocon negazione è equivalente al calcolo e all'algebra • Datalog ricorsivo senza negazione e calcolo sono incomparabili • Datalog ricorsivocon negazione è più espressivo di calcolo e algebra

• Per ogni impiegato, trovare tutti i superiori. • Serve la ricorsione Superiore (Impiegato: i, SuperCapo: c) ← Supervisione (Impiegato: i, Capo: c) Superiore (Impiegato: i, SuperCapo: c) ← Supervisione (Impiegato: i, Capo: c'), Superiore (Impiegato: c', SuperCapo: c) 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

www.copy-riot.org

127

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3

128

22

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

SQL • originariamente "Structured Query Language", ora "nome proprio" • linguaggio con varie funzionalità: • contiene sia il DDL sia il DML • ne esistono varie versioni • vediamo gli aspetti essenziali, non i dettagli

Atzeni, Ceri, Paraboschi, Torlone

Basi di dati McGraw -Hill, 1996-2002 Capitolo 4:

SQL 24/09/2002

24/09/2002

SQL: "storia"

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

• Istruzione CREATE TABLE: • definisce uno schema di relazione e ne crea un’istanza vuota • specifica attributi, domini e vincoli

3

24/09/2002

CREATE TABLE, esempio

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

4

Domini • Domini elementari (predefiniti) • Domini definiti dall'utente (semplici, ma riutilizzabili)

CREATE TABLE Impiegato( Matricola CHAR(6) PRIMARY KEY, Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, Dipart CHAR(15), Stipendio NUMERIC(9) DEFAULT 0, FOREIGN KEY( Dipart) REFERENCES Dipartimento( NomeDip), UNIQUE (Cognome,Nome) ) 24/09/2002

2

Definizione dei dati in SQL

• prima proposta SEQUEL (1974); • prime implementazioni in SQL/DS e Oracle (1981) • 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, Basi di dati, Capitolo 4

5

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

6

1

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Domini elementari

Definizione di domini

• Carattere: singoli caratteri o stringhe, anche di lunghezza variabile • Bit: singoli booleani o stringhe • Numerici, esatti e approssimati • 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, Basi di dati, Capitolo 4

7

• Istruzione CREATE DOMAIN: • definisce un dominio (semplice), utilizzabile in definizioni di relazioni, anche con vincoli e valori di default

24/09/2002

CREATE DOMAIN, esempio

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

9

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

10

CREATE TABLE, esempio

• due forme: • nella definzione di un attributo, se forma da solo la chiave • come elemento separato

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

8

• NOT NULL • UNIQUE definisce chiavi • PRIMARY KEY: chiave primaria (una sola, implica NOT NULL) • CHECK, vedremo più avanti

UNIQUE e PRIMARY KEY

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

Vincoli intrarelazionali

CREATE DOMAIN Voto AS SMALLINT DEFAULT NULL CHECK ( value >=18 AND value 40 OR Età IS NULL

(Impiegati)

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

36

6

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

• Gli impiegati la cui età è o potrebbe essere maggiore di 40 SEL

Età > 40 OR Età IS NULL

Selezione, proiezione e join • Istruzioni SELECT con una sola relazione nella clausola FROM permettono di realizzare: • selezioni, proiezioni, ridenominazioni • con più relazioni nella FROM si realizzano join (e prodotti cartesiani)

(Impiegati)

select * from impiegati where eta > 40 or eta is null

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

www.copy-riot.org

37

SQL e algebra relazionale

24/09/2002

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

select R1.A1, R2.A4 from R1, R2 where R1.A2 = R2.A3

select R1.A1, R2.A4 from R1, R2 where R1.A2 = R2.A3

• prodotto cartesiano (FROM) • selezione (WHERE) • proiezione (SELECT) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

PROJ A1,A4 (SEL A2=A3 (R1 JOIN R2))

39

• possono essere necessarie ridenominazioni • nel prodotto cartesiano • nella target list

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

40

select X.A1 AS B1, Y.A4 AS B2 from R1 X, R2 Y, R1 Z where X.A2 = Y.A3 AND Y.A4 = Z.A1 REN B1,B2← A1,A4 ( PROJ A1,A4 ( SEL A2 = A3 AND A4 = C1 (

select X.A1 AS B1, ... from R1 X, R2 Y, R1 Z where X.A2 = Y.A3 AND ...

24/09/2002

38

SQL e algebra relazionale, 2

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

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

R1 JOIN R2 JOIN REN

41

24/09/2002

C1,C2 ← A1,A2

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

(R1))))

42

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 noi ne stiamo vedendo la semantica • In pratica, i DBMS eseguono le operazioni in modo efficiente, ad esempio: • eseguono le selezioni al più presto • se possibile, eseguono join e non prodotti cartesiani

• La capacità dei DBMS di "ottimizzare" le interrogazioni, rende (di solito) non necessario preoccuparsi dell'efficienza quando si specifica un'interrogazione • È perciò più importante preoccuparsi della chiarezza (anche perché così è più difficile sbagliare …)

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

43

Proiezione, attenzione

24/09/2002

select cognome, filiale from impiegati

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

Cognome Neri Neri Rossi Rossi

PROJ Cognome, Filiale (Impiegati)

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

45

Maternità Madre Figlio Persone Nome Età Reddito Luisa Maria Andrea 27 21 Luisa Luigi Aldo 25 15 Anna Olga Maria 55 42 Anna Filippo Anna 50 35 Maria Andrea Filippo 26 30 Maria Aldo Luigi 50 40 Paternità Padre Figlio Franco 60 20 Sergio Franco Olga 30 41 Luigi Olga Sergio 85 35 Luigi Filippo Luisa 75 87 Franco Andrea FrancoAtzeni-Ceri-Paraboschi-Torlone, Aldo 24/09/2002 47 Basi di dati, Capitolo 4

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

24/09/2002

Filiale Napoli Milano Roma Roma

44

select distinct cognome, filiale from impiegati

Cognome Neri Neri Rossi

Filiale Napoli Milano Roma

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

46

Selezione, proiezione e join •

I padri di persone che guadagnano più di venti milioni PROJPadre(paternita JOIN Figlio =Nome SEL Reddito>20 (persone)) select distinct padre from persone, paternita where figlio = nome and reddito > 20

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

48

8

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Join naturale

www.copy-riot.org

• 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 (RENNP,EP,RP ß Nome,Eta,Reddito(persone) JOINNP=Padre (paternita JOIN Figlio =Nome persone)))

paternita JOIN maternita select paternita.figlio,padre, madre from maternita, paternita where paternita.figlio = maternita.figlio

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

select f.nome, f.reddito, p.reddito from persone p, paternita, persone f where p.nome = padre and figlio = f.nome and f.reddito > p.reddito 49

24/09/2002

SELECT, con ridenominazione del risultato

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

50

Join esplicito • Padre e madre di ogni persona

select figlio, f.reddito as reddito, p.reddito as redditoPadre from persone p, paternita, persone f where p.nome = padre and figlio = f.nome and .reddito > p.reddito

select paternita.figlio,padre, madre from maternita, paternita 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, Basi di dati, Capitolo 4

51

SELECT con join esplicito, sintassi SELECT … FROM Tabella { … JOIN Tabella ON CondDiJoin }, … [ WHERE AltraCondizione ]

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

52

• Le persone che guadagnano più dei rispettivi padri; mostrare nome, reddito e reddito del padre select f.nome, f.reddito, p.reddito 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, Basi di dati, Capitolo 4

53

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

54

9

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Ulteriore estensione: join naturale (meno diffuso) PROJ Figlio,Padre,Madre( paternita JOIN Figlio = Nome REN Nome=Figlio (maternita))

select madre, paternita.figlio, padre from maternita join paternita on paternita.figlio = maternita.figlio

select paternita.figlio, padre, madre from paternita left outer join maternita on paternita.figlio = maternita.figlio

select madre, paternita.figlio, padre from maternita natural join paternita Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

• Padre e, se nota, madre di ogni persona select paternita.figlio, padre, madre from paternita left join maternita on paternita.figlio = maternita.figlio

paternita JOIN maternita

24/09/2002

Join esterno: "outer join"

• outer e' opzionale 55

24/09/2002

• Nome e reddito delle persone con meno di trenta anni in ordine alfabetico

select paternita.figlio, padre, madre from maternita join paternita on maternita.figlio = paternita.figlio

select nome, reddito from persone where eta < 30 order by nome

select paternita.figlio, padre, madre from maternita left outer join paternita on maternita.figlio = paternita.figlio select paternita.figlio, padre, madre from maternita full outer join paternita on maternita.figlio = paternita.figlio Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

57

select nome, reddito from persone where eta < 30

select nome, reddito from persone where eta < 30 order by nome

Persone

Persone

Nome Reddito Andrea 21 Aldo 15 Filippo 30

Nome Reddito Aldo 15 Andrea 21 Filippo 30

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

56

Ordinamento del risultato

Outer join

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

59

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

58

Operatori aggregati • Nelle espressioni della target list possiamo avere anche espressioni che calcolano valori a partire da insiemi di ennuple: • conteggio, minimo, massimo, media, totale • sintassi base (semplificata): Funzione ( [ DISTINCT ] * ) Funzione ( [ DISTINCT ] Attributo )

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

60

10

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Paternità

Operatori aggregati: COUNT • Il numero di figli di Franco select count(*) as NumFigliDiFranco from Paternita where Padre = 'Franco' • l’operatore aggregato (count) viene applicato al risultato dell’interrogazione: select * from Paternita where Padre = 'Franco' 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

Padre Sergio Luigi Luigi Franco Franco

Figlio Franco Olga Filippo Andrea Aldo

NumFigliDiFranco 2

61

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

62

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 avg(reddito) from persone join paternita on nome=figlio where padre='Franco'

select count(distinct reddito) from persone Persone

24/09/2002

Nome Andrea Aldo Maria Anna

Età Reddito 27 21 NULL 25 55 21 50 35

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

63

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

64

Operatori aggregati e target list

Operatori aggregati e valori nulli

• un’interrogazione scorretta: select avg(reddito) as redditomedio from persone Persone

24/09/2002

Nome Andrea Aldo Maria Anna

select nome, max(reddito) from persone

Età Reddito 27 30 NULL 25 55 36 50 36

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

• di chi sarebbe il nome? La target list deve essere omogenea select min(eta), avg(reddito) from persone 65

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

66

11

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Operatori aggregati e raggruppamenti • Le funzioni possono essere applicate a partizioni delle relazioni • Clausola GROUP BY: GROUP BY listaAttributi

www.copy-riot.org

Operatori aggregati e raggruppamenti • Il numero di figli di ciascun padre select padre, count(*) AS NumFigli from paternita group by Padre paternita

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

67

Semantica di interrogazioni con operatori aggregati e raggruppamenti

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

68

corretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =p.nome group by padre, p.reddito 69

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

70

WHERE o HAVING?

• I padri i cui figli hanno un reddito medio maggiore di 25 select padre, avg(f.reddito) from persone f join paternita on figlio = nome group by padre having avg(f.reddito) > 25

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

NumFigli 1 2 2

scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =p.nome group by padre

Condizioni sui gruppi

24/09/2002

Padre Sergio Luigi Franco

Raggruppamenti e target list

1. interrogazione senza group by e senza operatori aggregati select * from paternita 2. si raggruppa e si applica l’operatore aggregato a ciascun gruppo

24/09/2002

24/09/2002

Padre Figlio Sergio Franco Luigi Olga Luigi Filippo Franco Andrea Franco Aldo

• I padri i cui figli sotto i 30 anni hanno un reddito medio maggiore di 20 select padre, avg(f.reddito) from persone f join paternita on figlio = nome where eta < 30 group by padre having avg(f.reddito) > 25

71

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

72

12

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Sintassi, riassumiamo

Unione, intersezione e differenza

SelectSQL ::= select ListaAttributiOEspressioni from ListaTabelle [ where CondizioniSemplici ] [ group by ListaAttributiDiRaggruppamento ] [ having CondizioniAggregate ] [ order by ListaAttributiDiOrdinamento ]

• La select da sola non permette di fare unioni; serve un costrutto esplicito:

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

73

select … union [all] select ... • i duplicati vengono eliminati (a meno che si usi all); anche dalle proiezioni! 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

Notazione posizionale! Sergio Luigi Luigi Franco Franco Luisa Luisa Anna Anna Maria Maria

select padre from paternita union select madre from maternita • quali nomi per gli attributi del risultato? • nessuno • quelli del primo operando • … 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

75

24/09/2002

24/09/2002

Figlio Franco Olga Filippo Andrea Aldo Maria Luigi Olga Filippo Andrea Aldo

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

76

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

select padre, figlio from paternita union select madre, figlio from maternita

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

Padre Sergio Luigi Luigi Franco Franco Luisa Luisa Anna Anna Maria Maria

Notazione posizionale, 3

Notazione posizionale, 2 select padre, figlio from paternita union select figlio, madre from maternita

Figlio Franco Olga Filippo Andrea Aldo Maria Luigi Olga Filippo Andrea Aldo

74

77

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

78

13

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Intersezione

Differenza

select Nome from Impiegato intersect select Cognome as Nome from Impiegato

select Nome from Impiegato except select Cognome as Nome 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, Basi di dati, Capitolo 4

79

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

80

Interrogazioni nidificate • nome e reddito del padre di Franco

• le condizioni atomiche permettono anche • il confronto fra un attributo (o più, vedremo poi) e il risultato di una sottointerrogazione • quantificazioni esistenziali

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

select Nome, Reddito from Persone, Paternita where Nome = Padre and Figlio = 'Franco' select Nome, Reddito from Persone where Nome = ( select Padre from Paternita where Figlio = 'Franco') 81

Interrogazioni nidificate, commenti • La forma nidificata è “meno dichiarativa”, ma talvolta più leggibile (richiede meno variabili) • La forma piana e quella nidificata possono essere combinate • Le sottointerrogazioni non possono contenere operatori insiemistici (“l’unione si fa solo al livello esterno”); la limitazione non è significativa 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

83

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

82

• Nome e reddito dei padri di persone che guadagnano più di 20 milioni select distinct P.Nome, P.Reddito from Persone P, Paternita , Persone F where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20 select Nome, Reddito from Persone where Nome in (select Padre from Paternita where Figlio = any (select Nome from Persone where Reddito > 20)) 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

84

14

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

• 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 where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20

• La prima versione di SQL prevedeva solo la forma nidificata (o strutturata), con una sola relazione in ogni clausola FROM. Insoddisfacente: • la dichiaratività è limitata • non si possono includere nella target list attributi di relazioni nei blocchi interni

select Nome, Reddito from Persone where Nome in (select Padre from Paternita, Persone where Figlio = Nome and Reddito > 20)

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

85

24/09/2002

• Nome e reddito dei padri di persone che guadagnano più di 20 milioni, con indicazione del reddito del figlio

87

24/09/2002



Quantificazione esistenziale • Ulteriore tipo di condizione • EXISTS ( Sottoespressione )

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

select * from Persone where exists (

89

88

Le persone che hanno almeno un figlio

exists (

24/09/2002

86

• regole di visibilità: • non è possibile fare riferimenti a variabili definite in blocchi più interni • se un nome di variabile è omesso, si assume riferimento alla variabile più “vicina” • in un blocco si può fare riferimento a variabili definite in blocchi più esterni; la semantica base (prodotto cartesiano, selezione, proiezione) non funziona più, vedremo presto

select Nome, Reddito, ???? from Persone where Nome in (select Padre from Paternita where Figlio = any (select Nome from Persone where Reddito > 20)) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

Interrogazioni nidificate, commenti, 3

select distinct P.Nome, P.Reddito, F.Reddito from Persone P, Paternita , Persone F where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20

24/09/2002

www.copy-riot.org

24/09/2002

select * from Paternita where Padre = Nome) or select * from Maternita where Madre = Nome)

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

90

15

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli



I padri i cui figli guadagnano tutti più di venti milioni

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

91

select * from Impiegato where Dipart in (select Nome from Dipartimento D1 where Nome = 'Produzione') or Dipart in (select Nome from Dipartimento D2 where D2.Citta = D1.Citta) 93

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

94

Massimo e nidificazione • La persona (o le persone) con il reddito massimo

select Nome from Impiegato except select Cognome as Nome from Impiegato select Nome from Impiegato I where not exists (select * from Impiegato where Cognome = I.Nome)

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

92

select * from Persone F where Reddito > 30 or exists (select * from Paternita, Persone P where F.Nome = Figlio and Padre = P.Nome and P.Reddito > 30)

Differenza e nidificazione

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

select * from Persone where Reddito > 30 union select F.* from Persone F, Paternita, Persone P where F.Nome = Figlio and Padre = P.Nome and P.Reddito > 30

• scorretta:

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

24/09/2002

Disgiunzione e unione (ma non sempre)

Visibilità

24/09/2002

Semantica delle espressioni “correlate” • L’interrogazione interna viene eseguita una volta per ciascuna ennupla dell’interrogazione esterna

select distinct Padre from Paternita Z where not exists ( select * from Paternita W, Persone where W.Padre = Z.Padre and W.Figlio = Nome and Reddito [ WHERE Condizione ]

103

104

• Specifica di vincoli di ennupla (e anche vincoli più complessi)

UPDATE Persone SET Reddito = Reddito * 1.1 WHERE Eta < 30

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

Vincoli di integrità generici: check

UPDATE Persone SET Reddito = 45 WHERE Nome = 'Piero'

24/09/2002

24/09/2002

check ( Condizione )

105

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

106

Vincoli di integrità generici: asserzioni

Check, esempio

• Specifica vincoli a livello di schema

create table Impiegato ( Matricola character(6), Cognome character(20), Nome character(20), Sesso character not null check (sesso in (‘M’,‘F’)) Stipendio integer, Superiore character(6), check (Stipendio = all (select sum (Stipendio) from Impiegato group by Dipart) 24/09/2002

Soluzione con le viste

• Interrogazione scorretta select avg(count(distinct Ufficio)) from Impiegato group by Dipart • Con una vista create view DipartUffici(NomeDip,NroUffici) as select Dipart, count(distinct Ufficio) from Impiegato group by Dipart; select avg(NroUffici) from DipartUffici

select Dip from BudgetStipendi where TotaleStipendi =(select max(TotaleStipendi) from BudgetStipendi)

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

112

Ancora sulle viste

create view BudgetStipendi(Dip,TotaleStipendi) as select Dipart, sum(Stipendio) from Impiegato group by Dipart

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

113

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

114

19

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Viste ricorsive

Viste ricorsive in SQL:1999

• Per ogni impiegato, trovare tutti i superiori, avendo Supervisione (Impiegato, Capo) • Serve la ricorsione ; in Datalog: Superiore (Impiegato: i, SuperCapo: c) ← Supervisione (Impiegato: i, Capo: c) Superiore (Impiegato: i, SuperCapo: c) ← Supervisione (Impiegato: i, Capo: c'), Superiore (Impiegato: c', SuperCapo: c) 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

www.copy-riot.org

115

with recursive Superiore(Imp,Supercapo ( ( select Imp, Capo as Supercapo from Supervisione) union ( select Superiore.Imp, Supercapo from Supervisione, Superiore where Supervisione.Capo = Superiore.Imp) ) select * from Superiore

24/09/2002

Controllo dell'accesso

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

117

• Un privilegio è caratterizzato da: • la risorsa cui si riferisce • l'utente che concede il privilegio • l'utente che riceve il privilegio • l'azione che viene permessa • la trasmissibilità del privilegio

24/09/2002

• • • • •

insert: permette di inserire nuovi oggetti (ennuple) update: permette di modificare il contenuto delete: permette di eliminare oggetti select: permette di leggere la risorsa references: permette la definizione di vincoli di integrità referenziale verso la risorsa (può limitare la possibilità di modificare la risorsa) • usage : permette l'utilizzo in una definizione (per esempio, di un dominio)

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

118

grant e revoke

Tipi di privilegi offerti da SQL

24/09/2002

116

Privilegi

• In SQL è possibile specificare chi (utente ) e come ( lettura, scrittura, …) può utilizzare la base di dati (o parte di essa) • Oggetto dei privilegi (diritti di accesso) sono di solito le tabelle, ma anche altri tipi di risorse, quali singoli attributi, viste o domini • Un utente predefinito _system (amministratore della base di dati) ha tutti i privilegi • Il creatore di una risorsa ha tutti i privilegi su di essa 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

119

• Concessione di privilegi: grant < Privileges | all privileges > on Resource to Users [ with grant option ] • grant option specifica se il privilegio può essere trasmesso ad altri utenti grant select on Department to Stefano • Revoca di privilegi revoke Privileges on Resource from Users [ restrict | cascade ]

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

120

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 indivisibile ("atomico"), corretto anche in presenza di concorrenza e con effetti definitivi • Proprietà ("acide"): • Atomicità • Consistenza • Isolamento • Durabilità (persistenza)

• La sequenza di operazioni sulla base di dati viene eseguita per intero o per niente: • trasferimento di fondi da un conto A ad un conto B: o si fanno il prelevamento da A e il versamento su B o nessuno dei due

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

121

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

122

Le transazioni sono … consistenti

Le transazioni sono … isolate

• Al termine dell'esecuzione di una transazione, i vincoli di integrità debbono essere soddisfatti • "Durante" l'esecuzione ci possono essere violazioni, ma se restano alla fine allora la transazione deve essere annullata per intero ("abortita")

• L'effetto di transazioni concorrenti deve essere coerente (ad esempio "equivalente" all'esecuzione separata) • se due assegni emessi sullo stesso conto corrente vengono incassati contemporaneamente si deve evitare di trascurarne uno

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

123

24/09/2002

I risultati delle transazioni sono durevoli

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

124

Transazioni in SQL

• La conclusione positiva di una transazione corrisponde ad un impegno (in inglese commit) a mantenere traccia del risultato in modo definitivo, anche in presenza di guasti e di esecuzione concorrente

24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

125

• Istruzioni fondamentali • begin transaction: specifica l'inizio della transazione (le operazioni non vengono eseguite sulla base di dati) • commit work: le operazioni specificate a partire dal begin transaction vengono eseguite • rollback work: si rinuncia all'esecuzione delle operazioni specificate dopo l'ultimo begin transaction 24/09/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 4

126

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, Basi di dati, Capitolo 4

127

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 eseguire comandi SQL, ma programmi, con poche scelte • SQL non basta, sono necessarie altre funzionalità, per gestire: • input (scelte dell’utente e parametri) • output (con dati che non sono relazioni o se si vuole una presentazione complessa) • per gestire il controllo

Atzeni, Ceri, Paraboschi, Torlone

Basi di dati McGraw -Hill, 1996-2002 Capitolo 5:

SQL nei linguaggi di programmazione 17/10/2002

17/10/2002

SQL e linguaggi di programmazione • Le applicazioni sono scritte in • linguaggi di programmazione tradizionali: • Cobol, C, Java, Fortran • linguaggi “ad hoc”, proprietari e non: • PL/SQL, Informix4GL, Delphi • Vediamo solo l’approccio “tradizionale”, perché più generale 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

3

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

2

Applicazioni ed SQL: architettura SQL Applicazione 1 Java

DBMS Applicazione 2 C

Base di dati Applicazione 3 Delphi

17/10/2002

Risultati Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

4

Una difficoltà importante

Altre differenze, 1

• Conflitto di impedenza (“disaccoppiamento di impedenza”) fra base di dati e linguaggio • linguaggi: operazioni su singole variabili o oggetti • SQL: operazioni su relazioni (insiemi di ennuple)

• Accesso ai dati e correlazione: • linguaggio: dipende dal paradigma e dai tipi disponibili; ad esempio scansione di liste o “navigazione” tra oggetti • SQL: join (ottimizzabile)

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

5

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

6

1

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

SQL e linguaggi di programmazione: tecniche principali

Altre differenze, 2 • tipi di base: • linguaggi: numeri, stringhe, booleani • SQL: CHAR, VARCHAR, DATE, ... • costruttori di tipo: • linguaggio: dipende dal paradigma • SQL: relazioni e ennuple

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

www.copy-riot.org

7

• SQL immerso (“Embedded SQL”) • sviluppata sin dagli anni ’70 • “SQL statico” • SQL dinamico • Call Level Interface (CLI) • più recente • SQL/CLI, ODBC, JDBC 17/10/2002

SQL immerso

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

9

SQL immerso, commenti al codice • EXEC SQL denota le porzioni di interesse del precompilatore: • definizioni dei dati • istruzioni SQL • le variabili del programma possono essere usate come “parametri” nelle istruzioni SQL (precedute da “:”) dove sintatticamente sono ammesse costanti 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

8

SQL immerso, un esempio

• le istruzioni SQL sono “immerse” nel programma redatto nel linguaggio “ospite” • un precompilatore (legato al DBMS) viene usato per analizzare il programma e tradurlo in un programma nel linguaggio ospite (sostituendo le istruzioni SQL con chiamate alle funzioni di una API del DBMS) 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

11

#include main(){ exec sql begin declare section; char *NomeDip = "Manutenzione"; char *CittaDip = "Pisa"; int NumeroDip = 20; exec sql end declare section; exec sql connect to utente@librobd; if (sqlca.sqlcode != 0) { printf("Connessione al DB non riuscita\n"); } else { exec sql insert into Dipartimento values(:NomeDip,:CittaDip,:NumeroDip); exec sql disconnect all; } } 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

10

SQL immerso, commenti al codice, 2 •sqlca è una struttura dati per la comunicazione fra programma e DBMS •sqlcode è un campo di sqlca che mantiene il codice di errore dell’ultimo comando SQL eseguito: • zero: successo • altro valore : errore o anomalia

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

12

2

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

SQL immerso, fasi

Un altro esempio int main() { exec sql connect to universita user pguser identified by pguser; exec sql create table studente (matricola integer primary key, nome varchar(20), annodicorso integer); exec sql disconnect; return 0; }

Sorgente LP + SQL Precompilazione Precompilato L P Compilazione Codice oggetto

Librerie (del DBMS)

Collegamento Eseguibile 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

13

17/10/2002

L’esempio “precompilato”

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

15

• Il precompilatore è specifico della combinazione linguaggio-DBMS-sistema operativo

17/10/2002

Interrogazioni in SQL immerso: conflitto di impedenza

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

16

Cursore

• Il risultato di una select è costituito da zero o piú ennuple : • zero o una: ok -- l’eventuale risultato puó essere gestito in un record • piú ennuple : come facciamo? • 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

14

Note

/* These include files are added by the preprocessor */ #include < ecpgtype.h> #include < ecpglib.h> #include < ecpgerrno.h> #include < sqlca.h> 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, Basi di dati, Capitolo 5

17

Programma

select …

DBMS

Buffer del programma

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

18

3

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Operazioni sui cursori

Nota • Il cursore • accede a tutte le ennuple di una interrogazione in modo globale (tutte insieme o a blocchi – è il DBMS che sceglie la strategia efficiente ) • trasmette le ennuple al programma una alla volta

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

19

write('nome della citta''?'); readln(citta); EXEC SQL DECLARE P CURSOR FOR SELECT NOME, REDDITO FROM PERSONE WHERE CITTA = :citta ; EXEC SQL OPEN P ; EXEC SQL FETCH P INTO :nome, :reddito ; while SQLCODE = 0 do begin write('nome della persona:', nome, 'aumento?'); readln(aumento); EXEC SQL UPDATE PERSONE SET REDDITO = REDDITO + :aumento WHERE CURRENT OF P EXEC SQL FETCH P INTO :nome, :reddito end; EXEC SQL CLOSE CURSOR P 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

21

Definizione del cursore declare NomeCursore [ scroll ] cursor for Select … Esecuzione dell'interrogazione open NomeCursore Utilizzo dei risultati (una ennupla alla volta) fetch NomeCursore into ListaVariabili Disabilitazione del cursore close cursor NomeCursore Accesso alla ennupla corrente (di un cursore su singola relazione a fini di aggiornamento) current of NomeCursore nella clausola where 17/10/2002

20

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

22

Cursori, commenti, 2

• Per aggiornamenti e interrogazioni “scalari” (cioè che restituiscano una sola ennupla) il cursore non serve:

• I cursori possono far scendere la programmazione ad un livello troppo basso, pregiudicando la capacità dei DBMS di ottimizzare le interrogazioni: • se “nidifichiamo” due o più cursori, rischiamo di reimplementare il join!

select Nome, Cognome into :nomeDip, :cognomeDip from Dipendente where Matricola = :matrDip; Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

void VisualizzaStipendiDipart(char NomeDip[]) { char Nome[20], Cognome[20]; long int Stipendio; $ declare ImpDip cursor for select Nome, Cognome, Stipendio from Impiegato where Dipart = :NomeDip; $ open ImpDip; $ fetch ImpDip into :Nome, :Cognome, :Stipendio; printf("Dipartimento %s\n",NomeDip ); while (sqlcode == 0) { printf("Nome e cognome dell'impiegato: %s %s",Nome,Cognome); printf("Attuale stipendio: %d\n",Stipendio); $ fetch ImpDip into :Nome, :Cognome, :Stipendio; } $ close cursor ImpDip; }

Cursori, commenti

17/10/2002

www.copy-riot.org

23

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

24

4

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Esercizio

Output

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

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

www.copy-riot.org

25

Matricola Cognome Nome Materia Data Voto … Materia Data Voto VotoMedio Matricola Cognome Nome Materia Data Voto … Materia Data Voto VotoMedio … 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

26

SQL dinamico

SQL dinamico

• Non sempre le istruzioni SQL sono note quando si scrive il programma • Allo scopo, è stata definita una tecnica completamente diversa, chiamata Dynamic SQL che permette di eseguire istruzioni SQL costruite dal programma (o addirittura ricevute dal programma attraverso parametri o da input) • Non è banale gestire i parametri e la struttura dei risultati (non noti a priori)

• Le operazioni SQL possono essere: • eseguite immediatamente execute immediate SQLStatement • prima “preparate”: prepare CommandName from SQLStatement e poi eseguite (anche più volte): execute CommandName [ into TargetList ] [ using ParameterList]

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

27

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

28

Call Level Interface

SQL immerso vs CLI

• Indica genericamente interfacce che permettono di inviare richieste a DBMS per mezzo di parametri trasmessi a funzioni • standard SQL/CLI (’95 e poi parte di SQL:1999) • ODBC: implementazione proprietaria di SQL/CLI • JDBC: una CLI per il mondo Java

• SQL immerso permette • precompilazione (e quindi efficienza) • uso di SQL completo • CLI • indipendente dal DBMS • permette di accedere a più basi di dati, anche eterogenee

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

29

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

30

5

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

JDBC

I driver JDBC

• Una API (Application Programming Interface) di Java (intuitivamente: una libreria) per l'accesso a basi di dati, in modo indipendente dalla specifica tecnologia • JDBC è una interfaccia, realizzata da classi chiamate driver: • l'interfaccia è standard, mentre i driver contengono le specificità dei singoli DBMS (o di altre fonti informative) 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

31

Il funzionamento di JDBC, in breve • • • •

Caricamento del driver Apertura della connessione alla base di dati Richiesta di esecuzione di istruzioni SQL Elaborazione dei risultati delle istruzioni SQL

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

33



(A titolo di curiosità; può bastare il primo tipo) Esistono quattro tipi di driver (chiamati, in modo molto anonimo, tipo 1, tipo 2, tipo 3, tipo 4): 1. Bridge JDBC-ODBC: richiama un driver ODBC, che deve essere disponibile sul client; è comodo ma potenzialmente inefficiente 2. Driver nativo sul client: richiama un componente proprietario (non necessariamente Java) sul client 3. Driver puro Java con server intermedio ("middleware server"): comunica via protocollo di rete con il server intermedio, che non deve risiedere sul client 4. Driver puro Java, con connessione al DBMS: interagisce direttamente con il DBMS 17/10/2002

Un programma con JDBC

Preliminari dei preliminari: origine dati ODBC

• L'interfaccia JDBC è contenuta nel package java.sql import java.sql.*; • Il driver deve essere caricato (trascuriamo i dettagli) Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); • Connessione: oggetto di tipo Connection che costituisce un collegamento attivo fra programma Java e base di dati; viene creato da String url = "jdbc:odbc:Corsi"; con = DriverManager.getConnection(url); Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

32

import java.sql.*; public class PrimoJDBC { public static void main(String[] arg){ Connection con = null ; try { // Caricamento del driver Class.forName("sun.jdbc.odbc .JdbcOdbcDriver"); // Apertura della connessione String url = "jdbc:odbc:Corsi"; con = DriverManager.getConnection(url); } 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, 34 Basi di dati, Capitolo 5

Preliminari

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

35

• Per utilizzare un driver JDBC-ODBC, la base di dati (o altro) deve essere definita come "origine dati ODBC" • In Windows (con YYY, avendo già definito la base di dati xxx.yyy da collegare): • Pannello di controllo • Opzione "Origini dati ODBC" • Bottone "Aggiungi" ("Add") • Nella finestra di dialogo "Crea Nuova originie dati" selezionare “YYY Driver" e nella successiva • selezionare il file xxx.yyy • attribuirgli un nome (che sarà usato da ODBC e quindi da JDBC) 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

36

6

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Esecuzione dell'interrogazione ed elaborazione del risultato 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); } 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

37

ResultSet

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

39

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

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

• Un'interfaccia i cui oggetti consentono di inviare, tramite una connessione, istruzioni SQL e di ricevere i risultati forniti • Un oggetto di tipo Statement viene creato con il metodo createStatement di Connection • I metodi dell'interfaccia Statement: • executeUpdate per specificare aggiornamenti o istruzioni DDL • executeQuery per specificare interrogazioni e ottenere un risultato • execute per specificare istruzioni non note a priori • executeBatch per specificare sequenze di istruzioni • Vediamo executeQuery

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

38

Specializzazioni di Statement

• I risultati delle interrogazioni sono forniti in oggetti di tipo ResultSet (interfaccia definita in java.sql) • In sostanza, un result set è una sequenza di ennuple su cui si può "navigare" (in avanti, indietro e anche con accesso diretto) e dalla cui ennupla "corrente" si possono estrarre i valori degli attributi • Metodi principali: • next() • getXXX(posizione) • es: getString(3); getInt(2) • getXXX(nomeAttributo) • es: getString("Cognome"); getInt("Codice")

17/10/2002

Statement

41

• PreparedStatement premette di utilizzare codice SQL già compilato, eventualmente parametrizzato rispetto alle costanti • in generale più efficiente di Statement • permette di distinguere più facilmente istruzioni e costanti (e apici nelle costanti) i metodi setXXX( , )permettono di definire i parametri • CallableStatement premette di utilizzare "stored procedure", come quelle di Oracle PL/SQL o anche le query memorizzate (e parametriche) di Access 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

40

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

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

42

7

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Altre funzionalità

Transazioni in JDBC • Scelta della modalità delle transazioni: un metodo definito nell'interfaccia Connection: setAutoCommit(boolean autoCommit) • con.setAutoCommit(true) • (default) "autocommit": ogni operazione è una transazione • con.setAutoCommit(false) • gestione delle transazioni da programma con.commit() con.rollback() • non c’è begin transaction

• Molte, fra cui • username e password • aggiornamento dei ResultSet • richiesta di metadati • gestione di transazioni

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

43

• SQL:1999 (come già SQL-2) permette la definizione di procedure e funzioni (chiamate genericamente “stored procedures”) • Le stored procedures sono parte dello schema procedure AssignCity(:Dep char(20), :City char(20)) update Department set City = :City where Name = :Dep • Lo standard prevede funzionalità limitate e non è molto recepito • Molti sistemi offrono estensioni molto ricche (ad esempio Oracle PL/SQL e Sybase-Microsoft Transact SQL) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

44

Procedure in Oracle PL/SQL

Procedure

17/10/2002

17/10/2002

45

Procedure Debit( ClientAccount char (5),Withdrawal integer ) i s OldAmount integer ; NewAmount integer ; Threshold integer ; begin select Amount, Overdraft into OldAmount, Threshold from BankAccount where AccountNo = ClientAccount for update o f Amount; NewAmount : = OldAmount - WithDrawal ; if NewAmount > Threshold then update BankAccount set Amount = NewAmount where AccountNo = ClientAccount; else insert into OverDraftExceeded values(ClientAccount ,Withdrawal, sysdate); end i f; end Debit; 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 5

46

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 • va quindi inquadrata in un contesto più generale: • il ciclo di vita dei sistemi informativi: • Insieme e sequenzializzazione delle attività svolte da analisti, progettisti, utenti, nello sviluppo e nell’uso dei sistemi informativi • attività iterativa, quindi ciclo

Atzeni, Ceri, Paraboschi, Torlone

Basi di dati McGraw -Hill, 1996-2002 Capitolo 6:

Progettazione di basi di dati: Metodologie e modelli 17/10/2002

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

2

Fasi (tecniche) del ciclo di vita

Studio di fattibilità

• Studio di fattibilità: definizione costi e priorità

Raccolta e analisi dei requisiti

• Raccolta e analisi dei requisiti: studio delle proprietà del sistema

Progettazione

• Progettazione: di dati e funzioni Realizzazione

• Realizzazione • Validazione e collaudo: sperimenazione

Validazione e collaudo

• Funzionamento: il sistema diventa operativo

Funzionamento 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

3

La progettazione di un sistema informativo riguarda due aspetti:

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

4

Studio di fattibilità Raccolta e analisi dei requisiti

4progettazione dei dati progettazione delle applicazioni

Progettazione dei dati Realizzazione

Ma:

Validazione e collaudo

4i dati hanno un ruolo centrale

• i dati sono più stabili 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Funzionamento 5

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

6

1

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Studio di fattibilità Raccolta e analisi dei requisiti

• Per garantire prodotti di buona qualità è opportuno seguire una • metodologia di progetto, con: • articolazione delle attività in fasi

Progettazione dei dati Realizzazione

• criteri di scelta • modelli di rappresentazione

Validazione e collaudo

• generalità e facilità d'uso

Funzionamento 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

7

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

8

Requisiti della base di dati

“CHE COSA”: analisi

Progettazione concettuale

Schema concettuale

I prodotti della varie fasi sono schemi di alcuni modelli di dati: • Schema concettuale

Progettazione logica

• Schema logico

Schema logico

“COME”: progettazione

• Schema fisico

Progettazione fisica

Schema fisico 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

9

17/10/2002

Modello dei dati

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

10

Schemi e istanze

• 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 • ad esempio, il modello relazionale prevede il costruttore relazione , che permette di definire insiemi di record omogenei 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

11

• In ogni base di dati esistono: • lo schema, sostanzialmente invariante nel tempo, che ne descrive la struttura (aspetto intensionale) • nel modello relazionale, le intestazioni delle tabelle • l’istanza, i valori attuali, che possono cambiare anche molto rapidamente (aspetto estensionale) • nel modello relazionale, il “corpo” di ciascuna tabella

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

12

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 l’organizzazione dei dati • utilizzati dai programmi • indipendenti dalle strutture fisiche esempi: relazionale, reticolare, gerarchico, a oggetti • modelli concettuali: permettono di rappresentare i dati in modo indipendente da ogni sistema • cercano di descrivere i concetti del mondo reale • sono utilizzati nelle fasi preliminari di progettazione il più noto è il modello Entity-Relationship

• Proviamo a modellare una applicazione definendo direttamente lo schema logico della base di dati: • da dove cominciamo? • rischiamo di perderci subito nei dettagli • dobbiamo pensare subito a come correlare le varie tabelle (chiavi etc.) • i modelli logici sono rigidi

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

13

Modelli concettuali, perché?

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

14

Architettura (semplificata) di un DBMS utente

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

Schema logico

Schema interno

BD 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

15

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

16

Modello Entity-Relationship (Entità-Relazione)

Progettazione concettuale

• Il più diffuso modello concettuale • Ne esistono molte versioni, • (più o meno) diverse l’una dall’altra

Progettazione logica

Progettazione fisica 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

17

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

18

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 applicazione di interesse con proprietà comuni e con esistenza “autonoma” • Esempi: • impiegato, città, conto corrente, ordine, fattura

Relationship Attributo Identificatore Generalizzazione ….

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

19

Relationship

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

20

Uno schema E-R, graficamente

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

17/10/2002

17/10/2002

Studente

21

17/10/2002

Entità

Esame

Corso

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

22

Entità: schema e istanza

• Classe di oggetti (fatti, persone, cose) della applicazione di interesse con proprietà comuni e con esistenza “autonoma” • Esempi: • impiegato, città, conto corrente, ordine, fattura

• Entità: • classe di oggetti, persone, … "omogenei" • Occorrenza (o istanza) di entità: • elemento della classe (l'oggetto, la persona, …, non i dati) • nello schema concettuale rappresentiamo le entità, non le singole istanze (“astrazione”)

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

23

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

24

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à

17/10/2002

Vendita

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

25

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Rappresentazione grafica di relationship

Relationship • Legame logico fra due o più entità, rilevante nell’applicazione di interesse • Esempi: • Residenza (fra persona e città) • Esame (fra studente e corso) • Chiamata anche: • relazione , correlazione , associazione 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

26

27

Studente

Esame

Corso

Impiegato

Residenza

Città

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

28

Relationship, commenti

Esempi di occorrenze

• Ogni relationship ha un nome che la identifica univocamente nello schema: • nomi espressivi • opportune convenzioni • singolare • sostantivi invece che verbi (se possibile)

E1 E2

S1

E3

S2

C2

S3 S4

E4

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

29

17/10/2002

C3 Corso

Studente 17/10/2002

C1

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

30

5

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Relationship corrette?

Relationship, occorrenze • Una occorrenza di una relationship binaria è coppia di occorrenze di entità, una per ciascuna entità coinvolta • 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) ripetute 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

31

Studente

Esame

Corso

Paziente

Visita

Medico

17/10/2002

Due relationship sulle stesse entità

Residenza

32

Relationship n-aria

Sede di lavoro

Impiegato

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Fornitore

Fornitura

Prodotto

Città Dipartimento

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

33

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

17/10/2002

Successione

Persona

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

34

Relationship ricorsiva con “ruoli”

Conoscenza

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Successore

35

17/10/2002

Sovrano Predecessore

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

36

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 relationship, di interesse ai fini dell’applicazione • Associa ad ogni occorrenza di entità o relationship un valore appartenente a un insieme detto dominio dell’attributo

Superficie

Migliore

Peggiore

Confronto

Tennista 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

37

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Attributi, rappresentazione grafica Cognome

Nome Data

Studente

Voto

Esame

Matricola 17/10/2002

38

Attributi composti • Raggruppano attributi di una medesima entità o relationship che presentano affinità nel loro significato o uso • Esempio: • Via, Numero civico e CAP formano un Indirizzo

Titolo

Corso

Codice Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

39

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

40

Cognome

Telefono Direzione

Rappresentazione grafica Impiegato

Dipartimento

Cognome

Afferenza

Codice Impiegato

Età Indirizzo

Composizione

Partecipazione

Via

Data

Numero Sede

Progetto

Via

CAP Budget 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Nome

41

17/10/2002

Nome

Indirizzo CAP

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Città 42

7

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Cardinalità di relationship

Altri costrutti del modello E-R • Cardinalità

• Coppia di valori associati a ogni entità che partecipa a una relationship

• di relationship • di attributo • Identificatore • interno • esterno • Generalizzazione

17/10/2002

www.copy-riot.org

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

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

43

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

44

Esempio di cardinalità

(1,5) Impiegato

17/10/2002

• per semplicità usiamo solo tre simboli: • 0 e 1 per la cardinalità minima: • 0 = “partecipazione opzionale” • 1 = “partecipazione obbligatoria” • 1 e “N” per la massima: • “N” non pone alcun limite

(0,50) Incarico

Assegnamento

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

45

17/10/2002

Occorrenze di Residenza

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

46

Cardinalità di Residenza

R1 S1

C1 S2

S3

(1,1)

C2

Studente

R2

(0,N) Residenza

Città

S4 R3 R4

C4

Città

Studente 17/10/2002

C3

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

47

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

48

8

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Relationship “molti a molti”

Tipi di relationship

(0,N)

• Con riferimento alle cardinalità massime , abbiamo relationship: • uno a uno • uno a molti • molti a molti

Studente

(0,N) Corso

Esame (0,N)

Montagna

(1,N)

(1,N) Macchinista 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

49

17/10/2002

(1,N)

Abilitazione

• Attenzione al "verso" nelle relationship uno a molti • le relationship obbligatorie -obbligatorie sono molto rare

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

(0,1) Persona

(0,N)

Comune Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

51

17/10/2002

Relationship “uno a uno”

(0,N) Ubicazione

Professore di ruolo

Professore di ruolo 17/10/2002

(1,1)

Cattedra (1,1)

Titolarità Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Provincia

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

52

• indicare opzionalità ("informazione incompleta") • indicare attributi multivalore

(0,1)

(1,1)

(1,N)

Ubicazione

• E’ possibile associare delle cardinalità anche agli attributi, con due scopi:

Cattedra

Titolarità

Località

Cardinalità di attributi

(0,1) Titolarità

Azienda

Impiego

(1,1)

(0,1)

50

(1,1) Cinema

Professore

Locomotore

Relationship “uno a molti”

Due avvertenze

17/10/2002

Alpinista

Scalata

Cattedra coperta 53

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

54

9

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Identificatore di una entità

Rappresentazione grafica

(0,N)

Telefono Nome

Impiegato (0,1)

17/10/2002

• “strumento” per l’identificazione univoca delle occorrenze di un’entità • costituito da: • attributi dell’entità • identificatore interno • (attributi +) entità esterne attraverso relationship • identificatore esterno

Numero patente

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

55

17/10/2002

Identificatori interni

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

56

Identificatore esterno

Targa Cognome Matricola Automobile

Nome

Modello (1,1) Data Nascita Persona

Indirizzo 17/10/2002

Studente

Anno di corso

Nome

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

57

17/10/2002

(0,N)

(0,N) (0,1) Afferenza (0,1)

Partecipazione

Dipartimento Nome

(1,1)

Sede

Progetto

17/10/2002

(1,N)

(1,N)

(1,N)

59

Telefono

Composizione

Data

Budget

58

(0,1) (1,1) Direzione

Impiegato Codice

Indirizzo Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Cognome

• ogni entità deve possedere almeno un identificatore, ma può averne in generale più di uno • una identificazione esterna è possibile solo attraverso una relationship a cui l’entità da identificare partecipa con cardinalità (1,1) • perché non parliamo degli identificatori delle relationship?

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Università

Iscrizione

Cognome

Alcune osservazioni

17/10/2002

(0,N)

Via

Nome

Indirizzo CAP

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Città 60

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 casi particolari • E è generalizzazione di E1, E2, ..., En • E1, E2, ..., En sono specializzazioni (o sottotipi) di E

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Dipendente

Impiegato

61

17/10/2002

Funzionario

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Proprietà delle generalizzazioni

(0,N) Nascita (1,1)

Codice fiscale Nome

Persona

Età Stipendio Lavoratore

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

62

Città

Se E (genitore) è generalizzazione di E1, E2, ..., En (figlie): • ogni proprietà di E è significativa per E1, E2, ..., En • ogni occorrenza di E1, E2, ..., En è occorrenza anche di E

17/10/2002

Dirigente

63

17/10/2002

Studente

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

64

Tipi di generalizzazioni

Ereditarietà • tutte le proprietà (attributi, relationship, altre generalizzazioni) dell’entità genitore vengono ereditate dalle entità figlie e non rappresentate esplicitamente

• totale se ogni occorrenza dell'entità genitore è occorrenza di almeno una delle entità figlie, altrimenti è parziale • esclusiva se ogni occorrenza dell'entità 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, Basi di dati, Capitolo 6

65

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

66

11

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Persona

Disoccupato

17/10/2002

Persona

Uomo

Lavoratore

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

67

17/10/2002

Altre proprietà

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

CF

Persona

Cognome Uomo

Stipendio Donna

Impiegato

69

Età Matr. Studente

Militare Segretario

Direttore

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

68

Esercizio

• possono esistere gerarchie a più livelli e multiple generalizzazioni allo stesso livello • un'entità può essere inclusa in più gerarchie, come genitore e/o come figlia • se una generalizzazione ha solo un’entità figlia si parla di sottoinsieme • alcune configurazioni non hanno senso • il genitore di una generalizzazione totale può non avere identificatore, purché … 17/10/2002

Donna

Progettista

• Le persone hanno CF, cognome ed età; gli uomini anche la posizione militare; gli impiegati hanno lo stipendio e possono essere segretari, direttori o progettisti (un progettista può essere anche responsabile di progetto); gli studenti (che non possono essere impiegati) un numero di matricola; esistono persone che non sono né impiegati né studenti (ma i dettagli non ci interessano) 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

70

Documentazione associata agli schemi concettuali • dizionario dei dati • entità • relationship • vincoli non esprimibili

Responsabile 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

71

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

72

12

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

(0,1) (1,1) Direzione

Cognome Impiegato (0,N)

Codice

(0,N) (0,1) Afferenza (0,1)

Partecipazione

17/10/2002

Dipartimento Nome

(1,1)

Entità Impiegato Progetto

Via Indirizzo CAP

Afferenza Partecipazione Composizione

17/10/2002

Descrizione Direzione di un dipartimento Afferenza a un dipartimento Partecipazione a un progetto Composizione dell'azienda

73

Identificatore Codice Nome Nome, Sede Città

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

74

Vincoli non esprimibili Vincoli di integrità sui dati (1) Il direttore di un dipartimento deve a afferire a tale dipartimento (2) Un impiegato non deve avere uno stipendio maggiore del direttore del dipartimento al quale afferisce (3) Un dipartimento con sede a Roma deve essere diretto da un impiegato con più di dieci anni di anzianità (4) Un impiegato che non afferisce a nessun dipartimento non deve partecipare a nessun un progetto

Componenti Attributi Impiegato, Dipartimento Impiegato, Data Dipartimento Impiegato, Progetto Dipartimento, Sede

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Attributi Codice, Cognome, Stipendio Nome, Budget Nome, Telefono Città, Indirizzo

Città

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

Dizionario dei dati (relationship)

Relazioni Direzione

Descrizione Dipendente dell'azienda

Progetti aziendali Dipartimento Struttura aziendale Sede Sede dell'azienda

Sede

Nome

Dizionario dei dati (entità)

(1,N)

(1,N)

(1,N)

Budget

Telefono

Composizione

Data

Progetto

www.copy-riot.org

75

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 6

76

13

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Requisiti della base di dati Progettazione concettuale

Schema concettuale

Atzeni, Ceri, Paraboschi, Torlone

Basi di dati

Progettazione logica

McGraw -Hill, 1996-2002 Capitolo 7:

Schema logico

Progettazione concettuale

Progettazione fisica

17/10/2002

Schema fisico 17/10/2002

Analisi dei requisiti e progettazione concettuale ("Analisi dei dati")

• Possibili fonti: • utenti, attraverso: • interviste • documentazione apposita • documentazione esistente : • normative (leggi, regolamenti di settore) • regolamenti interni, procedure aziendali • realizzazioni preesistenti • modulistica

acquisizione dei requisiti analisi dei requisiti costruzione dello schema concettuale costruzione del glossario

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

3

17/10/2002

• Il reperimento dei requisiti è un'attività difficile e non standardizzabile • l'attività di analisi inizia con i primi requisiti raccolti e spesso indirizza verso altre acquisizioni

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

4

Acquisizione per interviste

Acquisizione e analisi dei requisiti

17/10/2002

2

Requisiti

• Comprende attività (interconnesse) di • • • •

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

5

• utenti diversi possono fornire informazioni diverse • utenti a livello più alto hanno spesso una visione più ampia ma meno dettagliata • le interviste portano spesso ad una acquisizione dei requisiti “per raffinamenti successivi”

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

6

1

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Interazione con gli utenti

Requisiti: documentazione descrittiva

• Spunti:

• Regole generali:

• effettuare spesso verifiche di comprensione e coerenza • verificare anche per mezzo di esempi (generali e relativi a casi limite) • richiedere definizioni e classificazioni • far evidenziare gli aspetti essenziali rispetto a quelli marginali

17/10/2002

www.copy-riot.org

• • • •

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

7

scegliere il corretto livello di astrazione standardizzare la struttura delle frasi suddividere le frasi articolate separare le frasi sui dati da quelle sulle funzioni

17/10/2002

Requisiti: organizzazione di termini e concetti

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

8

Requisiti, un esempio

• Regole generali • costruire un glossario dei termini • individuare omonimi e sinonimi e unificare i termini • rendere esplicito il riferimento fra termini • riorganizzare le frasi per concetti

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

9

Base di dati bibliografica Si vogliono organizzare i dati di interesse per automatizzare la gestione dei riferimenti bibliografici, con tutte le informazioni da riportarsi in una bibliografia. Per ogni pubblicazione deve esistere un codice identificante costituito da sette caratteri, indicanti le iniziali degli autori, l'anno di pubblicazione e un carattere aggiuntivo per la discriminazione delle collisioni.

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

11

Base di dati bibliografica Si vogliono organizzare i dati di interesse per automatizzare la gestione dei riferimenti bibliografici

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

10

Base di dati bibliografica Si vogliono organizzare i dati di interesse per automatizzare la gestione dei riferimenti bibliografici, con tutte le informazioni da riportarsi in una bibliografia. Le pubblicazioni sono di due tipi, monografie (per le quali interessano editore, data e luogo di pubblicazione) e articoli su rivista (con nome della rivista, volume, numero, pagine e anno di pubblicazione); per entrambi i tipi si debbono ovviamente riportare i nomi degli autori. Per ogni pubblicazione deve esistere un codice identificante ..... 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

12

2

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Un esempio più articolato Società di formazione (1) Si vuole realizzare una base di dati per una società che eroga corsi, di cui vogliamo rappresentare i dati dei partecipanti ai corsi e dei docenti. Per gli studenti (circa 5000), identificati da un codice, si vuole memorizzare il codice fiscale, il cognome, l'età, il sesso, il luogo di nascita, il nome dei loro attuali datori di lavoro, i posti dove hanno lavorato in precedenza insieme al periodo, l'indirizzo e il numero di telefono, i corsi che hanno frequentato (i corsi sono in tutto circa 200) e il giudizio finale. 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

13

Società di formazione (2) Rappresentiamo anche i seminari che stanno attualmente frequentando e, per ogni giorno, i luoghi e le ore dove sono tenute le lezioni. I corsi hanno un codice, un titolo e possono avere varie edizioni con date di inizio e fine e numero di partecipanti. Se gli studenti sono liberi professionisti, vogliamo conoscere l'area di interesse e, se lo possiedono, il titolo. Per quelli che lavorano alle dipendenze di altri, vogliamo conoscere invece il loro livello e la posizione ricoperta. 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

14

Glossario dei termini Società di formazione (3) Per gli insegnanti (circa 300), rappresentiamo il cognome, l'età, il posto dove sono nati, il nome del corso che insegnano, quelli che hanno insegnato nel passato e quelli che possono insegnare. Rappresentiamo anche tutti i loro recapiti telefonici. I docenti possono essere dipendenti interni della società o collaboratori esterni.

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Termine Descrizione Partecipante Persona che partecipa ai corsi Docente Corso

Società

15

Strutturazione dei requisiti in gruppi di frasi omogenee

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

17/10/2002

Sinonimi Studente

Collegamenti Corso, Società Insegnante Corso

Docente dei corsi. Può essere esterno Corso organizzato Seminario dalla società. Può avere più edizioni. Ente presso cui i Posti partecipanti lavorano o hanno lavorato

Docente

Partecipante

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

16

Frasi di carattere generale Si vuole realizzare una base di dati per una società che eroga corsi, di cui vogliamo rappresentare i dati dei partecipanti ai corsi e dei docenti.

17

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

18

3

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Frasi relative ai datori di lavoro Relativamente ai datori di lavoro presenti e passati dei partecipanti, rappresentiamo il nome, l'indirizzo e il numero di telefono.

Frasi relative ai partecipanti Per i partecipanti (circa 5000), identificati da 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 quelli precedenti (insieme alle date di inizio e fine rapporto), le edizioni dei corsi che stanno attualmente frequentando e quelli che hanno frequentato nel passato, con la relativa votazione finale in decimi. 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Frasi relative ai corsi 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 numero di partecipanti e il giorno della settimana, le aule e le ore dove sono tenute le lezioni. 19

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

20

Frasi relative ai docenti Per i docenti (circa 300), rappresentiamo il cognome, l'età, la città di nascita, tutti i numeri di telefono, il titolo del corso che insegnano, di quelli che hanno insegnato nel passato e di quelli che possono insegnare. I docenti possono essere dipendenti interni della società di formazione o collaboratori esterni.

Frasi relative a tipi specifici di partecipanti Per i partecipanti che sono liberi professionisti, rappresentiamo l'area di interesse e, se lo possiedono, il titolo professionale. Per i partecipanti che sono dipendenti, rappresentiamo invece il loro livello e la posizione ricoperta.

17/10/2002

www.copy-riot.org

21

Quale costrutto E-R va utilizzato per rappresentare un concetto presente nelle specifiche?

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

22

• se ha proprietà significative e descrive oggetti con esistenza autonoma

• entità • se è semplice e non ha proprietà

• attributo • se correla due o più concetti

• Bisogna basarsi sulle definizioni dei costrutti del modello E-R

• relazione • se è caso particolare di un altro

• generalizzazione

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

23

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

24

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 intermedio iniziale Schema Schema Specifiche intermedio finale

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

25

17/10/2002

Primitive di raffinamento top-down Cognome

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

26

Strategia bottom-up

Età

Specifiche 1,1 Schema 1,1

Specifiche 2,1 Schema 2,1

Persona

SpecificheSpecifiche 1 Specifiche 2 Studente Uomo

Schema finale

Corso

Impiegato Persona Esame Esame

Specifiche1,2 1,2 Schema

Donna

Specifiche 2,2 Schema 2,2

Stipendio 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

27

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

28

Primitive di raffinamento Bottom-up

Persona

Specifica su Impiegato Esame impiegato

Studente Uomo

17/10/2002

Strategia inside-out: un esempio

Corso Donna

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

29

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

30

5

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

(0,1) (1,1) Direzione

Cognome Impiegato Codice

(0,N)

(1,N) (0,1) Afferenza (0,1)

Partecipazione

Dipartimento Nome

(1,1)

• si procede di solito con una strategia ibrida (mista): • si individuano i concetti principali e si realizza uno schema scheletro • sulla base di questo si può decomporre • poi si raffina, si espande, si integra

Sede

Progetto

17/10/2002

In pratica

(1,N)

(1,N)

(1,N)

Budget

Telefono

Composizione

Data

www.copy-riot.org

Via

Nome

Indirizzo CAP

Città

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

31

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

32

Qualità di uno schema concettuale Definizione dello schema scheletro • correttezza • Si individuano i concetti più importanti, ad esempio perché più citati o perché indicati esplicitamente come cruciali e li si organizza in un semplice schema concettuale

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

33

Un esempio di progettazione concettuale

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

34

Frasi di carattere generale Si vuole realizzare una base di dati per una società che eroga corsi, di cui vogliamo rappresentare i dati dei partecipanti ai corsi e dei docenti.

• Società di formazione

17/10/2002

• completezza • leggibilità • minimalità

35

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

36

6

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Schema scheletro Frasi relative ai partecipanti Per i partecipanti (circa 5000), identificati da 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 quelli precedenti (insieme alle date di inizio e fine rapporto), le edizioni dei corsi che stanno attualmente frequentando e quelli che hanno frequentato nel passato, con la relativa votazione finale in decimi.

Corso

Partecipazione

Docenza

Partecipante

Docente

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

37

(0,N) (1,1)

Frasi relative a tipi specifici di partecipanti Per i partecipanti che sono liberi professionisti, rappresentiamo l'area di interesse e, se lo possiedono, il titolo professionale. Per i partecipanti che sono dipendenti, rappresentiamo invece il loro livello e la posizione ricoperta. Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

38

Nome

Datore

Frasi relative ai datori di lavoro Relativamente ai datori di lavoro presenti e passati dei partecipanti, rappresentiamo il nome, l'indirizzo e il numero di telefono.

17/10/2002

17/10/2002

(0,N) Impiego corrente

(0,N)

…..

Impiego passato

CF

Partecipante

Codice …..

Dipendente Livello 39

Posizione

17/10/2002

Professionista Titolo prof.

Area

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

40

Data fine Data inizio

Frasi relative ai corsi 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 numero di partecipanti e il giorno della settimana, le aule e le ore dove sono tenute le lezioni.

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Edizione corso

(1,1)

(1,N) Composizione

Tipologia (0,N)

(1,1)

Corso Titolo

17/10/2002

N.Part.

41

17/10/2002

Lezione

Codice

Orario Aula Giorno

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

42

7

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Telefono

Frasi relative ai docenti Per i docenti (circa 300), rappresentiamo il cognome, l'età, la città di nascita, tutti i numeri di telefono, il titolo del corso che insegnano, di quelli che hanno insegnato nel passato e di quelli che possono insegnare. I docenti possono essere dipendenti interni della società di formazione o collaboratori esterni.

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

CF

(1,N)

Cognome

Docente Città nascita

Età

Collaboratore

43

17/10/2002

Interno

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

44

Integrazione (0,N)

partecipazione passata

Corso

Docenza

Partecipazione

Partecipante

Partecipante

17/10/2002

(0,1)

Data inizio

45

(0,1) Docenza corrente

Corso

46

(da ripetere finché non si è soddisfatti)

(1,N)

(0,N)

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Una metodologia

Tipologia

• Raffinare i concetti presenti sulla base delle loro specifiche • Aggiungere concetti per descrivere specifiche non descritte • Analisi di qualità

Abilitazione

(ripetuta e distribuita)

(1,N)

17/10/2002

Edizione Corso corso

• Analisi dei requisiti • Analizzare i requisiti ed eliminare le ambiguità • Costruire un glossario dei termini • Raggruppare i requisiti in insiemi omogenei • Passo base • Definire uno schema scheletro con i concetti più rilevanti • Passo iterativo

Docente

Docenza (0,1)

17/10/2002

(0,N)

Docenza passata

(1,1)

Titolo

(0,1) (0,N) partecipazione Partecipazione corrente

Docente

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Edizione Corso corso

(0,N)



Verificare le qualità dello schema e modificarlo

Codice Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

47

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

48

8

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Una metodologia con integrazione

Un'altra metodologia con integrazione

• Analisi dei requisiti • Passo base • Decomposizione • decomporre i requisiti con riferimento ai concetti nello schema scheletro • Passo iterativo, per ogni sottoschema • Integrazione • integrare i vari sottoschemi in uno schema complessivo, facendo riferimento allo schema scheletro • Analisi di qualità

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

www.copy-riot.org

• Analisi dei requisiti • Decomposizione dei requisiti • individuazione di settoro di interesse e suddivisione dei requisiti (o addirittura acquisizione separata) • Per ciascun settore • Passo base • Passo iterativo • Integrazione • Analisi di qualità

49

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

50

9

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Requisiti della base di dati Progettazione concettuale

Schema concettuale

Atzeni, Ceri, Paraboschi, Torlone

Basi di dati

Progettazione logica

McGraw -Hill, 1996-2002 Capitolo 8:

Schema logico

Progettazione logica

Progettazione fisica

17/10/2002

Schema fisico 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

2

Dati di ingresso e uscita Obiettivo della progettazione logica

• Ingresso:

• "tradurre" lo schema concettuale in uno schema logico che rappresenti gli stessi dati in maniera corretta ed efficiente

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

3

• schema concettuale • informazioni sul carico applicativo • modello logico • Uscita:

• schema logico • documentazione associata

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Carico applicativo

Non si tratta di una pura e semplice traduzione

4

Schema E-R

Ristrutturazione dello schema E- R

• alcuni aspetti non sono direttamente rappresentabili • è necessario considerare le prestazioni

Modello logico

Schema E-R ristrutturato

Traduzione nel modello logico

Schema logico 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

5

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

6

1

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Ristrutturazione schema E-R Per ottimizzare il risultato abbiamo bisogno di analizzare le prestazioni a questo livello

• Motivazioni: • semplificare la traduzione • "ottimizzare" le prestazioni • Osservazione: • uno schema E-R ristrutturato non è (più) uno schema concettuale nel senso stretto del termine

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

• Ma:

• le prestazioni non sono valutabili con precisione su uno schema concettuale! 7

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

(0,1) (1,1) Direzione

Cognome Consideriamo “indicatori” dei parametri che regolano le prestazioni

Impiegato (0,N)

Codice

• spazio: numero di occorrenze previste • tempo: numero di occorrenze (di entità e relationship) visitate durante un’operazione

(1,N) (0,1) Afferenza (0,1)

Partecipazione

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

9

17/10/2002

Tipo E E E E R R R R

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Nome

(1,1)

Sede Indirizzo CAP

Città

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

10

Esempio di valutazione di costo

Tavola dei volumi Concetto Sede Dipartimento Impiegato Progetto Composizione Afferenza Direzione Partecipazione

Dipartimento

Via

Nome

17/10/2002

(1,N)

(1,N)

(1,N)

Progetto

17/10/2002

Telefono

Composizione

Data

Budget

8

• Operazione:

Volume 10 80 2000 500 80 1900 80 6000

• trova tutti i dati di un impiegato, del dipartimento nel quale lavora e dei progetti ai quali partecipa • Si costruisce una tavola degli accessi basata su uno schema di navigazione

11

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

12

2

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Cognome

www.copy-riot.org

Telefono

Tavola degli accessi

(1,N)

Impiegato Codice

(0,N)

(1,N) (0,1) Afferenza

Dipartimento (1,1)

Nome

(0,1)

Partecipazione

Data (1,N)

Concetto Costrutto Accessi Impiegato Entità 1 Afferenza Relazione 1 Dipartimento Entità 1 Partecipazione Relazione 3 Progetto Entità 3

Tipo L L L L L

Progetto Budget

Nome

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

13

17/10/2002

• Una ridondanza in uno schema E-R è una informazione significativa ma derivabile da altre

• Analisi delle ridondanze • Eliminazione delle generalizzazioni • Partizionamento/accorpamento di entità e relationship • Scelta degli identificatori primari

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

14

Analisi delle ridondanze

Attività della ristrutturazione

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

• in questa fase si decide se eliminare le ridondanze eventualmente presenti o mantenerle

15

Ridondanze

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

16

Forme di ridondanza in uno schema E-R

• Vantaggi • semplificazione delle interrogazioni • Svantaggi • appesantimento degli aggiornamenti • maggiore occupazione di spazio

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

• attributi derivabili: • da altri attributi della stessa entità (o relazione) • da attributi di altre entità (o relazioni) • relazioni derivabili dalla composizione di altre relazioni in presenza di cicli

17

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

18

3

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Attributo derivabile da altra entità

Attributo derivabile

Importo netto

Importo totale

Prezzo (1,N)

Impiegato

IVA

Acquisto

(1,N)

Composizione

Prodotto

Importo lordo

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

19

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

20

Analisi di una ridondanza

Studente (0,N) Ridondanza dovuta a ciclo

Numero abitanti

Frequenza (1,N)

(0,N)

Corso

Docenza

(1,1) Insegnamento (1,1)

Persona

(1,N)

Residenza

Città

Professore 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Concetto Città Persona Residenza

Tipo E E R

21

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

22

Presenza di ridondanza

Volume 200 1000000 1000000

Operazione 1 Concetto Costrutto Accessi Tipo Persona Entità 1 S Residenza Relazione 1 S Città Entità 1 L Città Entità 1 S

• Operazione 1: memorizza una nuova persona con la relativa città di residenza (500 volte al giorno) • Operazione 2: stampa tutti i dati di una città (incluso il numero di abitanti) (2 volte al giorno) 17/10/2002

17/10/2002

Operazione 2 Concetto Costrutto Accessi Tipo Città Entità 1 L 23

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

24

4

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Assenza di ridondanza

Presenza di ridondanza • Costi:

Operazione 1 Concetto Costrutto Accessi Tipo Persona Entità 1 S Residenza Relazione 1 S

• Operazione 1: 1500 accessi in scrittura e 500 accessi in lettura al giorno • Operazione 2: trascurabile. • Contiamo doppi gli accessi in scrittura • Totale di 3500 accessi al giorno

Operazione 2 Concetto Costrutto Accessi Tipo Città Entità 1 L Residenza Relazione 5000 L 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

25

17/10/2002

Assenza di ridondanza

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

26

Attività della ristrutturazione

• Costi:

• Analisi delle ridondanze • Eliminazione delle generalizzazioni • Partizionamento/accorpamento di entità e relazioni • Scelta degli identificatori primari

• Operazione 1: 1000 accessi in scrittura • Operazione 2: 10000 accessi in lettura al giorno • Contiamo doppi gli accessi in scrittura • Totale di 12000 accessi al giorno

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

27

17/10/2002

Eliminazione delle gerarchie

• si eliminano perciò le gerarchie, sostituendole con entità e relazioni

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

28

Tre possibilità

• il modello relazionale non può rappresentare direttamente le generalizzazioni • entità e relazioni sono invece direttamente rappresentabili

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

29

1. accorpamento delle figlie della generalizzazione nel genitore 2. accorpamento del genitore della generalizzazione nelle figlie 3. sostituzione della generalizzazione con relazioni

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

30

5

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

A02

A01

A02

A01 (0,1)

E0

R1

A11

E3

E0

A21

E3

R1

(0,1)

TIPO (0,..)

E1

E2

A11

A21

17/10/2002

R2

R2

E4

E4

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

31

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

32

A02

A01

R11

E0

R1

E1

E2

A11

A21

17/10/2002

E3

R2

E4

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

33

R12

E3

E1

E2

R2

A01 A11 A02

A01 A21 A02

17/10/2002

A02

A01

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

R1

E3

E0

R1

(0,1)

(0,1)

(1,1)

(1,1)

RG1

E1

E2

A11

A21

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

R2

E4 35

E3

RG2

E1

E2

A11

A21

17/10/2002

34

A02

A01

E0

E4

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

R2

E4 36

6

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

1. conviene se gli accessi al padre e alle figlie sono contestuali 2. conviene se gli accessi alle figlie sono distinti 3. conviene se gli accessi alle entità figlie sono separati dagli accessi al padre

• la scelta fra le alternative si può fare con metodo simile a quello visto per l'analisi delle ridondanze (però non basato solo sul numero degli accessi) • è possibile seguire alcune semplici regole generali

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

www.copy-riot.org



37

sono anche possibili soluzioni “ibride”, soprattutto in gerarchie a più livelli

17/10/2002

A02

A01

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

38

A02

A01 (0,1)

E0

R1

A11

E3

E0

R1

E3

(0,1)

TIPO

RG2 (1,1)

E1

E2

A11

A21

17/10/2002

E2

R2

A21

E4

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

39

• Analisi delle ridondanze • Eliminazione delle generalizzazioni • Partizionamento/accorpamento di entità e relazioni • Scelta degli identificatori primari

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

E4

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

40

• Ristrutturazioni effettuate per rendere più efficienti le operazioni in base a un semplice principio • Gli accessi si riducono: • separando attributi di un concetto che vengono acceduti separatamente • raggruppando attributi di concetti diversi acceduti insieme

Attività della ristrutturazione

17/10/2002

17/10/2002

R2

41

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

42

7

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Ristrutturazioni, casi principali

Livello

• partizionamento orizzontale di relationship

Indirizzo

Data nascita

• accorpamento di entità/ relationship

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

17/10/2002

Ritenute

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Indirizzo Dati lavorativi

R

Città

Agenzia (1,N)

Indirizzo Data nascita 17/10/2002

Città

Nome

45

Numero

(1,N)

17/10/2002

Cognome

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Codice fiscale

(1,1) Utenza

Telefono

Persona

Indirizzo

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

47

17/10/2002

46

Interno Indirizzo

(0,1)

Indirizzo

17/10/2002

Telefono

Ritenute

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Agenzia

44

Nome

Livello

(1,1)

(1,1) Dati anagrafici

43

Stipendio

Cognome Codice

Stipendio

Impiegato

• eliminazione di attributi multivalore

17/10/2002

Codice

Cognome

• partizionamento verticale di entità

(1,1)

Intestazione

Appartamento

Data nascita Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

48

8

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Codice fiscale

Cognome

www.copy-riot.org

Ruolo Cognome Interno (0,1)

Indirizzo

(1,N)

Persona

Giocatore

Data nascita

Indirizzo (0,1)

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

17/10/2002

Data acquisto Ruolo

(1,1)

(1,N)

Comp. attuale

Comp. passata

Data acquisto 17/10/2002

(0,1) Data cessione

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

50

Nome

• Analisi delle ridondanze • Eliminazione delle generalizzazioni • Partizionamento/accorpamento di entità e relazioni • Scelta degli identificatori primari

Squadra

(1,N)

Squadra

Attività della ristrutturazione

Giocatore

Cognome

Nome

(1,N)

Composizione

Data acquisto 49

Città

(1,N)

Città

Data cessione

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

51

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

52

Scelta degli identificatori principali Se nessuno degli identificatori soddisfa i requisiti visti?

• operazione indispensabile per la traduzione nel modello relazionale • Criteri • assenza di opzionalità • semplicità • utilizzo nelle operazioni più frequenti o importanti

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Si introducono nuovi attributi (codici) contenenti valori speciali generati appositamente per questo scopo

53

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

54

9

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Traduzione verso il modello relazionale

www.copy-riot.org

Entità e relationship molti a molti Cognome Matricola

• idea di base: • le entità diventano relazioni sugli stessi attributi • le associazioni (ovvero le relazioni E- R) diventano relazioni sugli identificatori delle entità coinvolte (più gli attributi propri)

Data inizio

(0,N) Impiegato

Nome

Codice

(1,N) Progetto

Partecipazione

Stipendio Budget Impiegato(Matricola, Cognome, Stipendio) Progetto(Codice, Nome, Budget) Partecipazione(Matricola, Codice, DataInizio)

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

55

Entità e relationship molti a molti

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

56

Nomi più espressivi per gli attributi della chiave della relazione che rappresenta la relationship

Impiegato(Matricola, Cognome, Stipendio) Progetto(Codice, Nome, Budget) Partecipazione(Matricola, Codice, DataInizio) • con vincoli di integrità referenziale fra • Matricola in Partecipazione e (la chiave di) Impiegato • Codice in Partecipazione e (la chiave di) Progetto

Impiegato(Matricola, Cognome, Stipendio) Progetto(Codice, Nome, Budget) Partecipazione(Matricola, Codice, DataInizio) Partecipazione(Impiegato, Progetto, DataInizio)

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

57

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Relationship n-arie

Relationship ricorsive

Composto

Costo

Nome

(0,N)

(0,N) Fornitore

Prodotto

Nome

Codice

Composizione(Composto, Componente , Quantità) Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Codice

(1,N) Fornitura

Dipartimento

Prodotto(Codice , Nome, Costo)

17/10/2002

Genere

(1,N)

Componente

Prodotto

Quantità

Partita IVA

Nome

Quantità

(0,N) Composizione

58

59

Telefono

Fornitore(PartitaIVA, Nome) Prodotto(Codice, Genere) Dipartimento(Nome, Telefono) Fornitura(Fornitore, Prodotto, Dipartimento, Quantità) 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

60

10

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Relationship uno a molti Cognome

Data nascita (1,1)

Giocatore

Ingaggio

Soluzione più compatta Giocatore(Cognome, DataNascita, Ruolo) Contratto(CognGiocatore, DataNascG, Squadra, Ingaggio) Squadra(Nome, Città, ColoriSociali)

Nome

Città

(0,N) Squadra

Contratto

Ruolo

Colori sociali

Giocatore(Cognome, DataNascita, Ruolo) Contratto(CognGiocatore, DataNascG, Squadra, Ingaggio) Squadra(Nome, Città, ColoriSociali) • corretto? 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

61

Giocatore(Cognome, DataNasc, Ruolo, Squadra, Ingaggio) Squadra(Nome, Città, ColoriSociali) • con vincolo di integrità referenziale fra Squadra in Giocatore e la chiave di Squadra • se la cardinalità minima della relationship è 0, allora Squadra in Giocatore deve ammettere valore nullo 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Entità con identificazione esterna

62

Relationship uno a uno Data inizio

Cognome

Matricola

Nome (1,1)

Studente

Cognome

Città

(1,1)

(1,N) Direttore

Università

Iscrizione

Sede

Codice

Nome

(1,1) Dipartimento

Direzione

Indirizzo

AnnoDiCorso

Stipendio

Studente(Matricola, Università , Cognome, AnnoDiCorso) Università(Nome, Città, Indirizzo)

Telefono

• varie possibilità: • fondere da una parte o dall'altra • fondere tutto?

• con vincolo … 17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

63

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

Una possibilità privilegiata

Un altro caso

Data inizio Cognome

Data inizio Sede

Codice (0,1)

Direttore

64

Nome

Cognome

(0,1)

(1,1) Direzione

Stipendio

Sede

Codice

Dipartimento

Direttore

(0,1) Direzione

Stipendio

Telefono

Nome

Dipartimento

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, Basi di dati, Capitolo 7

65

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

66

11

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

(0,1) (1,1) Direzione

Cognome Impiegato Codice

(0,N)

(1,N) (0,1) Afferenza (0,1)

Partecipazione

Dipartimento

Impiegato(Codice, Cognome, Dipartimento*,Sede*, Data*)

Nome

(1,1)

Dipartimento( Nome, Città, Telefono, Direttore) Sede(Città, Via, CAP) Progetto(Nome, Budget)

Sede

Progetto

17/10/2002

Schema finale

(1,N)

(1,N)

Budget

Telefono

Composizione

Data

www.copy-riot.org

Via

Nome

Partecipazione(Impiegato, Progetto) Indirizzo

CAP

Città

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

67

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

68

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

70

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, Basi di dati, Capitolo 7

69

17/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 7

71

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 “qualità”, cioè l'assenza di determinati difetti • Quando una relazione non è normalizzata: • presenta ridondanze, • si presta a comportamenti poco desiderabili durante gli aggiornamenti

Atzeni, Ceri, Paraboschi, Torlone

Basi di dati McGraw -Hill, 1996-2002 Capitolo 9:

La normalizzazione

• Le forme normali sono di solito definite sul modello relazionale, ma hanno senso in altri contesti, ad esempio il modello E- R

23/10/2002

23/10/2002

Normalizzazione

• La normalizzazione va utilizzata come tecnica di verifica dei risultati della progettazione di una base di dati • Non costituisce una metodologia di progettazione Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

3

Anomalie

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

Impiegato Stipendio Progetto Rossi 20 Marte Verdi 35 Giove Verdi 35 Venere Neri 55 Venere Neri 55 Giove Neri 55 Marte Mori 48 Marte Mori 48 Venere Bianchi 48 Venere Bianchi 48 Giove 23/10/2002

Bilancio 2 15 15 15 15 2 2 15 15 15

Funzione tecnico progettista progettista direttore consulente consulente direttore progettista progettista direttore

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

4

Perché questi fenomeni indesiderabili?

• Lo stipendio di ciascun impiegato è ripetuto in tutte le ennuple relative • ridondanza • Se lo stipendio di un impiegato varia, è necessario andarne a modificare il valore in diverse ennuple • anomalia di aggiornamento • Se un impiegato interrompe la partecipazione a tutti i progetti, dobbiamo cancellarlo • anomalia di cancellazione • Un nuovo impiegato senza progetto non può essere inserito • anomalia di inserimento 23/10/2002

2

Una relazione con anomalie

• Procedura che permette di trasformare schemi non normalizzati in schemi che soddisfano una forma normale

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

5

• abbiamo usato un'unica relazione per rappresentare informazioni eterogenee • gli impiegati con i relativi stipendi • i progetti con i relativi bilanci • le partecipazioni degli impiegati ai progetti con le relative funzioni

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

6

1

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Proprietà

Per studiare in maniera sistematica questi aspetti, è necessario introdurre un vincolo di integrità: la dipendenza funzionale

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

7

• Ogni impiegato ha un solo stipendio (anche se partecipa a più progetti) • Ogni progetto ha un bilancio • Ogni impiegato in ciascun progetto ha una sola funzione (anche se può avere funzioni diverse in progetti diversi)

23/10/2002

• relazione r su R(X) • due sottoinsiemi non vuoti Y e Z di X • esiste in r una dipendenza funzionale (FD) da 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 hanno gli stessi valori anche su Z

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

8

Notazione

Dipendenza funzionale

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

9

Altre FD

X→Y • Esempi:

Impiegato → Stipendio Progetto → Bilancio Impiegato Progetto → Funzione

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

10

Le anomalie sono legate ad alcune FD

• Impiegato Progetto → Progetto

• gli impiegati hanno un unico stipendio Impiegato → Stipendio • i progetti hanno un unico bilancio

• Si tratta però di una FD “banale” (sempre 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, Basi di dati, Capitolo 9

11

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

12

2

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Non tutte le FD causano anomalie

Una differenza fra FD

• In ciascun progetto, un impiegato svolge una sola funzione Impiegato Progetto → Funzione

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

Impiegato Stipendio Progetto Rossi 20 Marte Verdi 35 Giove Verdi 35 Venere Neri 55 Venere Neri 55 Giove Neri 55 Marte Mori 48 Marte Mori 48 Venere Bianchi 48 Venere Bianchi 48 Giove

Bilancio 2 15 15 15 15 2 2 15 15 15

13

Funzione tecnico progettista progettista direttore consulente consulente direttore progettista progettista direttore

Impiegato → Stipendio Progetto → Bilancio Impiegato Progetto → Funzione 23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

• i progetti con i relativi bilanci • le partecipazioni degli impiegati ai progetti con le relative funzioni

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

23/10/2002

17

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

14

FD e anomalie • La terza FD corrisponde ad una chiave e non causa anomalie • Le prime due FD non corrispondono a chiavi e causano anomalie • La relazione contiene alcune informazioni legate alla chiave e altre ad attributi che non formano una chiave

15

• abbiamo usato un'unica relazione per rappresentare informazioni eterogenee • gli impiegati con i relativi stipendi

23/10/2002

Impiegato → Stipendio Progetto → Bilancio • causano anomalie Impiegato Progetto → Funzione • non causa anomalie • Perché?

• Il soddisfacimento è più "semplice "

23/10/2002

www.copy-riot.org

23/10/2002

• • • •

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

16

Impiegato → Stipendio Progetto → Bilancio Impiegato Progetto → Funzione Impiegato Progetto è chiave Impiegato solo no Progetto solo no Le anomalie sono causate dalla presenza di concetti eterogenei: • proprietà degli impiegati (lo stipendio) • proprietà di progetti (il bilancio) • proprietà della chiave Impiegato Progetto

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

18

3

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Forma normale di Boyce e Codd (BCNF) • Una relazione r è in forma normale di Boyce e Codd se, per ogni dipendenza funzionale (non banale) X → Y definita su di essa, X contiene una chiave K di r • La forma normale richiede che i concetti in una relazione siano omogenei (solo proprietà direttamente associate alla chiave)

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

19

www.copy-riot.org

Che facciamo se una relazione non soddisfa la BCNF? • La rimpiazziamo con altre relazioni che soddisfano la BCNF

Come? • Decomponendo sulla base delle dipendenze funzionali, al fine di separare i concetti

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

20

Non sempre così facile Impiegato Stipendio Progetto Impiegato Progetto Rossi 20 Marte Rossi Marte Impiegato Stipendio Verdi 35Verdi Giove Giove Rossi 20 Verdi 35 Venere Verdi Venere Verdi 35 Venere 55 Neri Venere Neri Neri 55 Neri Giove Mori Neri 48 55 Giove Neri Marte BianchiNeri 48 55 Mori Marte Marte Mori 48 Mori Marte Venere Bianchi Venere Mori 48 Venere Gio ve Bianchi 48Bianchi Venere Bianchi 48 Giove

23/10/2002

Bilancio Funzione 2 tecnico 15 progettista 15 progettista direttore 15 consulente 15 consulente 2 direttore 2 progettista progettista 15 direttore

15 15

Funzione tecnico progettista Progetto Bilancio progettista Marte 2 direttore15 Giove consulente Venere 15 consulente direttore progettista progettista direttore

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

21

Decomponiamo sulla base delle dipendenze Impiegato Rossi Verdi Verdi Neri Neri Impiegato Rossi Verdi Neri 23/10/2002

Sede Roma Milano Milano

Progetto Marte Giove Venere Saturno Venere

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

Progetto Marte Giove Venere Saturno Venere

Sede Roma Milano Milano Milano Milano

Impiegato → Sede Progetto → Sede 23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

22

Proviamo a ricostruire Impiegato Rossi Verdi Neri

Sede Roma Milano Milano Milano Milano Progetto Marte Giove Saturno Venere

Impiegato Rossi Verdi Verdi Neri Neri

Sede Roma Milano Milano Milano 23

Sede Roma Milano Milano

Progetto Marte Giove Saturno Venere

Impiegato Progetto Rossi Marte Verdi Giove Verdi Venere Neri Saturno Neri Venere Verdi Saturno Neri Giove

Sede Roma Milano Milano Milano

Sede Roma Milano Milano Milano Milano Milano Milano

Diversa dalla relazione di partenza! 23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

24

4

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Decomposizione senza perdita

www.copy-riot.org

Proviamo a decomporre senza perdita Impiegato Progetto Rossi Marte Verdi Giove Verdi Venere Neri Saturno Neri Venere

• Una relazione r si decompone senza perdita su X1 e X2 se il join delle proiezioni di r su X1 e X2 è uguale a r stessa (cioè non contiene ennuple spurie) • La decomposizione senza perdita è garantita se gli attributi comuni contengono una chiave per almeno una delle relazioni decomposte

Impiegato Rossi Verdi Neri

Sede Roma Milano Milano

Sede Roma Milano Milano Milano Milano Impiegato Rossi Verdi Verdi Neri Neri

Impiegato → Sede Progetto → Sede 23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

25

23/10/2002

Progetto Marte Giove Venere Saturno Venere

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

26

Un altro problema • Supponiamo di voler inserire una nuova ennupla che specifica la partecipazione dell'impiegato Neri, che opera a Milano, al progetto Marte Impiegato Rossi Verdi Neri

Sede Roma Milano Milano

Impiegato Rossi Verdi Verdi Neri Neri

Impiegato → Sede Progetto → Sede 23/10/2002

Impiegato Rossi Verdi Neri

Progetto Marte Giove Venere Saturno Venere

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

Sede Roma Milano Milano

Impiegato Progetto Rossi Marte Verdi Giove Verdi Venere Neri Saturno Neri Venere

Neri

27

23/10/2002

Marte

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

28

Conservazione delle dipendenze Impiegato Progetto Rossi Marte Verdi Giove Verdi Venere Neri Saturno Neri Venere Neri Marte

Sede Roma Milano Milano Milano Milano Milano

• Una decomposizione conserva le dipendenze se ciascuna delle dipendenze funzionali dello schema originario coinvolge attributi che compaiono tutti insieme in uno degli schemi decomposti • Progetto → Sede non è conservata

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

29

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

30

5

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Qualità delle decomposizioni

www.copy-riot.org

Una relazione non-normalizzata

• Una decomposizione dovrebbe sempre soddisfare : • la decomposizione senza perdita, che garantisce la ricostruzione delle informazioni originarie • la conservazione delle dipendenze , che garantisce il mantenimento dei vincoli di integrità originari

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

31

Dirigente Progetto Rossi Marte Verdi Giove Verdi Marte Neri Saturno Neri Venere

Progetto Sede → Dirigente Dirigente → Sede

23/10/2002

32

• Una relazione r è in terza forma normale se, per ogni FD (non banale) X → Y definita su r, è verificata almeno una delle seguenti condizioni: • X contiene una chiave K di r • ogni attributo in Y è contenuto in almeno una chiave di r

• Progetto Sede → Dirigente coinvolge tutti gli attributi e quindi nessuna decomposizione può preservare tale dipendenza • quindi in alcuni casi la BCNF “non è raggiungibile” Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

Una nuova forma normale

La decomposizione è problematica

23/10/2002

Sede Roma Milano Milano Milano Milano

33

BCNF e terza forma normale

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

34

Decomposizione in terza forma normale

• la terza forma normale è meno restrittiva della forma normale di Boyce e Codd (e ammette relazioni con alcune anomalie) • ha il vantaggio però di essere sempre “raggiungibile”

• si crea una relazione per ogni gruppo di attributi coinvolti in una dipendenza funzionale • si verifica che alla fine una relazione contenga una chiave della relazione originaria • Dipende dalle dipendenze individuate

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

35

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

36

6

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

Una possibile strategia

www.copy-riot.org

Uno schema non decomponibile in BCNF

• se la relazione non è normalizzata si decompone in terza forma normale

Dirigente Progetto Rossi Verdi Verdi Neri Neri

• alla fine si verifica se lo schema ottenuto è anche in BCNF

Marte Giove Marte Saturno Venere

Sede Roma Milano Milano Milano Milano

Dirigente → Sede Progetto Sede → Dirigente

• Se una relazione ha una sola chiave allora le due forme normali coincidono 23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

37

23/10/2002

Una possibile riorganizzazione Dirigente Progetto Rossi Marte Verdi Giove Verdi Marte Neri Saturno Neri Venere

Sede Roma Milano Milano Milano Milano

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

Decomposizione in BCNF

Reparto 1 1 1 2 2

Dirigente Rossi Verdi Neri

Sede Reparto Roma 1 Milano 1 Milano 2

Dirigente → Sede Reparto Sede Reparto → Dirigente Progetto Sede → Reparto 23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

38

39

Progettazione e normalizzazione

23/10/2002

Nome fornitore

• la teoria della normalizzazione può essere usata nella progettazione logica per verificare lo schema relazionale finale • si può usare anche durante la progettazione concettuale per verificare la qualità dello schema concettuale

Progetto Marte Giove Marte Saturno Venere

Sede Reparto Roma 1 Milano 1 Milano 1 Milano 2 Milano 2

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

40

Codice Nome prodotto

Indirizzo Prodotto Partita IVA

Prezzo

PartitaIVA → NomeFornitore Indirizzo

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

41

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

42

7

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

www.copy-riot.org

Analisi dell’entità • L’entità viola la terza forma normale a causa della dipendenza: PartitaIVA → NomeFornitore Indirizzo

Nome prodotto Codice

Partita Nome IVA fornitore

(1,1) Prodotto

(0,N)

Fornitura

• Possiamo decomporre sulla base di questa dipendenza

Indirizzo

Prezzo

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

43

23/10/2002

Dipartimento

Studente

Tesi

44

• La relationship viola la terza forma normale a causa della dipendenza:

(0,1)

Professore

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

Analisi della relationship

(0,N) (0,N)

Fornitore

Professore → Dipartimento (0,N)

• Possiamo decomporre sulla base di questa dipendenza

Corso di laurea Studente → Corso di laurea Studente → Professore Professore → Dipartimento 23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

45

(1,1)

Professore

Dipartimento

46

• La relationship Tesi è in BCNF sulla base (0,N)

delle dipendenze

(0,1)

Tesi

Studente → CorsoDiLaurea

Studente

Studente → Professore • le due proprietà sono indipendenti • questo suggerisce una ulteriore decomposizione

(0,N)

Corso di laurea

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

Ulteriore analisi sulla base delle dipendenze

(0,N)

Afferenza

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

47

23/10/2002

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

48

8

Copyriot Cafè - Il modo migliore per difendere i saperi è condividerli

(0,N)

Professore

www.copy-riot.org

(0,1)

Tesi

(1,1)

Studente (1,1)

(0,N)

Afferenza

Corso di laurea

(0,N)

(0,N)

Corso di laurea

Dipartimento

23/10/2002

Iscrizione

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 9

49

9