logo

Forme normali nei DBMS

Normalizzazione è il processo di minimizzazione ridondanza da una relazione o da un insieme di relazioni. La ridondanza in relazione può causare anomalie di inserimento, cancellazione e aggiornamento. Quindi, aiuta a ridurre al minimo la ridondanza nelle relazioni. Forme normali vengono utilizzati per eliminare o ridurre la ridondanza nelle tabelle del database.

Normalizzazione del DBMS di Ranjan Hero

Nei sistemi di gestione dei database (DBMS), i moduli normali sono una serie di linee guida che aiutano a garantire che la progettazione di un database sia efficiente, organizzata e priva di anomalie dei dati. Esistono diversi livelli di normalizzazione, ciascuno con il proprio insieme di linee guida, note come forme normali.



hashmap in Java

Punti importanti riguardanti le forme normali nei DBMS

  • Prima forma normale (1NF): Questo è il livello più elementare di normalizzazione. In 1NF, ogni cella della tabella dovrebbe contenere un solo valore e ogni colonna dovrebbe avere un nome univoco. La prima forma normale aiuta a eliminare i dati duplicati e a semplificare le query.
  • Seconda forma normale (2NF): 2NF elimina i dati ridondanti richiedendo che ogni attributo non chiave dipenda dalla chiave primaria. Ciò significa che ogni colonna dovrebbe essere direttamente correlata alla chiave primaria e non ad altre colonne.
  • Terza forma normale (3NF): 3NF si basa su 2NF richiedendo che tutti gli attributi non chiave siano indipendenti l'uno dall'altro. Ciò significa che ogni colonna deve essere direttamente correlata alla chiave primaria e non ad altre colonne nella stessa tabella.
  • Forma normale di Boyce-Codd (BCNF): BCNF è una forma più rigorosa di 3NF che garantisce che ogni determinante in una tabella sia una chiave candidata. In altre parole, BCNF garantisce che ogni attributo non chiave dipenda solo dalla chiave candidata.
  • Quarta forma normale (4NF): 4NF è un ulteriore perfezionamento di BCNF che garantisce che una tabella non contenga dipendenze multivalore.
  • Quinta forma normale (5NF): 5NF è il livello più alto di normalizzazione e prevede la scomposizione di una tabella in tabelle più piccole per rimuovere la ridondanza dei dati e migliorare l'integrità dei dati.

I moduli normali aiutano a ridurre la ridondanza dei dati, ad aumentare la coerenza dei dati e a migliorare le prestazioni del database. Tuttavia, livelli più elevati di normalizzazione possono portare a progettazioni e query di database più complesse. È importante trovare un equilibrio tra normalizzazione e praticità quando si progetta un database.

Vantaggi della forma normale

  • Ridotta ridondanza dei dati: La normalizzazione aiuta a eliminare i dati duplicati nelle tabelle, riducendo la quantità di spazio di archiviazione necessario e migliorando l'efficienza del database.
  • Coerenza dei dati migliorata: La normalizzazione garantisce che i dati vengano archiviati in modo coerente e organizzato, riducendo il rischio di incoerenze ed errori dei dati.
  • Progettazione semplificata del database: La normalizzazione fornisce linee guida per l'organizzazione di tabelle e relazioni tra dati, semplificando la progettazione e la gestione di un database.
  • Prestazioni delle query migliorate: Le tabelle normalizzate sono in genere più facili da ricercare e da cui recuperare i dati, con conseguenti prestazioni delle query più veloci.
  • Manutenzione del database più semplice: La normalizzazione riduce la complessità di un database suddividendolo in tabelle più piccole e più gestibili, semplificando l'aggiunta, la modifica e l'eliminazione dei dati.

Nel complesso, l'utilizzo dei moduli normali nel DBMS aiuta a migliorare la qualità dei dati, ad aumentare l'efficienza del database e a semplificare la progettazione e la manutenzione del database.

Prima forma normale

Se una relazione contiene attributi compositi o multivalore, viola la prima forma normale oppure una relazione è nella prima forma normale se non contiene alcun attributo composito o multivalore. Una relazione è in prima forma normale se ogni attributo in quella relazione lo è attributo con valore singolo .



  • Esempio 1 - La relazione STUDENT nella tabella 1 non è in 1NF a causa dell'attributo multivalore STUD_PHONE. La sua scomposizione in 1NF è stata mostrata nella tabella 2.
Esempio

Esempio

  • Esempio 2 –
ID Name Courses ------------------ 1 A c1, c2 2 E c3 3 M C2, c3>
  • Nella tabella sopra il Corso è un attributo multivalore quindi non è in 1NF. La tabella seguente è in 1NF poiché non esiste un attributo multivalore
ID Name Course ------------------ 1 A c1 1 A c2 2 E c3 3 M c2 3 M c3>

Seconda forma normale

Per essere in seconda forma normale, una relazione deve essere in prima forma normale e non deve contenere alcuna dipendenza parziale. Una relazione è in 2NF se lo ha Nessuna dipendenza parziale, i.e. , nessun attributo non primo (attributi che non fanno parte di alcuna chiave candidata) dipende da un sottoinsieme appropriato di qualsiasi chiave candidata della tabella. Dipendenza parziale – Se il sottoinsieme corretto della chiave candidata determina un attributo non primo, si parla di dipendenza parziale.

  • Esempio 1 - Considera la tabella 3 come segue.
STUD_NO COURSE_NO COURSE_FEE 1 C1 1000 2 C2 1500 1 C4 2000 4 C3 1000 4 C1 1000 2 C5 2000>
  • {Nota che ci sono molti corsi con lo stesso costo del corso} Qui, COURSE_FEE non può decidere da solo il valore di COURSE_NO o STUD_NO; COURSE_FEE insieme a STUD_NO non possono decidere il valore di COURSE_NO; COURSE_FEE insieme a COURSE_NO non possono decidere il valore di STUD_NO; Quindi, COURSE_FEE sarebbe un attributo non primo, poiché non appartiene all'unica chiave candidata {STUD_NO, COURSE_NO} ; Ma COURSE_NO -> COURSE_FEE, cioè COURSE_FEE dipende da COURSE_NO, che è un sottoinsieme appropriato della chiave candidata. L'attributo non primario COURSE_FEE dipende da un sottoinsieme appropriato della chiave candidata, che è una dipendenza parziale e quindi questa relazione non è in 2NF. Per convertire la relazione di cui sopra in 2NF, dobbiamo dividere la tabella in due tabelle come: Tabella 1: STUD_NO, COURSE_NO Tabella 2: COURSE_NO, COURSE_FEE
   Table 1     Table 2  STUD_NO COURSE_NO COURSE_NO COURSE_FEE  1 C1 C1 1000 2 C2 C2 1500 1 C4 C3 1000 4 C3 C4 2000 4 C1 C5 2000>
  • NOTA: 2NF cerca di ridurre i dati ridondanti che vengono archiviati in memoria. Ad esempio, se ci sono 100 studenti che frequentano il corso C1, non è necessario memorizzare la tariffa come 1000 per tutti i 100 record, ma possiamo memorizzarla nella seconda tabella poiché la tariffa del corso per C1 è 1000.
  • Esempio 2 – Considera le seguenti dipendenze funzionali nella relazione R (A, B , C, D )
AB ->C [A e B insieme determinano C] BC -> D [B e C insieme determinano D]>

Nella relazione di cui sopra, AB è l’unica chiave candidata e non esiste alcuna dipendenza parziale, ovvero qualsiasi sottoinsieme proprio di AB non determina alcun attributo non primo.



X is a super key. Y is a prime attribute (each element of Y is part of some candidate key).>

Esempio 1: Nella relazione STUDENTE riportata nella Tabella 4, FD imposta: {STUD_NO -> STUD_NAME, STUD_NO -> STUD_STATE, STUD_STATE -> STUD_COUNTRY, STUD_NO -> STUD_AGE}

Chiave candidato: {STUD_NO}

Per questa relazione nella tabella 4, STUD_NO -> STUD_STATE e STUD_STATE -> STUD_COUNTRY sono veri.

Quindi STUD_COUNTRY dipende in modo transitorio da STUD_NO. Viola la terza forma normale.

Per convertirla nella terza forma normale, scomporremo la relazione STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY_STUD_AGE) come: STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_AGE) STATE_COUNTRY (STATE, COUNTRY)

Considera la relazione R(A, B, C, D, E) A -> BC, CD -> E, B -> D, E -> A Tutte le possibili chiavi candidate nella relazione precedente sono {A, E, CD, BC} Tutti gli attributi sono sul lato destro e tutte le dipendenze funzionali sono prime.

Esempio 2: Trova la forma normale più alta di una relazione R(A,B,C,D,E) con FD impostato come {BC->D, AC->BE, B->E}

Passo 1: Come possiamo vedere, (AC)+ ={A,C,B,E,D} ma nessuno dei suoi sottoinsiemi può determinare tutti gli attributi della relazione, quindi AC sarà la chiave candidata. A o C non possono essere derivati ​​da nessun altro attributo della relazione, quindi ci sarà solo 1 chiave candidata {AC}.

Passo 2: Gli attributi primi sono quegli attributi che fanno parte della chiave candidata {A, C} in questo esempio e altri saranno non primitivi {B, D, E} in questo esempio.

Passaggio 3: La relazione R è nella prima forma normale poiché un DBMS relazionale non consente attributi multivalore o compositi. La relazione è nella 2a forma normale perché BC->D è nella 2a forma normale (BC non è un sottoinsieme appropriato della chiave candidata AC) e AC->BE è nella 2a forma normale (AC è la chiave candidata) e B->E è nella 2a forma normale (B non è un sottoinsieme proprio della chiave candidata AC).

La relazione non è in 3a forma normale perché in BC->D (né BC è una super chiave né D è un attributo primo) e in B->E (né B è una super chiave né E è un attributo primo) ma a soddisfare la terza normale, o il lato sinistro di un FD dovrebbe essere la chiave super o il lato destro dovrebbe essere l'attributo principale. Quindi la forma normale più alta di relazione sarà la 2a forma normale.

Ad esempio, considera la relazione R(A, B, C) A -> BC, B -> A e B entrambe super chiavi, quindi la relazione sopra è in BCNF.

Terza forma normale

Una relazione si dice in terza forma normale se non esiste alcuna dipendenza transitiva per gli attributi non primi. La condizione di base con la Terza Forma Normale è che la relazione deve essere nella Seconda Forma Normale.

stringa della data java

Di seguito viene menzionata la condizione base che deve essere mantenuta nella dipendenza funzionale non banale X -> Y:

  • X è una super chiave.
  • Y è un attributo principale (questo significa che l'elemento di Y è una parte della chiave candidata).

Per ulteriori informazioni, fare riferimento a Terza forma normale nei DBMS.

BCNF

BCNF (Boyce-Codd Normal Form) è solo una versione avanzata della Terza Forma Normale. Qui abbiamo alcune regole aggiuntive rispetto alla Terza Forma Normale. La condizione fondamentale affinché qualsiasi relazione sia in BCNF è che sia nella terza forma normale.

Dobbiamo concentrarci su alcune regole di base che valgono per BCNF:

1. Table must be in Third Normal Form. 2. In relation X->Y, X deve essere un supertasto in una relazione.>

Per ulteriori informazioni, fare riferimento a BCNF nel DBMS.

Quarta forma normale

La quarta forma normale non contiene alcuna dipendenza multivaued non banale tranne la chiave candidata. La condizione di base con la quarta forma normale è che la relazione sia in BCNF.

Le regole di base sono menzionate di seguito.

1. It must be in BCNF. 2. It does not have any multi-valued dependency.>

Per ulteriori informazioni, fare riferimento a Quarta forma normale nei DBMS.

Quinta forma normale

La quinta forma normale è anche chiamata forma normale proiettata. Le condizioni di base della quinta forma normale sono menzionate di seguito.

Relation must be in Fourth Normal Form. The relation must not be further non loss decomposed.>

Per ulteriori informazioni, fare riferimento a Quinta forma normale nei DBMS.

Applicazioni delle Forme Normali nei DBMS

  • Consistenza dei dati: I moduli normali garantiscono che i dati siano coerenti e non contengano informazioni ridondanti. Ciò aiuta a prevenire incoerenze ed errori nel database.
  • Ridondanza dei dati: I moduli normali riducono al minimo la ridondanza dei dati organizzando i dati in tabelle che contengono solo dati univoci. Ciò riduce la quantità di spazio di archiviazione richiesto per il database e ne semplifica la gestione.
  • Tempo di risposta: I moduli normali possono migliorare le prestazioni delle query riducendo il numero di join richiesti per recuperare i dati. Ciò aiuta ad accelerare l'elaborazione delle query e a migliorare le prestazioni generali del sistema.
  • Manutenzione della banca dati: I moduli normali semplificano la manutenzione del database riducendo la quantità di dati ridondanti che devono essere aggiornati, eliminati o modificati. Ciò aiuta a migliorare la gestione del database e a ridurre il rischio di errori o incoerenze.
  • Progettazione della banca dati: I moduli normali forniscono linee guida per la progettazione di database efficienti, flessibili e scalabili. Ciò aiuta a garantire che il database possa essere facilmente modificato, aggiornato o ampliato secondo necessità.

Alcuni punti importanti sulle forme normali

  • BCNF è esente da ridondanza causata da dipendenze funzionali.
  • Se una relazione è in BCNF, allora anche 3NF è soddisfatta.
  • Se tutti gli attributi della relazione sono attributi primi, allora la relazione è sempre in 3NF.
  • Una relazione in un Database Relazionale è sempre e almeno nella forma 1NF.
  • Ogni relazione binaria (una relazione con solo 2 attributi) è sempre in BCNF.
  • Se una relazione ha solo chiavi candidate singleton (ovvero ogni chiave candidata consiste di solo 1 attributo), allora la relazione è sempre in 2NF (perché non è possibile alcuna dipendenza funzionale parziale).
  • A volte il modulo BCNF potrebbe non preservare la dipendenza funzionale. In tal caso, scegli BCNF solo se gli FD persi non sono richiesti, altrimenti normalizza solo fino a 3NF.
  • Esistono molte altre forme normali che esistono dopo BCNF, come 4NF e altre. Ma nei sistemi di database del mondo reale generalmente non è necessario andare oltre BCNF.

Conclusione

In conclusione, i database relazionali possono essere organizzati secondo un insieme di regole chiamate forme normali Banca dati amministrazione (1NF, 2NF, 3NF, BCNF, 4NF e 5NF), che riducono la ridondanza dei dati e preservano l'integrità dei dati. Risolvendo vari tipi di anomalie e dipendenze dei dati, ogni forma normale successiva si espande su quella precedente. I requisiti e le proprietà particolari dei dati archiviati determinano quale forma normale deve essere utilizzata; le forme normali più elevate offrono un'integrità dei dati più rigorosa ma possono anche comportare strutture di database più complicate.

Quicksort

Collegamenti alle domande dell'anno precedente

  • GATE CS 2012, Domanda 2
  • GATE CS 2013, Domanda 54
  • GATE CS 2013, Domanda 55
  • GATE CS 2005, Domanda 29
  • GATE CS 2002, Domanda 23
  • GATE CS 2002, Domanda 50
  • GATE CS 2001, Domanda 48
  • GATE CS 1999, Domanda 32
  • GATE IT 2005, Domanda 22
  • GATE IT 2008, Domanda 60
  • GATE CS 2016 (Set 1), Domanda 31

Domande frequenti sulla forma normale

Q.1: Perché la normalizzazione è importante nel DBMS?

Risposta:

La normalizzazione aiuta a prevenire anomalie nel database, garantendo in definitiva la coerenza del database e facilitando la manutenzione del database.

Q.2: È possibile normalizzare eccessivamente il database?

Risposta:

Sì, una normalizzazione eccessiva andrà a query complesse e ridurrà anche le prestazioni. Trova un equilibrio tra normalizzazione e praticità.

Q.3: È necessario normalizzare un database nella forma normale più alta come (BCNF o 4NF)?

Risposta:

Non esiste alcuna condizione necessaria per la normalizzazione del database. Molte volte, la forma inferiore può essere sufficiente per prestazioni e semplicità specifiche.