První normální forma

Úvod do datového modelování ve Snowflake

Nuno Rocha

Director of Engineering

Proces normalizace dat

  • Normalizace dat: Víceúrovňový proces strukturování dat za účelem minimalizace redundance a závislostí

Výblé kroky po UNF

Úvod do datového modelování ve Snowflake

Proces normalizace dat (1)

  • Normalizace dat: Víceúrovňový proces strukturování dat za účelem minimalizace redundance a závislostí

Kroky od UNF k 1NF

Úvod do datového modelování ve Snowflake

Proces normalizace dat (2)

  • Normalizace dat: Víceúrovňový proces strukturování dat za účelem minimalizace redundance a závislostí

Kroky od UNF k 3NF

Úvod do datového modelování ve Snowflake

Proces normalizace dat (3)

  • Normalizace dat: Víceúrovňový proces strukturování dat za účelem minimalizace redundance a závislostí

Kroky od UNF k 3NF

Úvod do datového modelování ve Snowflake

První normální forma

  • První normální forma (1NF): Zajišťuje, že každý sloupec entity obsahuje jedinečné atomické hodnoty

Tabulka všech produktů se zvýrazněnou kategorií

Úvod do datového modelování ve Snowflake

První normální forma (1)

  • Data UNF – kategorie: Kategorie L není izolována, nelze aktualizovat hodnoty

Seznam všech produktů obsahujících L

Úvod do datového modelování ve Snowflake

První normální forma (2)

  • Ověření: Dotaz na jedinečné hodnoty pro posouzení souladu s 1NF.
SELECT DISTINCT category 
FROM allproducts;

Seznam kategorií

Úvod do datového modelování ve Snowflake

Funkce Snowflake pro 1NF

  • TRIM
  • LATERAL & FLATTEN
  • SPLIT
Úvod do datového modelování ve Snowflake

Funkce Snowflake pro 1NF

  • TRIM: Odstraní prázdné znaky ze začátku a konce hodnot
SELECT TRIM(category)
FROM allproducts;

Funkce TRIM na sloupci category

Úvod do datového modelování ve Snowflake

Funkce Snowflake pro 1NF

  • TRIM: Odstraní prázdné znaky ze začátku a konce hodnot.
  • LATERAL & FLATTEN: Zpracovává seznam hodnot jako tabulku s jednotlivými záznamy.
  • SPLIT: Rozdělí hodnoty podle oddělovače.
SELECT TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;

Funkce LATERAL, FLATTEN a SPLIT na sloupci category

Úvod do datového modelování ve Snowflake

Aplikace 1NF

  • Krok 1: Vytvoření nové entity pro přenesení hodnot atributu UNF
CREATE OR REPLACE TABLE categories (
    category_id NUMBER(10,0) PRIMARY KEY,
    category VARCHAR(255)
);
Úvod do datového modelování ve Snowflake

Aplikace 1NF

  • Krok 2.1: Naplnění nové entity daty z původně nenormalizované entity
  • INSERT INTO: SQL příkaz pro vložení nových řádků do tabulky.
INSERT INTO categories (category_id, category)
___;
Úvod do datového modelování ve Snowflake

Aplikace 1NF

  • Krok 2.2: Výběr dat z tabulky allproducts – původně nenormalizované entity
INSERT INTO categories (category_id, category)
SELECT 
    ___,
    ___
FROM allproducts;
Úvod do datového modelování ve Snowflake

Aplikace 1NF

  • Krok 2.3: Použití funkce pro rozdělení hodnot v konkrétním atributu
INSERT INTO categories (category_id, category)
SELECT 
    ___, 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;
Úvod do datového modelování ve Snowflake

Aplikace 1NF

  • Krok 2.4: Výběr čísla řádku pro definici jedinečného identifikátoru
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;
Úvod do datového modelování ve Snowflake

Aplikace 1NF

  • Krok 2.4: Agregace dat pro získání jedinečných hodnot kategorií
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);
Úvod do datového modelování ve Snowflake

Na cestě k normalizaci dat

Data všech produktů – od UNF k 1NF

Úvod do datového modelování ve Snowflake

Přehled terminologie a funkcí

  • Normalizace dat: Proces strukturování dat za účelem minimalizace redundance a závislostí
  • Normální formy: Pravidla pro aplikaci normalizace dat
  • První normální forma (1NF): Zajišťuje, že každý sloupec entity obsahuje jedinečné atomické hodnoty
  • INSERT INTO: SQL příkaz pro vložení nových řádků do tabulky
  • TRIM: SQL funkce pro odstranění mezer ze začátku a konce hodnot
  • LATERAL FLATTEN(INPUT => SPLIT()): Funkce Snowflake pro rozdělení hodnot do řádků
  • ROW_NUMBER() OVER (ORDER BY): SQL funkce pro generování pořadového čísla
  • GROUP BY: SQL klauzule pro agregaci dat se stejnými hodnotami
Úvod do datového modelování ve Snowflake

Přehled funkcí

-- Fill a entity with data from a query result
INSERT INTO table_name (column_name, other_columns)
SELECT 
    -- Generate a unique value using the row number
    ROW_NUMBER() OVER (ORDER BY TRIM(alias.value)),
    TRIM(alias.value)
FROM another_table,
-- Split a text attribute value based on a delimiter 
LATERAL FLATTEN(INPUT => SPLIT(another_table.column_name, 'delimiter_value'))alias
-- Aggregate the data to ensure uniqueness of values
GROUP BY TRIM(alias.value);
Úvod do datového modelování ve Snowflake

Pojďme si procvičit!

Úvod do datového modelování ve Snowflake

Preparing Video For Download...