Esercizio Base di Dati - Normalizzazione
Salve, mi sto allenando in esercizi per lo scritto di Basi Dati, ho qualche dubbio, talvolta, nell'identificare le dipendenze o, un po' più raramente, le chiavi.
Vi posto quest'esercizio, ditemi se l'ho svolto correttamente:
Dato il seguente schema relazionale:
ACQUISTI(CodUtente, Nickname, Password, CodProdotto, NomeProdotto, TipoProdotto, DataAcquisto, QuantitàAcquistata)
verificare se la relazione è in 3NF ed in caso contrario effettuarne un’opportuna decomposizione.
Ho individuato come chiave:
K={CodUtente, CodProdotto, QuantitàAcquistata}
Notando che la DataAcquisto si riferisce a un'istante (il formato date ha anche ora e minuto) e non un giorno generico, quindi non bisogna metterla nella chiave.
Ho trovato le seguenti dipendenze funzionali:
Cod. Utente -> Nickname, Password
Cod. Prodotto -> NomeProdotto, TipoProdotto
Quindi decompongo nelle seguenti relazioni:
Acquisti (CodUtente, CodProdotto, QuantitàAcquistata, DataAcquisto)
Utenti (CodUtente, Nickname, Password)
Prodotti (CodProdotto, NomeProdotto, TipoProdotto)
Che sono tutte e 3 in 2NF.
In particolare in quest'ultima parte non sono sicuro al massimo, ma ho proceduto così:
- Acquisti e Prodotti sono anche in 3NF.
-Per quanto riguarda Utenti, Password, "tramite" Nickname, dipende in maniera transitiva da CodUtente: quindi Utenti non è in 3NF.
Decompongo quindi in due relazioni:
Utenti(CodUtente, Nickname)
Nicknames(Nickname, Password)
Ed ora dovrei avere tutto in 3NF.
Se ho sbagliato qualcosa, potreste spiegarmene il motivo? Grazie in anticipo.
Vi posto quest'esercizio, ditemi se l'ho svolto correttamente:
Dato il seguente schema relazionale:
ACQUISTI(CodUtente, Nickname, Password, CodProdotto, NomeProdotto, TipoProdotto, DataAcquisto, QuantitàAcquistata)
verificare se la relazione è in 3NF ed in caso contrario effettuarne un’opportuna decomposizione.
Ho individuato come chiave:
K={CodUtente, CodProdotto, QuantitàAcquistata}
Notando che la DataAcquisto si riferisce a un'istante (il formato date ha anche ora e minuto) e non un giorno generico, quindi non bisogna metterla nella chiave.
Ho trovato le seguenti dipendenze funzionali:
Cod. Utente -> Nickname, Password
Cod. Prodotto -> NomeProdotto, TipoProdotto
Quindi decompongo nelle seguenti relazioni:
Acquisti (CodUtente, CodProdotto, QuantitàAcquistata, DataAcquisto)
Utenti (CodUtente, Nickname, Password)
Prodotti (CodProdotto, NomeProdotto, TipoProdotto)
Che sono tutte e 3 in 2NF.
In particolare in quest'ultima parte non sono sicuro al massimo, ma ho proceduto così:
- Acquisti e Prodotti sono anche in 3NF.
-Per quanto riguarda Utenti, Password, "tramite" Nickname, dipende in maniera transitiva da CodUtente: quindi Utenti non è in 3NF.
Decompongo quindi in due relazioni:
Utenti(CodUtente, Nickname)
Nicknames(Nickname, Password)
Ed ora dovrei avere tutto in 3NF.
Se ho sbagliato qualcosa, potreste spiegarmene il motivo? Grazie in anticipo.
