Sobes.tech
Middle

Cosa sai delle forme normali nei database?

sobes.tech AI

Risposta dell'AI

Le forme normali (FN) sono un insieme di regole e raccomandazioni per progettare la struttura di un database relazionale, mirate a minimizzare la ridondanza dei dati e prevenire anomalie durante inserimenti, aggiornamenti e cancellazioni.

Forme normali principali:

  • Prima forma normale (1FN):

    • Ogni attributo (colonna) deve contenere valori atomici (indivisibili).
    • Assenza di gruppi ripetitivi di attributi.
    • Ogni riga deve essere unica (presenza di chiave primaria).
  • Seconda forma normale (2FN):

    • È in 1FN.
    • Ogni attributo non chiave deve dipendere completamente dalla chiave primaria (se composta).
  • Terza forma normale (3FN):

    • È in 2FN.
    • Assenza di dipendenze transitive di attributi non chiave dalla chiave primaria (un attributo non chiave non deve dipendere da un altro attributo non chiave).
  • Forma di Boyce-Codd (BCNF):

    • Versione più rigorosa della 3FN.
    • Ogni dipendenza non triviale $X \to Y$ deve avere $X$ come superchiave.
  • Quarta forma normale (4FN):

    • È in BCNF.
    • Assenza di dipendenze multivalore.
  • Quinta forma normale (5FN):

    • È in 4FN.
    • Assenza di dipendenze di join.

Obiettivi della normalizzazione:

  • Riduzione della ridondanza dei dati.
  • Prevenzione di anomalie (inserimenti, aggiornamenti, eliminazioni).
  • Garantire l'integrità dei dati.
  • Semplificare la struttura del database.

Esempio:

Tabella con ridondanza (non in 1FN):

OrderID Prodotto Prezzo
1 Laptop, Mouse 1000, 20
2 Tastiera 50

Tabella normalizzata (in 1FN e superiore):

Tabella "Ordini":

OrderID
1
2

Tabella "Righe d'ordine":

LineID OrderID Prodotto Prezzo
1 1 Laptop 1000
2 1 Mouse 20
3 2 Tastiera 50

La normalizzazione è un passo importante nella progettazione, ma una normalizzazione eccessiva può portare ad un aumento delle join nelle query, il che può influire negativamente sulle prestazioni. La scelta del livello ottimale di normalizzazione dipende dai requisiti specifici e dai compromessi. La denormalizzazione viene talvolta utilizzata per ottimizzare le prestazioni in scenari specifici, violando consapevolmente le regole delle forme normali.