2NF e 3NF

Introduzione al Data Modeling in Snowflake

Nuno Rocha

Director of Engineering

Introduzione alla 2NF

  • Seconda forma normale (2NF): Elimina le dipendenze parziali; ogni attributo non chiave deve dipendere funzionalmente dalla chiave primaria

Passi da UNF a 3NF

Introduzione al Data Modeling in Snowflake

Introduzione alla 2NF (1)

  • Seconda forma normale (2NF): Elimina le dipendenze parziali; ogni attributo non chiave deve dipendere funzionalmente dalla chiave primaria
  • Dipendenza funzionale: La chiave primaria identifica esplicitamente un attributo

Badge dipendenti che mostrano la dipendenza funzionale

Introduzione al Data Modeling in Snowflake

Introduzione alla 2NF (2)

  • Seconda forma normale (2NF): Elimina le dipendenze parziali; ogni attributo non chiave deve dipendere funzionalmente dalla chiave primaria.
  • Dipendenza funzionale: La chiave primaria identifica esplicitamente un attributo.
  • Dipendenza parziale: Solo parte della chiave primaria serve per identificare un attributo.

Badge dipendenti che mostrano la dipendenza parziale

Introduzione al Data Modeling in Snowflake

Seconda forma normale

Entità Allproducts, prodotto conforme alla 2NF

Introduzione al Data Modeling in Snowflake

Seconda forma normale

Entità Allproducts, problema di dettaglio con 2NF

Introduzione al Data Modeling in Snowflake

Seconda forma normale

Entità Allproducts, problema di dettaglio con 2NF nel produttore

Introduzione al Data Modeling in Snowflake

Passare alla 2NF

  • Passo 1: Crea nuove entità per allocare gli attributi con dipendenza parziale.
CREATE OR REPLACE TABLE manufacturers (
    manufacturer_id NUMBER(10,0) PRIMARY KEY,
    manufacturer VARCHAR(255),
    location VARCHAR(255)
);
CREATE OR REPLACE TABLE details (
    detail_id NUMBER(10,0) PRIMARY KEY,
    detail VARCHAR(255)
);
Introduzione al Data Modeling in Snowflake

Passare alla 2NF

  • Passo 2: Popola le entità con i dati dall’entità inizialmente non normalizzata.
INSERT INTO manufacturers (manufacturer_id, manufacturer, location)
SELECT DISTINCT manufacturer_id, 
    manufacturer_name,
    location
FROM allproducts;
INSERT INTO details (detail_id, detail)
SELECT DISTINCT detail_id, 
    detail_description
FROM allproducts;
Introduzione al Data Modeling in Snowflake

Passare alla 2NF

Dati All products, da UNF a 2NF

Introduzione al Data Modeling in Snowflake

Introduzione alla 3NF

  • Terza forma normale (3NF): Elimina le dipendenze transitive; gli attributi non chiave devono dipendere direttamente dalla chiave primaria.

Passi da UNF a 3NF

Introduzione al Data Modeling in Snowflake

Introduzione alla 3NF

  • Terza forma normale (3NF): Elimina le dipendenze transitive; gli attributi non chiave devono dipendere direttamente dalla chiave primaria.
  • Dipendenza transitiva: Un attributo dipende da un altro attributo che non è la chiave primaria.

Badge dipendenti che mostrano la dipendenza transitiva

Introduzione al Data Modeling in Snowflake

Terza forma normale

Location non conforme alla 3NF

Introduzione al Data Modeling in Snowflake

Passare alla 3NF

  • Passo 1: Crea una nuova entità per allocare gli attributi con dipendenza transitiva.
CREATE TABLE locations (
    location_id NUMBER(10,0) PRIMARY KEY,
    location VARCHAR(255)
);
Introduzione al Data Modeling in Snowflake

Passare alla 3NF

  • Passo 2: Popola le entità con i dati dall’entità inizialmente non normalizzata.
INSERT INTO locations (location_id, location)
SELECT ROW_NUMBER() OVER (ORDER BY location), 
    location
FROM manufacturers
GROUP BY location;
ALTER TABLE manufacturers
DROP COLUMN location;
Introduzione al Data Modeling in Snowflake

Passare alla 3NF

  • Passo 3: Crea una nuova entità per estrarre dall’entità non normalizzata gli attributi rimanenti.
CREATE OR REPLACE TABLE products (
    product_id NUMBER(10,0) PRIMARY KEY,
    name VARCHAR(255)
);
  • Passo 4: Popola l’entità con i valori unici rimasti nell’entità non normalizzata.
INSERT INTO products (product_id, name)
SELECT DISTINCT product_id,
    product_name
FROM allproducts;
Introduzione al Data Modeling in Snowflake

Finalizzare il modello

Passi da UNF a 3NF

Introduzione al Data Modeling in Snowflake

Finalizzare il modello

Dati All products, da UNF a 1NF

Introduzione al Data Modeling in Snowflake

Finalizzare il modello

Dati All products, da UNF a 2NF

Introduzione al Data Modeling in Snowflake

Finalizzare il modello

Dati All products, da UNF a 3NF

Introduzione al Data Modeling in Snowflake

Finalizzare il modello

Dati All products, da UNF a 3NF con relazioni

Introduzione al Data Modeling in Snowflake

Panoramica: termini e funzioni

  • Seconda forma normale (2NF): Elimina le dipendenze parziali; ogni attributo non chiave deve dipendere funzionalmente dalla chiave primaria.
  • Terza forma normale (3NF): Elimina le dipendenze transitive; gli attributi non chiave devono dipendere direttamente dalla chiave primaria.
  • Dipendenza funzionale: La chiave primaria identifica esplicitamente un attributo.
  • Dipendenza parziale: Solo parte della chiave primaria serve per identificare un attributo.
  • Dipendenza transitiva: Un attributo dipende da un altro attributo che non è la chiave primaria.
  • ROW_NUMBER() OVER (ORDER BY): Funzione SQL che genera una numerazione sequenziale.
  • DISTINCT: Clausola SQL che restituisce valori unici di un attributo.
  • DROP: Comando SQL, usato con ALTER TABLE, per rimuovere elementi dall’entità.
Introduzione al Data Modeling in Snowflake

Panoramica funzioni

INSERT INTO table_name (column_name, other_columns)
SELECT DISTINCT column_name,
    other_columns
FROM another_table;
INSERT INTO table_name (column_name)
SELECT ROW_NUMBER() OVER (ORDER BY column_name)
FROM another_table
GROUP BY TRIM(column_name);
ALTER TABLE table_name
DROP COLUMN column_name;
Introduzione al Data Modeling in Snowflake

Ayo berlatih!

Introduzione al Data Modeling in Snowflake

Preparing Video For Download...