Den första normalformen

Introduktion till datamodellering i Snowflake

Nuno Rocha

Director of Engineering

Processen för datanormalisering

  • Datanormalisering: Flerstegsprocess för att strukturera data och minimera duplicering och beroenden

Tonade steg efter UNF

Introduktion till datamodellering i Snowflake

Processen för datanormalisering (1)

  • Datanormalisering: Flerstegsprocess för att strukturera data och minimera duplicering och beroenden

Steg från UNF till 1NF

Introduktion till datamodellering i Snowflake

Processen för datanormalisering (2)

  • Datanormalisering: Flerstegsprocess för att strukturera data och minimera duplicering och beroenden

Steg från UNF till 3NF

Introduktion till datamodellering i Snowflake

Processen för datanormalisering (3)

  • Datanormalisering: Flerstegsprocess för att strukturera data och minimera duplicering och beroenden

Steg från UNF till 3NF

Introduktion till datamodellering i Snowflake

Den första normalformen

  • Första normalformen (1NF): Säkerställer att varje kolumn i en entitet innehåller unika atomära värden

Tabellen allproducts med category markerad

Introduktion till datamodellering i Snowflake

Den första normalformen (1)

  • UNF-kategoridata: Kategorin L är inte isolerad, vilket gör det svårt att uppdatera värdena

Lista över alla produkter som innehåller L

Introduktion till datamodellering i Snowflake

Den första normalformen (2)

  • Valideringssteg: Hämta de unika värdena för att kontrollera efterlevnad av 1NF.
SELECT DISTINCT category 
FROM allproducts;

Lista över kategorier

Introduktion till datamodellering i Snowflake

Snowflake-funktioner för 1NF

  • TRIM
  • LATERAL & FLATTEN
  • SPLIT
Introduktion till datamodellering i Snowflake

Snowflake-funktioner för 1NF

  • TRIM: Tar bort tomma mellanslag i början och slutet av värden
SELECT TRIM(category)
FROM allproducts;

TRIM-funktionen på category

Introduktion till datamodellering i Snowflake

Snowflake-funktioner för 1NF

  • TRIM: Tar bort tomma mellanslag i början och slutet av värden.
  • LATERAL & FLATTEN: Behandlar en lista med värden som en tabell med enskilda rader.
  • SPLIT: Delar upp värden baserat på en avgränsare.
SELECT TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;

LATERAL-, FLATTEN- och SPLIT-funktionerna på category

Introduktion till datamodellering i Snowflake

Tillämpa 1NF

  • Steg 1: Skapa en ny entitet för att överföra UNF-attributvärdena
CREATE OR REPLACE TABLE categories (
    category_id NUMBER(10,0) PRIMARY KEY,
    category VARCHAR(255)
);
Introduktion till datamodellering i Snowflake

Tillämpa 1NF

  • Steg 2.1: Fyll den nya entiteten med data från den ursprungligen onormaliserade entiteten
  • INSERT INTO: SQL-kommando för att infoga nya rader i en tabell.
INSERT INTO categories (category_id, category)
___;
Introduktion till datamodellering i Snowflake

Tillämpa 1NF

  • Steg 2.2: Hämta data från allproducts, den ursprungligen onormaliserade entiteten
INSERT INTO categories (category_id, category)
SELECT 
    ___,
    ___
FROM allproducts;
Introduktion till datamodellering i Snowflake

Tillämpa 1NF

  • Steg 2.3: Använd en funktion för att dela upp värden inom ett specifikt attribut
INSERT INTO categories (category_id, category)
SELECT 
    ___, 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;
Introduktion till datamodellering i Snowflake

Tillämpa 1NF

  • Steg 2.4: Välj radnumret för att definiera en unik identifierare
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;
Introduktion till datamodellering i Snowflake

Tillämpa 1NF

  • Steg 2.4: Aggregera data för att generera unika kategorivärden
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);
Introduktion till datamodellering i Snowflake

Mot datanormalisering

Produktdata, från UNF till 1NF

Introduktion till datamodellering i Snowflake

Terminologi och funktionsöversikt

  • Datanormalisering: Process för att strukturera data och minimera duplicering och beroenden
  • Normalformer: Riktlinjer för att tillämpa datanormalisering
  • Första normalformen (1NF): Säkerställer att varje kolumn i en entitet innehåller unika atomära värden
  • INSERT INTO: SQL-kommando för att infoga nya rader i en tabell
  • TRIM: SQL-funktion för att ta bort mellanslag i början och slutet av värden
  • LATERAL FLATTEN(INPUT => SPLIT()): Snowflake-funktion för att dela upp värden till rader
  • ROW_NUMBER() OVER (ORDER BY): SQL-funktion för att generera ett sekventiellt nummer
  • GROUP BY: SQL-klausul för att aggregera data med samma värden
Introduktion till datamodellering i Snowflake

Funktionsöversikt

-- 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);
Introduktion till datamodellering i Snowflake

Nu kör vi en övning!

Introduktion till datamodellering i Snowflake

Preparing Video For Download...