Pierwsza postać normalna

Wprowadzenie do modelowania danych w Snowflake

Nuno Rocha

Director of Engineering

Proces normalizacji danych

  • Normalizacja danych: Wieloetapowy proces strukturyzacji danych minimalizujący duplikację i zależności

Wyszarzone kroki po UNF

Wprowadzenie do modelowania danych w Snowflake

Proces normalizacji danych (1)

  • Normalizacja danych: Wieloetapowy proces strukturyzacji danych minimalizujący duplikację i zależności

Kroki od UNF do 1NF

Wprowadzenie do modelowania danych w Snowflake

Proces normalizacji danych (2)

  • Normalizacja danych: Wieloetapowy proces strukturyzacji danych minimalizujący duplikację i zależności

Kroki od UNF do 3NF

Wprowadzenie do modelowania danych w Snowflake

Proces normalizacji danych (3)

  • Normalizacja danych: Wieloetapowy proces strukturyzacji danych minimalizujący duplikację i zależności

Kroki od UNF do 3NF

Wprowadzenie do modelowania danych w Snowflake

Pierwsza postać normalna

  • Pierwsza postać normalna (1NF): Zapewnia, że każda kolumna encji przechowuje unikalne wartości atomowe

Tabela wszystkich produktów z wyróżnioną kategorią

Wprowadzenie do modelowania danych w Snowflake

Pierwsza postać normalna (1)

  • Dane UNF – kategoria: Kategoria L nie jest izolowana, co uniemożliwia aktualizację wartości

Lista wszystkich produktów zawierających kategorię L

Wprowadzenie do modelowania danych w Snowflake

Pierwsza postać normalna (2)

  • Krok weryfikacji: Zapytanie o unikalne wartości w celu oceny zgodności z 1NF.
SELECT DISTINCT category 
FROM allproducts;

Lista kategorii

Wprowadzenie do modelowania danych w Snowflake

Funkcje Snowflake dla 1NF

  • TRIM
  • LATERAL & FLATTEN
  • SPLIT
Wprowadzenie do modelowania danych w Snowflake

Funkcje Snowflake dla 1NF

  • TRIM: Usuwa spacje z początku i końca wartości
SELECT TRIM(category)
FROM allproducts;

Funkcja TRIM zastosowana do kategorii

Wprowadzenie do modelowania danych w Snowflake

Funkcje Snowflake dla 1NF

  • TRIM: Usuwa spacje z początku i końca wartości.
  • LATERAL & FLATTEN: Traktuje listę wartości jak tabelę z pojedynczymi elementami.
  • SPLIT: Rozdziela wartości na podstawie separatora.
SELECT TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;

Funkcje LATERAL, FLATTEN i SPLIT zastosowane do kategorii

Wprowadzenie do modelowania danych w Snowflake

Stosowanie 1NF

  • Krok 1: Utwórz nową encję do przeniesienia wartości atrybutów UNF
CREATE OR REPLACE TABLE categories (
    category_id NUMBER(10,0) PRIMARY KEY,
    category VARCHAR(255)
);
Wprowadzenie do modelowania danych w Snowflake

Stosowanie 1NF

  • Krok 2.1: Wypełnij nową encję danymi z pierwotnie nienormalizowanej encji
  • INSERT INTO: Polecenie SQL wstawiające nowe wiersze do tabeli.
INSERT INTO categories (category_id, category)
___;
Wprowadzenie do modelowania danych w Snowflake

Stosowanie 1NF

  • Krok 2.2: Wybierz dane z allproducts – pierwotnie nienormalizowanej encji
INSERT INTO categories (category_id, category)
SELECT 
    ___,
    ___
FROM allproducts;
Wprowadzenie do modelowania danych w Snowflake

Stosowanie 1NF

  • Krok 2.3: Użyj funkcji do podziału wartości w wybranym atrybucie
INSERT INTO categories (category_id, category)
SELECT 
    ___, 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;
Wprowadzenie do modelowania danych w Snowflake

Stosowanie 1NF

  • Krok 2.4: Wybierz numer wiersza, aby zdefiniować unikalny identyfikator
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;
Wprowadzenie do modelowania danych w Snowflake

Stosowanie 1NF

  • Krok 2.4: Agreguj dane, aby uzyskać unikalne wartości kategorii
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);
Wprowadzenie do modelowania danych w Snowflake

W kierunku normalizacji danych

Dane wszystkich produktów – od UNF do 1NF

Wprowadzenie do modelowania danych w Snowflake

Terminologia i przegląd funkcji

  • Normalizacja danych: Proces strukturyzacji danych minimalizujący duplikację i zależności
  • Postacie normalne: Wytyczne dotyczące normalizacji danych
  • Pierwsza postać normalna (1NF): Zapewnia, że każda kolumna encji przechowuje unikalne wartości atomowe
  • INSERT INTO: Polecenie SQL wstawiające nowe wiersze do tabeli
  • TRIM: Funkcja SQL usuwająca spacje z początku i końca wartości
  • LATERAL FLATTEN(INPUT => SPLIT()): Funkcja Snowflake dzieląca wartości na wiersze
  • ROW_NUMBER() OVER (ORDER BY): Funkcja SQL generująca kolejny numer wiersza
  • GROUP BY: Klauzula SQL agregująca dane o tych samych wartościach
Wprowadzenie do modelowania danych w Snowflake

Przegląd funkcji

-- 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);
Wprowadzenie do modelowania danych w Snowflake

Czas na ćwiczenia!

Wprowadzenie do modelowania danych w Snowflake

Preparing Video For Download...