Elenet.net
+1 voto
quesito posto 7 Marzo in Classe quarta da Gianni Messina Esperto (736 punti)
  

3 Risposte

0 voti

La Prima Forma Normale (1NF) è un concetto fondamentale nel processo di normalizzazione dei database relazionali. Essa si focalizza sull'assicurare che le tabelle di un database siano strutturate in modo tale da ridurre la ridondanza dei dati e migliorare l'integrità. Una tabella si dice in 1NF se soddisfa i seguenti criteri:

  1. Attributi Semplici: Tutti gli attributi (o campi) della tabella devono essere atomici, ovvero non divisibili ulteriormente. Questo significa che ciascun campo deve contenere valori semplici e univoci. Per esempio, un campo "NomeCompleto" che contiene sia il nome che il cognome viola la 1NF; sarebbe invece conforme se suddiviso in un campo "Nome" e uno "Cognome".

  2. Assenza di Gruppi Ripetitivi: La tabella non deve contenere insiemi di campi che si ripetono. Ad esempio, una tabella che tiene traccia dei libri preferiti di una persona con campi come "LibroPreferito1", "LibroPreferito2", ecc., viola la 1NF. Invece, ogni libro preferito dovrebbe essere in una riga separata o in una tabella separata che si riferisce alla persona.

  3. Chiave Primaria Unica: Ogni tabella deve avere una chiave primaria unica che identifica ogni riga in modo univoco. La chiave primaria non può essere nulla e deve avere valori unici per ogni riga.

risposta inviata 7 Marzo da Gianni Messina Esperto (736 punti)
0 voti

Esempio Pratico di Non-1NF e Correzione:

Supponiamo di avere una tabella non conforme alla 1NF:

IDClienteNomeIndirizzo
1MarioVia Roma 10, Roma, RM
2LuciaViale Milano 5, Milano, MI

In questo esempio, il campo "Indirizzo" viola la 1NF perché contiene più valori (via, città, provincia) in un unico attributo.

Per correggere la tabella e portarla in 1NF, si può suddividere l'attributo "Indirizzo" in attributi più atomici:

IDClienteNomeViaCittàProvincia
1MarioVia Roma 10RomaRM
2LuciaViale Milano 5MilanoMI

Con questa struttura, la tabella è in Prima Forma Normale perché ogni attributo contiene solo valori atomici, non ci sono gruppi ripetitivi di campi, e ogni riga è univocamente identificabile tramite la chiave primaria.

risposta inviata 7 Marzo da Gianni Messina Esperto (736 punti)
0 voti

Ecco un esempio pratico che illustra il concetto di colonne ripetute, violando quindi il secondo criterio per la Prima Forma Normale (1NF):

Supponiamo di avere una tabella Persona che intende tracciare i nomi dei figli di varie persone. La tabella originale potrebbe apparire così:

IDPersonaNomeFiglio1Figlio2Figlio3
1MarioLucaMarcoNULL
2LuciaSaraNULLNULL

In questa tabella, le colonne Figlio1Figlio2, e Figlio3 sono utilizzate per rappresentare un numero variabile di figli per ogni persona. Questo design viola la 1NF per i seguenti motivi:

  1. Attributi non atomici: Le colonne dei figli sono usate per rappresentare più di un'entità (più figli) nella stessa riga, che può portare a problemi di gestione dei dati quando, ad esempio, una persona ha più di tre figli o meno di tre, lasciando alcune colonne vuote (NULL).

  2. Gruppi Ripetitivi: Le colonne Figlio1Figlio2, e Figlio3 costituiscono un gruppo di colonne che si ripete per ciascun record, rendendo la struttura della tabella non adatta a rappresentare relazioni uno-a-molti in modo efficace.

Per correggere queste violazioni e portare la tabella in 1NF, si dovrebbe ristrutturare il database separando le informazioni sui figli in una tabella separata e collegando ogni figlio alla rispettiva persona tramite una chiave esterna. La soluzione normalizzata potrebbe includere due tabelle come segue:

Tabella Persona:

IDPersonaNome
1Mario
2Lucia

Tabella Figlio:

IDFiglioNomeFiglioIDPersona
1Luca1
2Marco1
3Sara2

In questo modo, ogni figlio è rappresentato in modo atomico in una propria riga nella tabella Figlio, eliminando le colonne ripetitive e consentendo una gestione flessibile del numero di figli associati a ciascuna persona. Questa struttura soddisfa il requisito della 1NF relativo all'atomicità degli attributi e all'assenza di gruppi ripetitivi.

risposta inviata 7 Marzo da Gianni Messina Esperto (736 punti)

Domande correlate

+2 voti
2 risposte
0 voti
0 risposte
+3 voti
1 risposta
quesito posto 7 Marzo in Classe quinta da Gianni Messina Esperto (736 punti) | 144 visite
778 domande
1,565 risposte
639 commenti
1,445 utenti