1,741 329 43MB
Italian Pages 745 [120] Year 2002
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