2NF und 3NF

Einführung in das Data Modeling in Snowflake

Nuno Rocha

Director of Engineering

Einführung in 2NF

  • Second normal form (2NF): Beseitigt partielle Abhängigkeiten; jedes Nicht-Schlüssel-Attribut muss funktional vom Primärschlüssel abhängen

Schritte von UNF zu 3NF

Einführung in das Data Modeling in Snowflake

Einführung in 2NF (1)

  • Second normal form (2NF): Beseitigt partielle Abhängigkeiten; jedes Nicht-Schlüssel-Attribut muss funktional vom Primärschlüssel abhängen
  • Funktionale Abhängigkeit: Der Primärschlüssel identifiziert ein Attribut eindeutig

Mitarbeiterausweise, die funktionale Abhängigkeit zeigen

Einführung in das Data Modeling in Snowflake

Einführung in 2NF (2)

  • Second normal form (2NF): Beseitigt partielle Abhängigkeiten; jedes Nicht-Schlüssel-Attribut muss funktional vom Primärschlüssel abhängen.
  • Funktionale Abhängigkeit: Der Primärschlüssel identifiziert ein Attribut eindeutig.
  • Partielle Abhängigkeit: Nur ein Teil des Primärschlüssels reicht aus, um ein Attribut zu identifizieren.

Mitarbeiterausweise, die partielle Abhängigkeit zeigen

Einführung in das Data Modeling in Snowflake

Die zweite Normalform

Entität Allproducts, Produktbeschwerde mit 2NF

Einführung in das Data Modeling in Snowflake

Die zweite Normalform

Entität Allproducts, Detailproblem mit 2NF

Einführung in das Data Modeling in Snowflake

Die zweite Normalform

Entität Allproducts, Detailproblem bei Hersteller in 2NF

Einführung in das Data Modeling in Snowflake

Umstieg auf 2NF

  • Schritt 1: Erstelle neue Entitäten und verschiebe Attribute mit partieller Abhängigkeit.
CREATE OR REPLACE TABLE manufacturers (
    manufacturer_id NUMBER(10,0) PRIMARY KEY,
    manufacturer VARCHAR(255),
    location VARCHAR(255)
);
CREATE OR REPLACE TABLE details (
    detail_id NUMBER(10,0) PRIMARY KEY,
    detail VARCHAR(255)
);
Einführung in das Data Modeling in Snowflake

Umstieg auf 2NF

  • Schritt 2: Fülle die Entitäten mit Daten aus der anfangs nicht normalisierten Entität.
INSERT INTO manufacturers (manufacturer_id, manufacturer, location)
SELECT DISTINCT manufacturer_id, 
    manufacturer_name,
    location
FROM allproducts;
INSERT INTO details (detail_id, detail)
SELECT DISTINCT detail_id, 
    detail_description
FROM allproducts;
Einführung in das Data Modeling in Snowflake

Umstieg auf 2NF

Allproducts-Daten, von UNF zu 2NF

Einführung in das Data Modeling in Snowflake

Einführung in 3NF

  • Third normal form (3NF): Beseitigt transitive Abhängigkeiten; Nicht-Schlüssel-Attribute müssen direkt vom Primärschlüssel abhängen.

Schritte von UNF zu 3NF

Einführung in das Data Modeling in Snowflake

Einführung in 3NF

  • Third normal form (3NF): Beseitigt transitive Abhängigkeiten; Nicht-Schlüssel-Attribute müssen direkt vom Primärschlüssel abhängen.
  • Transitive Abhängigkeit: Ein Attribut hängt von einem anderen Attribut ab, das nicht der Primärschlüssel ist.

Mitarbeiterausweise, die transitive Abhängigkeit zeigen

Einführung in das Data Modeling in Snowflake

Die dritte Normalform

Ort nicht 3NF-konform

Einführung in das Data Modeling in Snowflake

Umstieg auf 3NF

  • Schritt 1: Erstelle eine neue Entität und verschiebe Attribute mit transitiver Abhängigkeit.
CREATE TABLE locations (
    location_id NUMBER(10,0) PRIMARY KEY,
    location VARCHAR(255)
);
Einführung in das Data Modeling in Snowflake

Umstieg auf 3NF

  • Schritt 2: Fülle die Entitäten mit Daten aus der anfangs nicht normalisierten Entität.
INSERT INTO locations (location_id, location)
SELECT ROW_NUMBER() OVER (ORDER BY location), 
    location
FROM manufacturers
GROUP BY location;
ALTER TABLE manufacturers
DROP COLUMN location;
Einführung in das Data Modeling in Snowflake

Umstieg auf 3NF

  • Schritt 3: Erstelle eine neue Entität, um verbleibende Attribute aus der nicht normalisierten Entität herauszulösen.
CREATE OR REPLACE TABLE products (
    product_id NUMBER(10,0) PRIMARY KEY,
    name VARCHAR(255)
);
  • Schritt 4: Fülle die Entität mit den eindeutigen Werten aus der nicht normalisierten Entität.
INSERT INTO products (product_id, name)
SELECT DISTINCT product_id,
    product_name
FROM allproducts;
Einführung in das Data Modeling in Snowflake

Modell finalisieren

Schritte von UNF zu 3NF

Einführung in das Data Modeling in Snowflake

Modell finalisieren

Allproducts-Daten, von UNF zu 1NF

Einführung in das Data Modeling in Snowflake

Modell finalisieren

Allproducts-Daten, von UNF zu 2NF

Einführung in das Data Modeling in Snowflake

Modell finalisieren

Allproducts-Daten, von UNF zu 3NF

Einführung in das Data Modeling in Snowflake

Modell finalisieren

Allproducts-Daten, von UNF zu 3NF mit Beziehungen

Einführung in das Data Modeling in Snowflake

Begriffe und Funktionen im Überblick

  • Second normal form (2NF): Beseitigt partielle Abhängigkeiten; jedes Nicht-Schlüssel-Attribut muss funktional vom Primärschlüssel abhängen.
  • Third normal form (3NF): Beseitigt transitive Abhängigkeiten; Nicht-Schlüssel-Attribute müssen direkt vom Primärschlüssel abhängen.
  • Funktionale Abhängigkeit: Der Primärschlüssel identifiziert ein Attribut eindeutig.
  • Partielle Abhängigkeit: Nur ein Teil des Primärschlüssels reicht aus, um ein Attribut zu identifizieren.
  • Transitive Abhängigkeit: Ein Attribut hängt von einem anderen Attribut ab, das nicht der Primärschlüssel ist.
  • ROW_NUMBER() OVER (ORDER BY): SQL-Funktion zur Erzeugung fortlaufender Nummern.
  • DISTINCT: SQL-Klausel, die eindeutige Werte eines Attributs zurückgibt.
  • DROP: SQL-Befehl, mit ALTER TABLE genutzt, um Elemente aus der Entität zu entfernen.
Einführung in das Data Modeling in Snowflake

Funktionen im Überblick

INSERT INTO table_name (column_name, other_columns)
SELECT DISTINCT column_name,
    other_columns
FROM another_table;
INSERT INTO table_name (column_name)
SELECT ROW_NUMBER() OVER (ORDER BY column_name)
FROM another_table
GROUP BY TRIM(column_name);
ALTER TABLE table_name
DROP COLUMN column_name;
Einführung in das Data Modeling in Snowflake

Lass uns üben!

Einführung in das Data Modeling in Snowflake

Preparing Video For Download...