2NF a 3NF

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

Nuno Rocha

Director of Engineering

Úvod do 2NF

  • Druhá normální forma (2NF): Odstraňuje částečné závislosti; každý neklíčový atribut musí funkčně záviset na primárním klíči.

Kroky z UNF na 3NF

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

Úvod do 2NF (1)

  • Druhá normální forma (2NF): Odstraňuje částečné závislosti; každý neklíčový atribut musí funkčně záviset na primárním klíči.
  • Funkční závislost: Primární klíč jednoznačně identifikuje atribut

Průkazy zaměstnanců ukazující funkční závislost

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

Úvod do 2NF (2)

  • Druhá normální forma (2NF): Odstraňuje částečné závislosti; každý neklíčový atribut musí funkčně záviset na primárním klíči.
  • Funkční závislost: Primární klíč jednoznačně identifikuje atribut.
  • Částečná závislost: K identifikaci atributu stačí pouze část primárního klíče.

Průkazy zaměstnanců ukazující částečnou závislost

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

Druhá normální forma

Entita Allproducts, produkt splňující 2NF

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

Druhá normální forma

Entita Allproducts, problém s detailem v 2NF

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

Druhá normální forma

Entita Allproducts, problém s 2NF u výrobce

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

Přechod na 2NF

  • Krok 1: Vytvořte nové entity pro atributy s částečnou závislostí.
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)
);
Úvod do datového modelování ve Snowflake

Přechod na 2NF

  • Krok 2: Naplňte entity daty z původně nenormalizované entity.
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;
Úvod do datového modelování ve Snowflake

Přechod na 2NF

Data allproducts, z UNF na 2NF

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

Úvod do 3NF

  • Třetí normální forma (3NF): Odstraňuje tranzitivní závislosti; neklíčové atributy musí přímo záviset na primárním klíči.

Kroky z UNF na 3NF

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

Úvod do 3NF

  • Třetí normální forma (3NF): Odstraňuje tranzitivní závislosti; neklíčové atributy musí přímo záviset na primárním klíči.
  • Tranzitivní závislost: Atribut závisí na jiném atributu, který není primárním klíčem.

Průkazy zaměstnanců ukazující tranzitivní závislost

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

Třetí normální forma

Lokace nesplňující 3NF

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

Přechod na 3NF

  • Krok 1: Vytvořte novou entitu pro atributy s tranzitivní závislostí.
CREATE TABLE locations (
    location_id NUMBER(10,0) PRIMARY KEY,
    location VARCHAR(255)
);
Úvod do datového modelování ve Snowflake

Přechod na 3NF

  • Krok 2: Naplňte entity daty z původně nenormalizované entity.
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;
Úvod do datového modelování ve Snowflake

Přechod na 3NF

  • Krok 3: Vytvořte novou entitu pro zbývající atributy z nenormalizované entity.
CREATE OR REPLACE TABLE products (
    product_id NUMBER(10,0) PRIMARY KEY,
    name VARCHAR(255)
);
  • Krok 4: Naplňte entitu jedinečnými hodnotami z nenormalizované entity.
INSERT INTO products (product_id, name)
SELECT DISTINCT product_id,
    product_name
FROM allproducts;
Úvod do datového modelování ve Snowflake

Dokončení modelu

Kroky z UNF na 3NF

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

Dokončení modelu

Data allproducts, z UNF na 1NF

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

Dokončení modelu

Data allproducts, z UNF na 2NF

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

Dokončení modelu

Data allproducts, z UNF na 3NF

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

Dokončení modelu

Data allproducts, z UNF na 3NF se vztahy

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

Přehled terminologie a funkcí

  • Druhá normální forma (2NF): Odstraňuje částečné závislosti; každý neklíčový atribut musí funkčně záviset na primárním klíči.
  • Třetí normální forma (3NF): Odstraňuje tranzitivní závislosti; neklíčové atributy musí přímo záviset na primárním klíči.
  • Funkční závislost: Primární klíč jednoznačně identifikuje atribut.
  • Částečná závislost: K identifikaci atributu stačí pouze část primárního klíče.
  • Tranzitivní závislost: Atribut závisí na jiném atributu, který není primárním klíčem.
  • ROW_NUMBER() OVER (ORDER BY): SQL funkce pro generování pořadového čísla.
  • DISTINCT: Klauzule SQL pro vrácení jedinečných hodnot atributu.
  • DROP: Příkaz SQL používaný s ALTER TABLE, k odebrání prvků entity.
Úvod do datového modelování ve Snowflake

Přehled funkcí

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;
Úvod do datového modelování ve Snowflake

Pojďme procvičovat!

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

Preparing Video For Download...