LA NORMALIZZAZIONE
ESEMPIO DI NORMALIZZAZIONE(1FN) IDAziendaRagioneSocialePIVANomeSocioQuotaSocio 1F.lli Damatino spa Roberto Damatino 20% Angela Damatino 34% Marcello Damatino 46% 2Pellicano Pelli spa John Pelllicano 75% Kharim Pellicano 25% SOCI_AZIENDE 1.Verificare che la relazione sia in prima formale (1FN) ovvero che non ci siano attributi non atomici. La relazione SOCI_AZIENDE non è in 1FN perché NomeSocio e QuotaSocio sono attributi multivalore (non atomici). Se la relazione contiene attributi multivalore, si creano due relazioni: la prima contenente tutti i campi atomici e la seconda contenente tutti i campi multivalore raggruppati in base a legami logici ed aggiungendo la chiave esterna verso la prima relazione.
ESEMPIO DI NORMALIZZAZIONE(1FN) IDAziendaRagioneSocialePIVANomeSocioQuotaSocio 1F.lli Damatino spa Roberto Damatino 20% Angela Damatino 34% Marcello Damatino 46% 2Pellicano Pelli spa John Pelllicano 75% Kharim Pellicano 25% SOCI_AZIENDE Se la relazione contiene attributi multivalore, si creano due relazioni: la prima contenente tutti i campi atomici e la seconda contenente tutti i campi multivalore raggruppati in base a legami logici ed aggiungendo la chiave esterna verso la prima relazione. IDAziendaRagioneSocialePIVA 1F.lli Damatino spa Pellicano Pelli spa AZIENDE IDSocioNomeSocioQuotaSocioIDAzienda 1Roberto Damatino 20%1 2Angela Damatino 34%1 3Marcello Damatino 46%1 4John Pelllicano 75%2 5Kharim Pellicano 25%2 SOCI
ESEMPIO DI NORMALIZZAZIONE(1FN) SOCI_AZIENDE(IDAzienda,RagioneSociale,PIVA,NomeSocio,QuotaSocio) AZIENDE(IDAzienda,RagioneSociale,PIVA) SOCI(IDSocio,NomeSocio,QuotaSocio,IDAzienda) RELAZIONE NON 1FN RELAZIONI IN 1FN
ESEMPIO DI NORMALIZZAZIONE(2FN) NUMCONTODATAMOVINTESTATARIOIMPORTO /11/ :01.01MARIO ROSSI-€ 56, /11/ :11.56GIUSEPPE VERDI € 780, /11/ :13.09MARIO ROSSI € 190,78 MOVIMENTI_CC 2. Se la relazione è in 1FN, individuare le dipendenze funzionali e le chiavi candidate: (NUMCONTO,DATAMOV)-> (INTESTATARIO,IMPORTO) (chiave primaria) NUMCONTO -> INTESTATARIO MOVIMENTI_CC(NUMCONTO,DATAMOV,INTESTATARIO,IMPORTO) La dipendenza NUMCONTO -> INTESTATARIO richiede una trasformazione dello schema della relazione perché INTESTATARIO (attributo non-chiave) non dipende dall’intera chiave ma solo da un attributo chiave NUMCONTO.
ESEMPIO DI NORMALIZZAZIONE(2FN) NUMCONTODATAMOVINTESTATARIOIMPORTO /11/ :01.01MARIO ROSSI-€ 56, /11/ :11.56GIUSEPPE VERDI € 780, /11/ :13.09MARIO ROSSI € 190,78 MOVIMENTI_CC 2.a Si deve costruire una nuova relazione con tutti gli attributi della dipendenza funzionale. La dipendenza NUMCONTO -> INTESTATARIO richiede una trasformazione dello schema della relazione perché INTESTATARIO non dipende dall’intera chiave. CONTICORRENTI(NUMCONTO,INTESTATARIO) 2.b Il determinante della dipendenza funzionale diventa chiave primaria della relazione. CONTICORRENTI(NUMCONTO,INTESTATARIO)
ESEMPIO DI NORMALIZZAZIONE(2FN) NUMCONTODATAMOVINTESTATARIOIMPORTO /11/ :01.01MARIO ROSSI-€ 56, /11/ :11.56GIUSEPPE VERDI € 780, /11/ :13.09MARIO ROSSI € 190,78 MOVIMENTI_CC 2.c Si deve creare una seconda relazione rimuovendo dalla relazione di partenza gli attributi determinati dalla dipendenza. Il determinante della dipendenza diventa chiave esterna verso la prima relazione. MOVIMENTI_CC(NUMCONTO,DATAMOV,IMPORTO) NUMCONTO diventa chiave esterna verso la relazione CONTICORRENTI.
ESEMPIO DI NORMALIZZAZIONE(2FN) NUMCONTODATAMOVINTESTATARIOIMPORTO /11/ :01.01MARIO ROSSI-€ 56, /11/ :11.56GIUSEPPE VERDI € 780, /11/ :13.09MARIO ROSSI € 190,78 MOVIMENTI_CC NUMCONTODATAMOVIMPORTO /11/ :01.01-€ 56, /11/ :11.56 € 780, /11/ :13.09 € 190,78 MOVIMENTI_CC NUMCONTOINTESTATARIO MARIO ROSSI GIUSEPPE VERDI CONTICORRENTI
ESEMPIO DI NORMALIZZAZIONE(2FN) Ogni relazione con chiave primaria composta da un solo attributo è già in 2FN. Ad es. STUDENTI(Matricola,Cognome,Nome,DataNascita,NumTelefono) La relazione è già in 2FN perché tutti i campi sono atomici (1FN) e tutti gli attributi non- chiave ovviamente dipendono dall’intera chiave primaria (formata da un solo attributo). VOCIFATTURE(IdProdotto,NumFattura,NomeProdotto,Quantità,Prezzo, TotaleParziale) La relazione è in 1FN ma non è in 2FN perché l’attributo NomeProdotto dipende dall’attributo IdProdotto.
ESEMPIO DI NORMALIZZAZIONE(3FN) La 3FN si ha se la relazione è in 2FN e tutti gli attributi non-chiave non dipendono da altri attributi non-chiave (dipendenza transitiva). Si applicano le stesse regole per la 2FN. Ad es. STUDENTI(Matricola,Cognome,Nome,DataNascita, LuogoNascita,NumAbitanti) La relazione è già in 2FN perché tutti i campi sono atomici (1FN), tutti gli attributi non- chiave dipendono dall’intera chiave primaria (formata da un solo attributo) ma NumAbitanti (attributo non-chiave) dipende da LuogoNascita (attributo non- chiave). Applicando le stesse regole per la 2FN, si ottengono le seguenti relazioni: STUDENTI(Matricola,Cognome,Nome,DataNascita,CodCittà) CITTA’(CodCittà,NomeCittà,NumAbitanti)
ESERCIZI NORMALIZZAZIONE IDContattoContattoNumTelefonoDataOraChiamataDurataSecondi 1Mario Rossi /01/ /01/ /01/ Giuseppe Verdi /02/ /02/ CONTATTI ESERCIZIO N.1: IDPRODOTTOPRODOTTOQUANTITA'PREZZODATACLIENTEINDIRIZZOCLIENTECITTACLIENTE SGFSAMSUNG GEAR FIT34€ 299,0007/02/2015Poviano srlVia delle Povie, 78Barletta SGASAMSUNG GALAXY A710€ 499,0008/02/2015Rizzuccio sncVia delle Rizze, 64Cerignola AI6APPLE IPHONE 523€ 599,0011/02/2015Poviano srlVia delle Povie, 78Barletta HA7HUAWEI ASCEND 710€ 159,0014/02/2015Rizzuccio sncVia delle Rizze, 64Cerignola AP7ALCATEL POP C76€ 139,0016/02/2015Maffiona sncViale delle Maffie, 12Trani VENDITE ESERCIZIO N.2:
ESERCIZI NORMALIZZAZIONE ESERCIZIO N.3: MOVIMENTI(IDPRODOTTO, CODMAGAZZINO, DATAMOVIMENTO, NOMEPRODOTTO,MAGAZZINO,QUANTITA’) ESERCIZIO N.4: CONCESSIONARIE(IDCONC,NOME,CASAAUTO,INDIRIZZO,MODELLI_IN_VENDITA) ESERCIZIO N.5: TABLET(ID,NOMEMODELLO,MARCA,NAZIONEMARCA,SITOWEB)
ESEMPIO SVOLGIMENTO ESERCIZIO Portare in 3FN (Terza Forma Normale) la relazione seguente: IDFATTURADATAFATTURAIDPRODOTTONOMEPRODOTTOQUANTITA’ PREZZO MAGAZZINOKMQ 5613/02/ KONDER DELIS34 € 0,50 CEDI /02/ KONDER BUEN70 € 0,90 CEDI /02/ KONDER DELIS90 € 1,50 CEDI 1900 VOCIFATTURE(IdFattura,DataFattura,IdProdotto,NomeProdotto,Quantità,Prezzo, Magazzino,Kmq)
ESEMPIO SVOLGIMENTO ESERCIZIO La relazione FATTURE è in 1FN perché tutti gli attributi sono atomici. Verificare che la relazione sia in Prima Forma Normale (1FN) individuando l’eventuale presenza di attributi multivalore (non atomici). VOCIFATTURE(IdFattura,DataFattura,IdProdotto,NomeProdotto,Quantità,Prezzo, Magazzino,Kmq) IDFATTURADATAFATTURAIDPRODOTTONOMEPRODOTTOQUANTITA’ PREZZO MAGAZZINOKMQ 5613/02/ KONDER DELIS34 € 0,50 CEDI /02/ KONDER BUEN70 € 0,90 CEDI /02/ KONDER DELIS90 € 1,50 CEDI 1900
2FN: DIPENDENZE PARZIALI Verificare che la relazione sia in Seconda Forma Normale (2FN) individuando l’eventuale presenza di dipendenze parziali. La relazione FATTURE non è in 2FN perché contiene le seguenti dipendenze parziali: IDFATTURA - > DATAFATTURA IDPRODOTTO -> (NOMEPRODOTTO,MAGAZZINO,KMQ) VOCIFATTURE(IdFattura,DataFattura,IdProdotto,NomeProdotto,Quantità,Prezzo, Magazzino,Kmq) IDFATTURADATAFATTURAIDPRODOTTONOMEPRODOTTOQUANTITA’ PREZZO MAGAZZINOKMQ 5613/02/ KONDER DELIS34 € 0,50 CEDI /02/ KONDER BUEN70 € 0,90 CEDI /02/ KONDER DELIS90 € 1,50 CEDI 1900
2FN: DIPENDENZE PARZIALI La dipendenza parziale IDFATTURA - > DATAFATTURA si risolve creando una nuova relazione FATTURE che contiene entrambi gli attributi della dipendenza IDFATTURA e DATAFATTURA e con chiave primaria l’attributo determinante (a sinistra) IDFATTURA: FATTURE(IDFATTURA,DATAFATTURA) Mentre dalla relazione di partenza VOCIFATTURE si devono togliere gli attributi determinati (a destra nella dipendenza) DATAFATTURA e IDFATTURA diventa chiave esterna verso FATTURE: VOCIFATTURE(IdFattura,IdProdotto,NomeProdotto,Quantità,Prezzo,Magazzino,Kmq)
2FN: DIPENDENZE PARZIALI La dipendenza parziale IDPRODOTTO -> (NOMEPRODOTTO,MAGAZZINO,KMQ) si risolve creando una nuova relazione PRODOTTI che contiene entrambi gli attributi della dipendenza IDPRODOTTO, NOMEPRODOTTO, MAGAZZINO e KMQ e con chiave primaria l’attributo determinante (a sinistra della dipendenza) IDPRODOTTO: PRODOTTI(IDPRODOTTO,NOMEPRODOTTO,MAGAZZINO,KMQ) Mentre dalla relazione di partenza VOCIFATTURE si devono togliere gli attributi determinati (a destra nella dipendenza) NOMEPRODOTTO e IDPRODOTTO diventa chiave esterna verso PRODOTTI : VOCIFATTURE(IDFATTURA,IDPRODOTTO,QUANTITÀ,PREZZO)
2FN: DIPENDENZE PARZIALI Si può affermare che la relazione VOCIFATTURE(IDFATTURA,IDPRODOTTO,QUANTITÀ,PREZZO) è in 2FN perché è in 1FN e non contiene alcuna dipendenza parziale. Si può affermare che la relazione FATTURE(IDFATTURA,DATAFATTURA) è in 2FN perché è in 1FN e non contiene alcuna dipendenza parziale. Si può affermare che la relazione PRODOTTI(IDPRODOTTO,NOMEPRODOTTO,MAGAZZINO,KMQ) è in 2FN perché è in 1FN e non contiene alcuna dipendenza parziale.
3FN: DIPENDENZE TRANSITIVE Verificare che le relazioni siano in Terza Forma Normale (3FN) individuando l’eventuale presenza di dipendenze transitive. La relazione VOCIFATTURE(IDFATTURA,IDPRODOTTO,QUANTITÀ,PREZZO) è in 3FN perché è in 2FN e tutti gli attributi non-chiave dipendono direttamente dalla chiave primaria (non contiene dipendenze transitive). La relazione FATTURE(IDFATTURA,DATAFATTURA) è in 3FN perché è in 2FN e tutti gli attributi non-chiave dipendono direttamente dalla chiave primaria (non contiene dipendenze transitive). La relazione PRODOTTI(IDPRODOTTO,NOMEPRODOTTO,MAGAZZINO,KMQ) NON è in 3FN perché contiene la seguente dipendenza transitiva: MAGAZZINO -> KMQ
ESEMPIO SVOLGIMENTO ESERCIZIO La dipendenza parziale MAGAZZINO -> KMQ si risolve creando una nuova relazione MAGAZZINI che contiene entrambi gli attributi della dipendenza MAGAZZINO e KMQ e con chiave primaria l’attributo determinante (a sinistra) MAGAZZINO : MAGAZZINI(MAGAZZINO,KMQ) Mentre dalla relazione di partenza PRODOTTI si devono togliere gli attributi determinati (a destra nella dipendenza) KMQ: PRODOTTI(IDPRODOTTO,NOMEPRODOTTO,MAGAZZINO) PRODOTTI(IDPRODOTTO,NOMEPRODOTTO,MAGAZZINO,KMQ) PRODOTTI(IDPRODOTTO, NOMEPRODOTTO, MAGAZZINO) MAGAZZINI(MAGAZZINO,KMQ)
3FN: DIPENDENZE TRANSITIVE La relazione VOCIFATTURE(IDFATTURA,IDPRODOTTO,QUANTITÀ,PREZZO) è in 3FN perché è in 2FN e tutti gli attributi non-chiave dipendono direttamente dalla chiave primaria (non contiene dipendenze transitive). La relazione FATTURE(IDFATTURA,DATAFATTURA) è in 3FN perché è in 2FN e tutti gli attributi non-chiave dipendono direttamente dalla chiave primaria (non contiene dipendenze transitive). La relazione PRODOTTI(IDPRODOTTO,NOMEPRODOTTO,MAGAZZINO) è in 3FN perché è in 2FN e tutti gli attributi non-chiave dipendono direttamente dalla chiave primaria (non contiene dipendenze transitive). La relazione MAGAZZINI(MAGAZZINO,KMQ) è in 3FN perché è in 2FN e tutti gli attributi non-chiave dipendono direttamente dalla chiave primaria (non contiene dipendenze transitive).
CONCLUSIONE VOCIFATTURE(IDFATTURA,DATAFATTURA,IDPRODOTTO,NOMEPRODOTTO, QUANTITÀ,PREZZO,MAGAZZINO,KMQ) VOCIFATTURE(IDFATTURA,IDPRODOTTO,QUANTITÀ,PREZZO) FATTURE(IDFATTURA,DATAFATTURA) PRODOTTI(IDPRODOTTO,NOMEPRODOTTO,MAGAZZINO) MAGAZZINI(MAGAZZINO,KMQ)
PRIMA FORMA NORMALE (1FN) IDFATTURADATAFATTURAIDPRODOTTONOMEPRODOTTOQUANTITA’MAGAZZINOKMQRESPONSABILE 5613/02/ KONDER DELIS34CEDI 1900GORI CLAUDIO ROSSI GIANNI 8714/02/ KONDER BUEN70CEDI 2750FOTI UGO 8714/02/ KONDER DELIS90CEDI 1900GORI CLAUDIO ROSSI GIANNI IDRESPONSABILERESPONSABILEMAGAZZINO 1GORI CLAUDIOCEDI 1 2ROSSI GIANNICEDI 1 3FOTI UGOCEDI 2 IDFATTURADATAFATTURAIDPRODOTTONOMEPRODOTTOQUANTITA’MAGAZZINOKMQ 5613/02/ KONDER DELIS34CEDI /02/ KONDER BUEN70CEDI /02/ KONDER DELIS90CEDI 1900 FATTURE RESPONSABILI
PRIMA FORMA NORMALE (1FN) FATTURE(IDFATTURA,DATAFATTURA,IDPRODOTTO,NOMEPRODOTTO,QUANTITA’, MAGAZZINO,KMQ,RESPONSABILE) FATTURE(IDFATTURA,DATAFATTURA,IDPRODOTTO,NOMEPRODOTTO,QUANTITA’, MAGAZZINO,KMQ) RESPONSABILI(IDRESPONSABILE,RESPONSABILE,MAGAZZINO)