Basi di Dati

40
G. Mecca – [email protected] – Università della G. Mecca – [email protected] – Università della Basilicata Basilicata Basi di Dati Progettazione e Forme Normali versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

description

Basi di Dati. Progettazione e Forme Normali. versione 2.0. Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina). Progettazione e Forme Normali >> Sommario. Sommario. Introduzione Una Tabella non in Forma Normale - PowerPoint PPT Presentation

Transcript of Basi di Dati

Page 1: Basi di Dati

G. Mecca – [email protected] – Università della BasilicataG. Mecca – [email protected] – Università della Basilicata

Basi di Dati

Progettazione e Forme Normali

versione 2.0

Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Page 2: Basi di Dati

2G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Sommario Introduzione

Una Tabella non in Forma Normale Forma Normale di Boyce-Codd

Dipendenza FunzionaleDefinizione Formale

Tecniche per la Verifica di Qualità

Progettazione e Forme Normali >> Sommario

Page 3: Basi di Dati

3G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Introduzione Idealmente

se lo schema concettuale è di qualità (corretto, completo e non ridondante)

se la progettazione logica è condotta applicando correttamente l’algoritmo

la base di dati risultante dovrebbe essere di qualità

in particolare: dovrebbe essere in forma “normale”

Progettazione e Forme Normali >> Introduzione

Page 4: Basi di Dati

4G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Introduzione In realtà

è possibile commettere errori nella fase di analisi e in quella di progettazione logica

è necessario effettuare verifiche di qualità continue, per accertarsi che il risultato sia corretto

E’ necessario quindiapprofondire il concetto di forma normale

Progettazione e Forme Normali >> Introduzione

Page 5: Basi di Dati

5G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Introduzione Intuitivamente

una base di dati è in forma normale se i concetti sono opportunamente rappresentati nelle tabelle

non ci sono ridondanzenon si producono anomalie di

aggiornamento, di inserimento e di cancellazione

Progettazione e Forme Normali >> Introduzione

Page 6: Basi di Dati

6G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Una Tabella Non in Forma Normale

Progettazione e Forme Normali >> Introduzione

studente annoCorso corso voto docentePinco Palla 1 Programmazione 27 F. Totti

Pinco Pietro 2 Programmazione 24 F. Totti

Bruno Pasquale 1 Basi di Dati 30 C. Vieri

Rossi Paolo 2 Basi di Dati 25 C. Vieri

Pinco Palla 1 Tecnologie Web 27 A. Del Piero

Bruno Pasquale 1 Programmazione 21 F. Totti

StudentiCorsiEsami T

studente CHAR(20) PK

corso CHAR(20) PK

annoCorso INTEGER

voto INTEGER

docente VARCHAR(20)

Page 7: Basi di Dati

7G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Una Tabella Non in Forma Normale Da dove nascono i problemi

errori in fase di modello concettuale

Progettazione e Forme Normali >> Introduzione

StudentiCorsiEsami

<<id>> studente

<<id>> corso

annoCorso

voto

docente

Ogni studente è identificato dal suo nomeOgni studente è identificato dal suo nomeed è iscritto ad un anno di corso.ed è iscritto ad un anno di corso.Ogni corso è identificato dal suo nomeOgni corso è identificato dal suo nomeed ha un docente.ed ha un docente.Gli studenti sostengono esami per i corsi,Gli studenti sostengono esami per i corsi,riportando voti tra 18 e 30. Ogni studente riportando voti tra 18 e 30. Ogni studente deve sostenere più esami.deve sostenere più esami.

La specificaLo Schema Concettuale

Page 8: Basi di Dati

8G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Una Tabella Non in Forma Normale Uno schema più corretto

Progettazione e Forme Normali >> Intoduzione

Studente

<<id>> nome

annoCorso

Corso

<<id>> nome

docente

sostiene esame di >

0..* 0..*

voto

Page 9: Basi di Dati

9G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Una Tabella Non in Forma Normale La base di dati

risultante

Progettazione e Forme Normali >> Introduzione

nome annoCorsoPinco Palla 1

Pinco Pietro 2

Bruno Pasquale 1

Rossi Paolo 2

nome docenteProgrammazione F. Totti

Basi di Dati C. Vieri

Tecnologie Web A. Del Piero

studente esame votoPinco Palla Programmazione 27

Pinco Pietro Programmazione 24

Bruno Pasquale Basi di Dati 30

Rossi Paolo Basi di Dati 25

Pinco Palla Tecnologie Web 27

Bruno Pasquale Programmazione 21

Esami T

studente CHAR(20) PK, FK

corso CHAR(20) PK, FK

voto INTEGER

Corso T

nome CHAR(20) PK

docente VARCHAR(20)

Studente T

nome CHAR(20) PK

annoCorso INTEGER

Page 10: Basi di Dati

10G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Una Tabella Non in Forma Normale Intuitivamente

l’errore nasce dalla scelta del modello concettuale

una classe che descrive più di un concettoin generale, invece, ogni classe dovrebbe

descrivere un unico concetto Attenzione

l’errore potrebbe non essere percepibile guardando il modello concettuale

Progettazione e Forme Normali >> Introduzione

Page 11: Basi di Dati

11G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Una Tabella Non in Forma Normale Per evitare questi problemi

è necessario effettuare verifiche ripetute sui risultati della progettazione logica

ed, in caso di errori, correggere lo schema concettuale

Oggetto delle verificheche le tabelle prodotte rispettino una “forma

normale”

Progettazione e Forme Normali >> Introduzione

Page 12: Basi di Dati

12G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Forma Normale Vincolo sulla struttura di una base di dati

garantisce che non si generano anomalie Discuteremo la F. N. di Boyce-Codd

è quella più fortenormalmente ottenibile (tranne casi strani)

Terza Forma Normaleè più debole di quella di Boyce-Coddè sempre ottenibile (ma non ne parleremo)

Progettazione e Forme Normali >> Forma Normale

Page 13: Basi di Dati

13G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Forma Normale Forma Normale di Boyce-Codd (FNBC)

vincolo sull’organizzazione delle tabelle della base di dati

una tabella che rispetta il vincolo si dice “normalizzata”

altrimenti si dice “non normalizzata” Approccio

daremo prima l’intuizione, poi la formalizzazione

Progettazione e Forme Normali >> Forma Normale

Page 14: Basi di Dati

14G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Forma Normale Intuizione

R si dice in FNBC se non esiste nessuna “sottotabella” con una “chiave propria”

Sottotabellaqualsiasi proiezione di R

Sottotabella con chiave propriaproiezione per cui è possibile trovare una

chiave primaria non banale che non è chiave per R

Progettazione e Forme Normali >> Forma Normale

Page 15: Basi di Dati

15G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Forma Normale Nel nostro esempio:

esistono varie sottotabelle con chiavi proprie

Progettazione e Forme Normali >> Forma Normale

Studenti = studente, annoCorso (StudentiCorsiEsami)

Studenti T

studente CHAR(20)

annoCorso INTEGER

la specifica mi dice che “studente”è una chiave per la tabella

StudentiCorsiEsami T

studente CHAR(20) PK

corso CHAR(20) PK

annoCorso INTEGER

voto INTEGER

docente VARCHAR(20)

Page 16: Basi di Dati

16G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Forma Normale In modo simile:

Progettazione e Forme Normali >> Forma Normale

Corsi = corso, docente (StudentiEsamiCorsi)

Corsi T

corso CHAR(20)

docente VARCHAR(20)

la specifica mi dice che “corso”è una chiave per la tabella

StudentiCorsiEsami T

studente CHAR(20) PK

corso CHAR(20) PK

annoCorso INTEGER

voto INTEGER

docente VARCHAR(20)

Page 17: Basi di Dati

17G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Forma Normale Viceversa, in questa tabella

non esistono sottotabelle con chiavi proprie

Progettazione e Forme Normali >> Forma Normale

Esami T

studente CHAR(20) PK

corso CHAR(20) PK

voto INTEGER

Esempio = studente, voto (Esami)

Esempio T

studente CHAR(20)

voto INTEGER

NON ci sonochiavi proprie

Page 18: Basi di Dati

18G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Forma Normale Infatti, guardando l’istanza

non esiste nessuna chiave (vedi specifica)

Progettazione e Forme Normali >> Forma Normale

Esempio T

studente CHAR(20)

voto INTEGER

lo stesso discorso vale per tutte le altre possibili proiezioni

studente votoPinco Palla 27

Pinco Pietro 24

Bruno Pasquale 30

Rossi Paolo 25

Pinco Palla 27

Bruno Pasquale 21

Page 19: Basi di Dati

19G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Forma Normale Un altro esempio

Progettazione e Forme Normali >> Forma Normale

Docente T

codice CHAR(4) PK

cognome CHAR(20)

nome CHAR(20)

facolta CHAR(10)

qualifica CHAR(15)

tipo CHAR(10)

DocenteNumero T

codice CHAR(4)

cognome CHAR(20)

nome CHAR(20)

facolta CHAR(10)

qualifica CHAR(15)

tipo CHAR(10)

numero CHAR(15) PK

Es = codice, cognome (DocenteNumero)questa tabella è normalizzata

questa tabella non è normalizzata

“codice” è una chiave propria

Page 20: Basi di Dati

20G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Forma Normale Per formalizzare

abbiamo bisogno di una nozione ulteriore Concetto di Dipendenza Funzionale

vincolo di integrità aggiuntivo sulle tabelleè una generalizzazione del vincolo di chiave

In sostanzaserve a dire che valori uguali di un attributo

in una tabella implicano valori uguali di altri attributi

Progettazione e Forme Normali >> Forma Normale

Page 21: Basi di Dati

21G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Dipendenza Funzionale Sintassi

data una tabella R con attributi A, B, C, D, ...A, B, ... → C, D, ...

Semanticala tabella R è tale per cui ennuple che hanno

valori uguali per gli attributi A, B, ... hanno necessariamente valori uguali per gli attributi C, D, ...

Progettazione e Forme Normali >> Forma Normale >> Dip. Funzionale

Page 22: Basi di Dati

22G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Dipendenza Funzionale Esempi

Progettazione e Forme Normali >> Forma Normale >> Dip. Funzionale

studente → annoCorso corso → docentestudente, corso → voto, annoCorso, docente

studente annoCorso corso voto docentePinco Palla 1 Programmazione 27 F. Totti

Pinco Pietro 2 Programmazione 24 F. Totti

Bruno Pasquale 1 Basi di Dati 30 C. Vieri

Rossi Paolo 2 Basi di Dati 25 C. Vieri

Pinco Palla 1 Tecnologie Web 27 A. Del Piero

Bruno Pasquale 1 Programmazione 21 F. Totti

Page 23: Basi di Dati

23G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Dipendenza Funzionale In effetti

il vincolo di chiave è un caso particolare di dipendenza funzionale

gli attributi della chiave implicano tutti gli altristudente, corso → voto, annoCorso, docente

Notaper definizione, vale anche:

Progettazione e Forme Normali >> Forma Normale

studente, corso → studente, corso, voto, annoCorso, docente

Page 24: Basi di Dati

24G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Dipendenza Funzionale Dipendenze non banali

non ci sono attributi che compaiono sia a destra che a sinistra

ogni dipendenza è riducibile alla forma non banale eliminando dalla parte destra gli attributi che compaiono a sinistra

In generaleuna tabella ha varie dipendenze funzionali

non banali (e moltissime banali)

Progettazione e Forme Normali >> Forma Normale

Page 25: Basi di Dati

25G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Definizione Formale Forma Normale di Boyce-Codd

una tabella R è in FNBC se, per ogni dipendenza funzionale non banale su R, il membro sinistro è una chiave per R

Intuizionese ci fosse una dipendenza A, B → C, D e A

B non sono chiavi per R, la proiezione di R su A, B, C, D sarebbe una sottotabella con chiave propria

Progettazione e Forme Normali >> Forma Normale >> Def. Formale

Page 26: Basi di Dati

26G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Definizione Formale Esempi: tabella non normalizzata

Progettazione e Forme Normali >> Forma Normale >> Def. Formale

StudentiEsamiCorsi T

studente CHAR(20) PK

corso CHAR(20) PK

annoCorso INTEGER

voto INTEGER

docente VARCHAR(20)

studente → annoCorso

corso → docente

(suggerisce la sottotabellacorrispondente alla proiezione su studente e annoCorso)

(suggerisce la sottotabellacorrispondente alla proiezione su corso e docente)

Page 27: Basi di Dati

27G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Definizione Formale Esempi: tabella non normalizzata

Progettazione e Forme Normali >> Forma Normale >> Def. Formale

codice → cognome, nome, facoltà, qualifica, tipo

DocenteNumero T

codice CHAR(4)

cognome CHAR(20)

nome CHAR(20)

facolta CHAR(10)

qualifica CHAR(15)

tipo CHAR(10)

numero CHAR(15) PK

(suggerisce una qualsiasisottotabella fatta da codiceed uno degli attributi – anche tutti – della parte sinistra)

Page 28: Basi di Dati

28G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Tecniche di Verifica In concreto

scoprire l’errore dopo aver creato la base di dati sarebbe grave

è opportuno verificare continuamente i risultati della progettazione per accorgersi tempestivamente degli errori

Idealmenteverifica sullo schema concettuale (se lo

schema è corretto, tabelle normalizzate)

Progettazione e Forme Normali >> Tecniche di Verifica

Page 29: Basi di Dati

29G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Tecniche di Verifica Quindi, il metodo suggerito è

attenzione alla creazione dello schema concettuale

verifica della correttezza delle classi rispetto ai concetti

verifica a posteriori sulle tabelle derivate dalla progettazione logica

utilizzando le dipendenze funzionali

Progettazione e Forme Normali >> Tecniche di Verifica

Page 30: Basi di Dati

30G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Tecniche di Verifica In generale

ogni classe deve rappresentare un concetto Errori frequenti nello schema logico

una classe traduce due o più concetti in relazione molti-a-molti

una classe traduce due o più concetti in relazione uno-a-molti

una classe traduce in modo scorretto un attributo multivalore

Progettazione e Forme Normali >> Tecniche di Verifica

Page 31: Basi di Dati

31G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Tecniche di Verifica Esempio: molti a molti

Progettazione e Forme Normali >> Tecniche di Verifica

StudentiEsamiCorsi

<<id>> studente

<<id>> corso

annoCorso

voto

docente

Studente

<<id>> nome

annoCorso

Corso

<<id>> nome

docente

sostiene esame di >

0..* 0..*

voto

Page 32: Basi di Dati

32G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Tecniche di Verifica Esempio: 1 a molti

Progettazione e Forme Normali >> Tecniche di Verifica

StudenteEsame

<<id>> matricola

cognome

nome

annoDicorso

voto

lode<<id> data

Studente

<<id>> matricola

cognome

nome

annoDiCorso

Esame

voto

lode

data

ha sostenuto > 0..*1

Page 33: Basi di Dati

33G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Tecniche di Verifica Esempio: attributo multivalore

Progettazione e Forme Normali >> Tecniche di Verifica

DocenteNumeri

cognome

nome

qualifica

numTelefono <<id>>

Docente

cognome

nome

qualifica

numTelefono [0..*]

Page 34: Basi di Dati

34G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Tecniche di Verifica Attenzione

bisogna però evitare l’errore opposto, ovvero quello di separare eccessivamente i concetti

Progettazione e Forme Normali >> Tecniche di Verifica

Votazione

voto

lode

ha riportato > 10..nEsame

data

in questo caso, risalire ai voti costringe a farejoin non necessari

Page 35: Basi di Dati

35G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Tecniche di Verifica Concludendo

è necessario trovare il giusto compromesso nella scelta delle classi

In particolareuna classe deve tradurre un concetto ben

identificabile (non accorpare troppo)non bisogna creare classi che rappresentano

concetti irrilevanti (non separare troppo)

Progettazione e Forme Normali >> Tecniche di Verifica

Page 36: Basi di Dati

36G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Tecniche di Verifica Successivamente

in fase di progettazione fisica e messa a punto “tuning” è possibile ritornare su queste decisioni

in alcuni casi, per motivi di prestazioni, è possibile tollerare tabelle non normalizzate

ma questa è una scelta che va fatta successivamente

Progettazione e Forme Normali >> Tecniche di Verifica

Page 37: Basi di Dati

37G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Sommario Introduzione

Una Tabella non in Forma Normale Forma Normale di Boyce-Codd

Dipendenza FunzionaleDefinizione Formale

Tecniche per la Verifica di Qualità

Progettazione e Forme Normali >> Sommario

Page 38: Basi di Dati

38G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Progettazione e Forme Normali >> Modello Concettuale

Studente

<<id>> matricola

cognome

nome

annoDiCorso

Docente

cognome

nome

qualifica

numTelefono [0..*]

DocenteInterno

facolta

Supplente StudenteLaureaTriennale

StudenteLaureaSpecialistica

0..* 0..1tutor >

relatore >

0..*0..1

Corso

<<id>> codice

titolo

ciclo

titolarità

0..*

0..*

Esame

voto

lode

data

ha sostenuto >1 0..*

< relativo a

0..*1

Schema Concettuale

Tirocinio

sede

dataInizio

durata

ha svolto >

1

0..1

relatore solose al 3 anno

Page 39: Basi di Dati

39G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Progettazione Logica >> Algoritmo di Traduzione

Tirocinio T

studente INTEGER PK, FK

sede CHAR(20)

dataInizio DATE

durata INTEGER

Tutorato T

studente INTEGER PK, FK

tutor INTEGER PK, FK

Studente T

matricola INTEGER PK

cognome CHAR(20)

nome CHAR(20)

ciclo CHAR(15)

anno INTEGER

relatore CHAR(4) FK

Docente T

codice CHAR(4) PK

cognome CHAR(20)

nome CHAR(20)

facolta CHAR(10)

qualifica CHAR(15)

tipo CHAR(10)

Esame T

codice CHAR(5) PK

voto INTEGER

lode BOOL

data DATE

corso CHAR(3) FK

stud INTEGER FK

Corso T

codice CHAR(3) PK

titolo CHAR(20)

ciclo CHAR(20)

Titolarità T

corso CHAR(3) PK, FK

docente CHAR(4) PK, FK

Numeri T

numero CHAR(15) PK

docente CHAR(4) FK

Page 40: Basi di Dati

40G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Termini della Licenza

Termini della Licenza

This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.