De eerste normaalvorm

Introductie tot datamodellering in Snowflake

Nuno Rocha

Director of Engineering

Het proces van datanormalisatie

  • Datanormalisatie: Meertrapsproces om data te structureren en dubbels en afhankelijkheden te minimaliseren

Vervaalde stappen na UNF

Introductie tot datamodellering in Snowflake

Het proces van datanormalisatie (1)

  • Datanormalisatie: Meertrapsproces om data te structureren en dubbels en afhankelijkheden te minimaliseren

Stappen van UNF naar 1NF

Introductie tot datamodellering in Snowflake

Het proces van datanormalisatie (2)

  • Datanormalisatie: Meertrapsproces om data te structureren en dubbels en afhankelijkheden te minimaliseren

Stappen van UNF naar 3NF

Introductie tot datamodellering in Snowflake

Het proces van datanormalisatie (3)

  • Datanormalisatie: Meertrapsproces om data te structureren en dubbels en afhankelijkheden te minimaliseren

Stappen van UNF naar 3NF

Introductie tot datamodellering in Snowflake

De eerste normaalvorm

  • Eerste normaalvorm (1NF): Zorgt dat elke kolom in een entiteit unieke, atomische waarden heeft

Tabel All products met category gemarkeerd

Introductie tot datamodellering in Snowflake

De eerste normaalvorm (1)

  • UNF-categoriedata: L-categorie is niet geïsoleerd, dus waarden kun je niet apart bijwerken

Lijst met alle producten met L

Introductie tot datamodellering in Snowflake

De eerste normaalvorm (2)

  • Validatiestap: Vraag unieke waarden op om te checken of aan 1NF is voldaan.
SELECT DISTINCT category 
FROM allproducts;

Lijst met categorieën

Introductie tot datamodellering in Snowflake

Snowflake-functies voor 1NF

  • TRIM
  • LATERAL & FLATTEN
  • SPLIT
Introductie tot datamodellering in Snowflake

Snowflake-functies voor 1NF

  • TRIM: Verwijdert spaties aan begin en eind van waarden
SELECT TRIM(category)
FROM allproducts;

TRIM-functie in category

Introductie tot datamodellering in Snowflake

Snowflake-functies voor 1NF

  • TRIM: Verwijdert spaties aan begin en eind van waarden.
  • LATERAL & FLATTEN: Behandel een lijst met waarden als een tabel met losse items.
  • SPLIT: Splitst waarden op een scheidingsteken.
SELECT TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;

LATERAL, FLATTEN en SPLIT in category

Introductie tot datamodellering in Snowflake

1NF toepassen

  • Stap 1: Maak een nieuwe entiteit voor de UNF-attribuutwaarden
CREATE OR REPLACE TABLE categories (
    category_id NUMBER(10,0) PRIMARY KEY,
    category VARCHAR(255)
);
Introductie tot datamodellering in Snowflake

1NF toepassen

  • Stap 2.1: Vul de nieuwe entiteit met data uit de oorspronkelijke ongenormaliseerde entiteit
  • INSERT INTO: SQL-commando om nieuwe rijen in een tabel te voegen.
INSERT INTO categories (category_id, category)
___;
Introductie tot datamodellering in Snowflake

1NF toepassen

  • Stap 2.2: Selecteer de data uit allproducts, de oorspronkelijke ongenormaliseerde entiteit
INSERT INTO categories (category_id, category)
SELECT 
    ___,
    ___
FROM allproducts;
Introductie tot datamodellering in Snowflake

1NF toepassen

  • Stap 2.3: Gebruik een functie om waarden in één attribuut te splitsen
INSERT INTO categories (category_id, category)
SELECT 
    ___, 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;
Introductie tot datamodellering in Snowflake

1NF toepassen

  • Stap 2.4: Kies het rijnummer als unieke identifier
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;
Introductie tot datamodellering in Snowflake

1NF toepassen

  • Stap 2.4: Agregeer data om unieke categorieën te krijgen
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);
Introductie tot datamodellering in Snowflake

Richting datanormalisatie

All products-data, van UNF naar 1NF

Introductie tot datamodellering in Snowflake

Overzicht: termen en functies

  • Datanormalisatie: Data structureren om dubbels en afhankelijkheid te minimaliseren
  • Normaalvormen: Richtlijnen voor datanormalisatie
  • Eerste normaalvorm (1NF): Elke kolom heeft unieke, atomische waarden
  • INSERT INTO: SQL-commando om nieuwe rijen toe te voegen
  • TRIM: Verwijdert spaties aan begin en eind van waarden
  • LATERAL FLATTEN(INPUT => SPLIT()): Snowflake-functie om waarden in rijen te splitsen
  • ROW_NUMBER() OVER (ORDER BY): Genereert een volgnummer
  • GROUP BY: Agregeert data met dezelfde waarden
Introductie tot datamodellering in Snowflake

Functie-overzicht

-- Vul een entiteit met data uit een queryresultaat
INSERT INTO table_name (column_name, other_columns)
SELECT 
    -- Genereer een unieke waarde met het rijnummer
    ROW_NUMBER() OVER (ORDER BY TRIM(alias.value)),
    TRIM(alias.value)
FROM another_table,
-- Splits een tekstattribuut op basis van een scheidingsteken 
LATERAL FLATTEN(INPUT => SPLIT(another_table.column_name, 'delimiter_value'))alias
-- Agregeer data om waarden uniek te maken
GROUP BY TRIM(alias.value);
Introductie tot datamodellering in Snowflake

Laten we oefenen!

Introductie tot datamodellering in Snowflake

Preparing Video For Download...