Basi di Dati

Click here to load reader

  • date post

    19-Mar-2016
  • Category

    Documents

  • view

    37
  • download

    0

Embed Size (px)

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

  • Basi di DatiProgettazione e Forme Normaliversione 2.0Questo lavoro concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

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

  • SommarioIntroduzioneUna Tabella non in Forma NormaleForma Normale di Boyce-CoddDipendenza FunzionaleDefinizione FormaleTecniche per la Verifica di QualitProgettazione e Forme Normali >> Sommario

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

  • IntroduzioneIdealmentese lo schema concettuale di qualit (corretto, completo e non ridondante)se la progettazione logica condotta applicando correttamente lalgoritmola base di dati risultante dovrebbe essere di qualitin particolare: dovrebbe essere in forma normaleProgettazione e Forme Normali >> Introduzione

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

  • IntroduzioneIn 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 correttoE necessario quindiapprofondire il concetto di forma normaleProgettazione e Forme Normali >> Introduzione

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

  • IntroduzioneIntuitivamenteuna base di dati in forma normale se i concetti sono opportunamente rappresentati nelle tabellenon ci sono ridondanzenon si producono anomalie di aggiornamento, di inserimento e di cancellazioneProgettazione e Forme Normali >> Introduzione

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

  • Una Tabella Non in Forma NormaleProgettazione e Forme Normali >> Introduzione

    studenteannoCorsocorsovotodocentePinco Palla1Programmazione27F. TottiPinco Pietro2Programmazione24F. TottiBruno Pasquale1Basi di Dati30C. VieriRossi Paolo2Basi di Dati25C. VieriPinco Palla1Tecnologie Web27A. Del PieroBruno Pasquale1Programmazione21F. Totti

    StudentiCorsiEsamiTstudente CHAR(20)PKcorso CHAR(20) PKannoCorso INTEGERvoto INTEGERdocente VARCHAR(20)

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

  • Una Tabella Non in Forma NormaleDa dove nascono i problemierrori in fase di modello concettualeProgettazione e Forme Normali >> IntroduzioneOgni studente identificato dal suo nomeed iscritto ad un anno di corso.Ogni corso identificato dal suo nomeed ha un docente.Gli studenti sostengono esami per i corsi,riportando voti tra 18 e 30. Ogni studente deve sostenere pi esami.La specificaLo Schema Concettuale

    StudentiCorsiEsami studente corsoannoCorsovotodocente

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

  • Una Tabella Non in Forma NormaleUno schema pi correttoProgettazione e Forme Normali >> Intoduzione

    Studente nomeannoCorso

    Corso nomedocente

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

  • Una Tabella Non in Forma NormaleLa base di dati risultanteProgettazione e Forme Normali >> Introduzione

    nomeannoCorsoPinco Palla1Pinco Pietro2Bruno Pasquale1Rossi Paolo2

    nomedocenteProgrammazioneF. TottiBasi di DatiC. VieriTecnologie WebA. Del Piero

    studenteesamevotoPinco PallaProgrammazione27Pinco PietroProgrammazione24Bruno PasqualeBasi di Dati30Rossi PaoloBasi di Dati25Pinco PallaTecnologie Web27Bruno PasqualeProgrammazione21

    EsamiTstudente CHAR(20)PK, FKcorso CHAR(20) PK, FKvoto INTEGER

    CorsoTnome CHAR(20) PKdocente VARCHAR(20)

    StudenteTnome CHAR(20)PKannoCorso INTEGER

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

  • Una Tabella Non in Forma NormaleIntuitivamentelerrore nasce dalla scelta del modello concettualeuna classe che descrive pi di un concettoin generale, invece, ogni classe dovrebbe descrivere un unico concettoAttenzionelerrore potrebbe non essere percepibile guardando il modello concettualeProgettazione e Forme Normali >> Introduzione

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

  • Una Tabella Non in Forma NormalePer evitare questi problemi necessario effettuare verifiche ripetute sui risultati della progettazione logicaed, in caso di errori, correggere lo schema concettualeOggetto delle verificheche le tabelle prodotte rispettino una forma normaleProgettazione e Forme Normali >> Introduzione

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

  • Forma NormaleVincolo sulla struttura di una base di datigarantisce 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

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

  • Forma NormaleForma Normale di Boyce-Codd (FNBC)vincolo sullorganizzazione delle tabelle della base di datiuna tabella che rispetta il vincolo si dice normalizzataaltrimenti si dice non normalizzataApprocciodaremo prima lintuizione, poi la formalizzazioneProgettazione e Forme Normali >> Forma Normale

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

  • Forma NormaleIntuizioneR si dice in FNBC se non esiste nessuna sottotabella con una chiave propriaSottotabellaqualsiasi proiezione di RSottotabella con chiave propriaproiezione per cui possibile trovare una chiave primaria non banale che non chiave per R Progettazione e Forme Normali >> Forma Normale

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

  • Forma NormaleNel nostro esempio:esistono varie sottotabelle con chiavi proprieProgettazione e Forme Normali >> Forma NormaleStudenti = p studente, annoCorso (StudentiCorsiEsami)la specifica mi dice che studente una chiave per la tabella

    StudentiTstudente CHAR(20)annoCorso INTEGER

    StudentiCorsiEsamiTstudente CHAR(20)PKcorso CHAR(20) PKannoCorso INTEGERvoto INTEGERdocente VARCHAR(20)

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

  • Forma NormaleIn modo simile:Progettazione e Forme Normali >> Forma NormaleCorsi = p corso, docente (StudentiEsamiCorsi)la specifica mi dice che corso una chiave per la tabella

    CorsiTcorso CHAR(20)docente VARCHAR(20)

    StudentiCorsiEsamiTstudente CHAR(20)PKcorso CHAR(20) PKannoCorso INTEGERvoto INTEGERdocente VARCHAR(20)

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

  • Forma NormaleViceversa, in questa tabellanon esistono sottotabelle con chiavi proprieProgettazione e Forme Normali >> Forma NormaleEsempio = p studente, voto (Esami)NON ci sonochiavi proprie

    EsamiTstudente CHAR(20)PKcorso CHAR(20) PKvoto INTEGER

    EsempioTstudente CHAR(20)voto INTEGER

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

  • Forma NormaleInfatti, guardando listanzanon esiste nessuna chiave (vedi specifica)Progettazione e Forme Normali >> Forma Normale lo stesso discorso vale per tutte le altre possibili proiezioni

    EsempioTstudente CHAR(20)voto INTEGER

    studentevotoPinco Palla27Pinco Pietro24Bruno Pasquale30Rossi Paolo25Pinco Palla27Bruno Pasquale21

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

  • Forma NormaleUn altro esempioProgettazione e Forme Normali >> Forma Normale Es = p codice, cognome (DocenteNumero)questa tabella normalizzataquesta tabella non normalizzatacodice una chiave propria

    DocenteTcodice CHAR(4)PKcognome CHAR(20)nome CHAR(20)facolta CHAR(10)qualifica CHAR(15)tipo CHAR(10)

    DocenteNumeroTcodice CHAR(4)cognome CHAR(20)nome CHAR(20)facolta CHAR(10)qualifica CHAR(15)tipo CHAR(10)numero CHAR(15)PK

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

  • Forma NormalePer formalizzareabbiamo bisogno di una nozione ulterioreConcetto di Dipendenza Funzionalevincolo 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 attributiProgettazione e Forme Normali >> Forma Normale

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

  • Dipendenza FunzionaleSintassidata 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

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

  • Dipendenza FunzionaleEsempiProgettazione e Forme Normali >> Forma Normale >> Dip. Funzionalestudente annoCorso corso docentestudente, corso voto, annoCorso, docente

    studenteannoCorsocorsovotodocentePinco Palla1Programmazione27F. TottiPinco Pietro2Programmazione24F. TottiBruno Pasquale1Basi di Dati30C. VieriRossi Paolo2Basi di Dati25C. VieriPinco Palla1Tecnologie Web27A. Del PieroBruno Pasquale1Programmazione21F. Totti

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

  • Dipendenza FunzionaleIn effettiil vincolo di chiave un caso particolare di dipendenza funzionalegli attributi della chiave implicano tutti gli altristudente, corso voto, annoCorso, docenteNotaper definizione, vale anche:Progettazione e Forme Normali >> Forma Normalestudente, corso studente, corso, voto, annoCorso, docente

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

  • Dipendenza FunzionaleDipendenze non banalinon ci sono attributi che compaiono sia a destra che a sinistraogni dipendenza riducibile alla forma non banale eliminando dalla parte destra gli attributi che compaiono a sinistraIn generaleuna tabella ha varie dipendenze funzionali non banali (e moltissime banali)Progettazione e Forme Normali >> Forma Normale

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

  • Definizione FormaleForma Normale di Boyce-Codduna tabella R in FNBC se, per ogni dipendenza funzionale non banale su R, il membro sinistro una chiave per RIntuizionese ci fosse una dipendenza A, B C, D e A B non s