Normalizzazione
Forme normali Evitare la ripetizione e la ridondanza Evitare alcuni problemi in modifiche/cancellazioni Obiettivo: Normalizzazione => 1 Relazione Rel’ Rel’’
Forme normali Una relazione è in 1 NF tutti i suoi attributi sono valori atomici 1 Forma Normale (NF 1) Fornitori(Nome, indirizzo) => Fornitori (Nome, via, num_civico, cap, città) ES.:
Forme normali 1 Forma Normale (NF 1) Dipendenti(matricola, nome, indirizzo, familiari_a_carico) ES.: Dipendenti(matricola, nome, cognome,via, cap, num_civico, citta) Familiari(id_familiare, nome, cognome, parentela, matricola) N.B. è + facile aggiungere altri attributi
Forme normali Dipendenza Funzionale: Si ha dipendenza funzionale tra un attributo X e una chiave K1 =ABC…Z I valori di X dipendono dalla n-pla di valori assunti dalla chiave 2 Forma Normale (NF 2) Es.: k1=ABC a1,b1,c1=> x1 a2,b2,c2=> x2 etc.
Forme normali Una relazione R è in 2 NF R è in 1 NF e Ciascun X € K dipendente funzionalmente da una qualunque chiave candidata (dipende dall’intera chiave) 2 Forma Normale (NF 2)
Forme normali 2 Forma Normale (NF 2) Clinica(cod_esame, descr_esame, medico_specialista, cod_paziente, nome_paziente, medico_curante, recapito_curante, data, esito) ES.: Difficoltà di trattamento: Descrizione dipende solo da cod_esame => è ripetuta!!! Medico_curante dipende solo dal paziente per ogni esame Difficoltà di aggiornamento + di inserimento: non posso mettere il medico_specialista se il paziente non ha fatto almeno 1 analisi ….. %
Forme normali 3 Forma Normale (NF 3) Osservazione: Recapito_curante è ripetuto con il medico curante (per ogni paziente che ha quel medico) Causa: Recapito(non chiave) dipende da Medico_curante(non chiave) e non direttamente da cod_paziente Cioè Cod_paziente=> Medico_curante => Recapito_curante %
Forme normali 3 Forma Normale (NF 3) Se il medico cambia recapito… Se non esitono esami x i pazienti di un medico => non posso inserire il recapito Se cancello l’unico paziente di un medico=> posso perdere info su un medico Osservazione
Forme normali 3 Forma Normale (NF 3) Dipendenza Transitiva: A2 dipende da A1 e A3 dip. da A2 => A3 dip. da A1 (A3 =>A2 e A2 => A1) => (A3 =>A1)
Forme normali 3 Forma Normale (NF 3) Una relazione R è in 3 NF R è in 2 NF e Ciascun X non appartenente a K NON è transitivamente dipendente da Attributi non in chiave K (né a chiavi candidate) Paziente si divide in: PAZIENTE(cod_paziente, nome_paziente, medico_curante) MEDICI(medico_curante, recapito)