La prima forma normale

Introduzione al Data Modeling in Snowflake

Nuno Rocha

Director of Engineering

Il processo di normalizzazione dei dati

  • Normalizzazione dei dati: processo in più fasi per strutturare i dati e ridurre duplicazioni e dipendenze

Passi dopo UNF attenuati

Introduzione al Data Modeling in Snowflake

Il processo di normalizzazione dei dati (1)

  • Normalizzazione dei dati: processo in più fasi per strutturare i dati e ridurre duplicazioni e dipendenze

Passi da UNF a 1NF

Introduzione al Data Modeling in Snowflake

Il processo di normalizzazione dei dati (2)

  • Normalizzazione dei dati: processo in più fasi per strutturare i dati e ridurre duplicazioni e dipendenze

Passi da UNF a 3NF

Introduzione al Data Modeling in Snowflake

Il processo di normalizzazione dei dati (3)

  • Normalizzazione dei dati: processo in più fasi per strutturare i dati e ridurre duplicazioni e dipendenze

Passi da UNF a 3NF

Introduzione al Data Modeling in Snowflake

La prima forma normale

  • Prima forma normale (1NF): ogni colonna di un’entità contiene valori atomici unici

Tabella allproducts con category evidenziata

Introduzione al Data Modeling in Snowflake

La prima forma normale (1)

  • Dati di categoria in UNF: la categoria L non è isolata, quindi non puoi aggiornarne i valori

Elenco di tutti i prodotti che contengono L

Introduzione al Data Modeling in Snowflake

La prima forma normale (2)

  • Passo di verifica: interroga i valori unici per valutare la conformità alla 1NF.
SELECT DISTINCT category 
FROM allproducts;

Elenco delle categorie

Introduzione al Data Modeling in Snowflake

Funzioni Snowflake per la 1NF

  • TRIM
  • LATERAL & FLATTEN
  • SPLIT
Introduzione al Data Modeling in Snowflake

Funzioni Snowflake per la 1NF

  • TRIM: rimuove gli spazi all’inizio e alla fine dei valori
SELECT TRIM(category)
FROM allproducts;

Funzione TRIM su category

Introduzione al Data Modeling in Snowflake

Funzioni Snowflake per la 1NF

  • TRIM: rimuove gli spazi all’inizio e alla fine dei valori.
  • LATERAL & FLATTEN: trattano una lista di valori come una tabella di elementi singoli.
  • SPLIT: separa i valori in base a un delimitatore.
SELECT TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;

Funzioni LATERAL, FLATTEN e SPLIT su category

Introduzione al Data Modeling in Snowflake

Applicare la 1NF

  • Passo 1: crea una nuova entità per trasferire i valori dell’attributo in UNF
CREATE OR REPLACE TABLE categories (
    category_id NUMBER(10,0) PRIMARY KEY,
    category VARCHAR(255)
);
Introduzione al Data Modeling in Snowflake

Applicare la 1NF

  • Passo 2.1: popola la nuova entità con i dati dall’entità inizialmente non normalizzata
  • INSERT INTO: comando SQL per inserire nuove righe in una tabella.
INSERT INTO categories (category_id, category)
___;
Introduzione al Data Modeling in Snowflake

Applicare la 1NF

  • Passo 2.2: seleziona i dati da allproducts, l’entità inizialmente non normalizzata
INSERT INTO categories (category_id, category)
SELECT 
    ___,
    ___
FROM allproducts;
Introduzione al Data Modeling in Snowflake

Applicare la 1NF

  • Passo 2.3: usa una funzione per dividere i valori in un attributo specifico
INSERT INTO categories (category_id, category)
SELECT 
    ___, 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;
Introduzione al Data Modeling in Snowflake

Applicare la 1NF

  • Passo 2.4: seleziona il numero di riga per definire un identificatore univoco
INSERT INTO categories (category_id, category)
SELECT 
    ROW_NUMBER() OVER (ORDER BY TRIM(f.value)), 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;
Introduzione al Data Modeling in Snowflake

Applicare la 1NF

  • Passo 2.4: aggrega i dati per generare valori di categoria univoci
INSERT INTO categories (category_id, category)
SELECT 
    ROW_NUMBER() OVER (ORDER BY TRIM(f.value)), 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f
GROUP BY TRIM(f.value);
Introduzione al Data Modeling in Snowflake

Verso la normalizzazione dei dati

Dati di tutti i prodotti, da UNF a 1NF

Introduzione al Data Modeling in Snowflake

Panoramica: termini e funzioni

  • Normalizzazione dei dati: processo per strutturare i dati e ridurre duplicazioni e dipendenze
  • Forme normali: linee guida per applicare la normalizzazione
  • Prima forma normale (1NF): ogni colonna contiene valori atomici unici
  • INSERT INTO: comando SQL per inserire nuove righe
  • TRIM: rimuove gli spazi all’inizio e alla fine dei valori
  • LATERAL FLATTEN(INPUT => SPLIT()): funzione Snowflake che divide i valori in righe
  • ROW_NUMBER() OVER (ORDER BY): genera un numero sequenziale
  • GROUP BY: aggrega i dati con gli stessi valori
Introduzione al Data Modeling in Snowflake

Panoramica delle funzioni

-- Popola un’entità con i dati da un risultato di query
INSERT INTO table_name (column_name, other_columns)
SELECT 
    -- Genera un valore univoco usando il numero di riga
    ROW_NUMBER() OVER (ORDER BY TRIM(alias.value)),
    TRIM(alias.value)
FROM another_table,
-- Dividi un attributo testuale in base a un delimitatore 
LATERAL FLATTEN(INPUT => SPLIT(another_table.column_name, 'delimiter_value'))alias
-- Aggrega i dati per garantire l’univocità dei valori
GROUP BY TRIM(alias.value);
Introduzione al Data Modeling in Snowflake

Ayo berlatih!

Introduzione al Data Modeling in Snowflake

Preparing Video For Download...