Die erste Normalform

Einführung in das Data Modeling in Snowflake

Nuno Rocha

Director of Engineering

Der Prozess der Daten-Normalisierung

  • Daten-Normalisierung: Mehrstufiger Prozess, um Daten so zu strukturieren, dass Duplikate und Abhängigkeiten minimiert werden

Ausgegraute Schritte nach UNF

Einführung in das Data Modeling in Snowflake

Der Prozess der Daten-Normalisierung (1)

  • Daten-Normalisierung: Mehrstufiger Prozess, um Daten so zu strukturieren, dass Duplikate und Abhängigkeiten minimiert werden

Schritte von UNF zu 1NF

Einführung in das Data Modeling in Snowflake

Der Prozess der Daten-Normalisierung (2)

  • Daten-Normalisierung: Mehrstufiger Prozess, um Daten so zu strukturieren, dass Duplikate und Abhängigkeiten minimiert werden

Schritte von UNF zu 3NF

Einführung in das Data Modeling in Snowflake

Der Prozess der Daten-Normalisierung (3)

  • Daten-Normalisierung: Mehrstufiger Prozess, um Daten so zu strukturieren, dass Duplikate und Abhängigkeiten minimiert werden

Schritte von UNF zu 3NF

Einführung in das Data Modeling in Snowflake

Die erste Normalform

  • Erste Normalform (1NF): Stellt sicher, dass jede Spalte einer Entität eindeutige atomare Werte enthält

Tabelle „All products" mit markierter Kategorie

Einführung in das Data Modeling in Snowflake

Die erste Normalform (1)

  • UNF-Kategoriedaten: L-Kategorie ist nicht isoliert und kann deshalb nicht gezielt aktualisiert werden

Liste aller Produkte, die L enthalten

Einführung in das Data Modeling in Snowflake

Die erste Normalform (2)

  • Validierungsschritt: Frage die eindeutigen Werte ab, um die Einhaltung der 1NF zu prüfen.
SELECT DISTINCT category 
FROM allproducts;

Liste der Kategorien

Einführung in das Data Modeling in Snowflake

Snowflake-Funktionen für 1NF

  • TRIM
  • LATERAL & FLATTEN
  • SPLIT
Einführung in das Data Modeling in Snowflake

Snowflake-Funktionen für 1NF

  • TRIM: Entfernt Leerzeichen am Anfang und Ende von Werten
SELECT TRIM(category)
FROM allproducts;

TRIM-Funktion in category

Einführung in das Data Modeling in Snowflake

Snowflake-Funktionen für 1NF

  • TRIM: Entfernt Leerzeichen am Anfang und Ende von Werten.
  • LATERAL & FLATTEN: Behandeln eine Werteliste wie eine Tabelle mit Einzelwerten.
  • SPLIT: Trennt Werte anhand eines Trennzeichens.
SELECT TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;

LATERAL-, FLATTEN- und SPLIT-Funktion in category

Einführung in das Data Modeling in Snowflake

1NF anwenden

  • Schritt 1: Neue Entität erstellen, um die UNF-Attributwerte zu übernehmen
CREATE OR REPLACE TABLE categories (
    category_id NUMBER(10,0) PRIMARY KEY,
    category VARCHAR(255)
);
Einführung in das Data Modeling in Snowflake

1NF anwenden

  • Schritt 2.1: Neue Entität mit Daten aus der zunächst unnormalisierten Entität füllen
  • INSERT INTO: SQL-Befehl zum Einfügen neuer Zeilen in eine Tabelle.
INSERT INTO categories (category_id, category)
___;
Einführung in das Data Modeling in Snowflake

1NF anwenden

  • Schritt 2.2: Daten aus allproducts, der zunächst unnormalisierten Entität, auswählen
INSERT INTO categories (category_id, category)
SELECT 
    ___,
    ___
FROM allproducts;
Einführung in das Data Modeling in Snowflake

1NF anwenden

  • Schritt 2.3: Funktion verwenden, um Werte innerhalb eines Attributs zu splitten
INSERT INTO categories (category_id, category)
SELECT 
    ___, 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;
Einführung in das Data Modeling in Snowflake

1NF anwenden

  • Schritt 2.4: Zeilennummer wählen, um einen eindeutigen Bezeichner zu definieren
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;
Einführung in das Data Modeling in Snowflake

1NF anwenden

  • Schritt 2.4: Daten aggregieren, um eindeutige Kategorien zu erzeugen
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);
Einführung in das Data Modeling in Snowflake

Auf dem Weg zur Daten-Normalisierung

All-products-Daten, von UNF zu 1NF

Einführung in das Data Modeling in Snowflake

Begriffe und Funktionen im Überblick

  • Daten-Normalisierung: Strukturierung von Daten, um Duplikate und Abhängigkeiten zu minimieren
  • Normalformen: Leitlinien zur Anwendung der Daten-Normalisierung
  • Erste Normalform (1NF): Stellt sicher, dass jede Spalte einer Entität eindeutige atomare Werte enthält
  • INSERT INTO: SQL-Befehl zum Einfügen neuer Zeilen in eine Tabelle
  • TRIM: SQL-Funktion zum Entfernen von Leerzeichen am Anfang und Ende von Werten
  • LATERAL FLATTEN(INPUT => SPLIT()): Snowflake-Funktion, um Werte in Zeilen aufzuteilen
  • ROW_NUMBER() OVER (ORDER BY): SQL-Funktion zur Erzeugung fortlaufender Nummern
  • GROUP BY: SQL-Klausel zum Aggregieren gleichwertiger Daten
Einführung in das Data Modeling in Snowflake

Funktionen im Überblick

-- Eine Entität mit Daten aus einem Ergebnis der Abfrage füllen
INSERT INTO table_name (column_name, other_columns)
SELECT 
    -- Eindeutigen Wert über die Zeilennummer erzeugen
    ROW_NUMBER() OVER (ORDER BY TRIM(alias.value)),
    TRIM(alias.value)
FROM another_table,
-- Textattributwert anhand eines Trennzeichens splitten 
LATERAL FLATTEN(INPUT => SPLIT(another_table.column_name, 'delimiter_value'))alias
-- Daten aggregieren, um Eindeutigkeit der Werte sicherzustellen
GROUP BY TRIM(alias.value);
Einführung in das Data Modeling in Snowflake

Lass uns üben!

Einführung in das Data Modeling in Snowflake

Preparing Video For Download...