2NF și 3NF

Introducere în modelarea datelor în Snowflake

Nuno Rocha

Director of Engineering

Introducere în 2NF

  • A doua formă normală (2NF): Elimină dependențele parțiale; fiecare atribut non-cheie trebuie să depindă funcțional de cheia primară

Pași de la UNF la 3NF

Introducere în modelarea datelor în Snowflake

Introducere în 2NF (1)

  • A doua formă normală (2NF): Elimină dependențele parțiale; fiecare atribut non-cheie trebuie să depindă funcțional de cheia primară
  • Dependență funcțională: Cheia primară identifică explicit un atribut

Legitimații de angajat cu dependență funcțională

Introducere în modelarea datelor în Snowflake

Introducere în 2NF (2)

  • A doua formă normală (2NF): Elimină dependențele parțiale; fiecare atribut non-cheie trebuie să depindă funcțional de cheia primară.
  • Dependență funcțională: Cheia primară identifică explicit un atribut.
  • Dependență parțială: Doar o parte a cheii primare este necesară pentru a identifica un atribut.

Legitimații de angajat cu dependență parțială

Introducere în modelarea datelor în Snowflake

A doua formă normală

Entitatea Allproducts, produs conform cu 2NF

Introducere în modelarea datelor în Snowflake

A doua formă normală

Entitatea Allproducts, problemă 2NF la detalii

Introducere în modelarea datelor în Snowflake

A doua formă normală

Entitatea Allproducts, problemă 2NF la producător

Introducere în modelarea datelor în Snowflake

Tranziția la 2NF

  • Pasul 1: Creați entități noi pentru atributele cu dependență parțială.
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)
);
Introducere în modelarea datelor în Snowflake

Tranziția la 2NF

  • Pasul 2: Completați entitățile cu date din entitatea inițial nenormalizată.
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;
Introducere în modelarea datelor în Snowflake

Tranziția la 2NF

Date Allproducts, de la UNF la 2NF

Introducere în modelarea datelor în Snowflake

Introducere în 3NF

  • A treia formă normală (3NF): Elimină dependențele tranzitive; atributele non-cheie trebuie să depindă direct de cheia primară.

Pași de la UNF la 3NF

Introducere în modelarea datelor în Snowflake

Introducere în 3NF

  • A treia formă normală (3NF): Elimină dependențele tranzitive; atributele non-cheie trebuie să depindă direct de cheia primară.
  • Dependență tranzitivă: Un atribut depinde de alt atribut care nu este cheia primară.

Legitimații de angajat cu dependență tranzitivă

Introducere în modelarea datelor în Snowflake

A treia formă normală

Locație neconformă cu 3NF

Introducere în modelarea datelor în Snowflake

Tranziția la 3NF

  • Pasul 1: Creați o entitate nouă pentru atributele cu dependență tranzitivă.
CREATE TABLE locations (
    location_id NUMBER(10,0) PRIMARY KEY,
    location VARCHAR(255)
);
Introducere în modelarea datelor în Snowflake

Tranziția la 3NF

  • Pasul 2: Completați entitățile cu date din entitatea inițial nenormalizată.
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;
Introducere în modelarea datelor în Snowflake

Tranziția la 3NF

  • Pasul 3: Creați o entitate nouă pentru atributele rămase din entitatea nenormalizată.
CREATE OR REPLACE TABLE products (
    product_id NUMBER(10,0) PRIMARY KEY,
    name VARCHAR(255)
);
  • Pasul 4: Completați entitatea cu valorile unice rămase în entitatea nenormalizată.
INSERT INTO products (product_id, name)
SELECT DISTINCT product_id,
    product_name
FROM allproducts;
Introducere în modelarea datelor în Snowflake

Finalizarea modelului

Pași de la UNF la 3NF

Introducere în modelarea datelor în Snowflake

Finalizarea modelului

Date Allproducts, de la UNF la 1NF

Introducere în modelarea datelor în Snowflake

Finalizarea modelului

Date Allproducts, de la UNF la 2NF

Introducere în modelarea datelor în Snowflake

Finalizarea modelului

Date Allproducts, de la UNF la 3NF

Introducere în modelarea datelor în Snowflake

Finalizarea modelului

Date Allproducts, de la UNF la 3NF cu relații

Introducere în modelarea datelor în Snowflake

Prezentare generală a terminologiei și funcțiilor

  • A doua formă normală (2NF): Elimină dependențele parțiale; fiecare atribut non-cheie trebuie să depindă funcțional de cheia primară.
  • A treia formă normală (3NF): Elimină dependențele tranzitive; atributele non-cheie trebuie să depindă direct de cheia primară.
  • Dependență funcțională: Cheia primară identifică explicit un atribut.
  • Dependență parțială: Doar o parte a cheii primare este necesară pentru a identifica un atribut.
  • Dependență tranzitivă: Un atribut depinde de alt atribut care nu este cheia primară.
  • ROW_NUMBER() OVER (ORDER BY): Funcție SQL pentru generarea unui număr secvențial.
  • DISTINCT: Clauză SQL pentru returnarea valorilor unice dintr-un atribut.
  • DROP: Comandă SQL, utilizată cu ALTER TABLE, pentru eliminarea elementelor din entitate.
Introducere în modelarea datelor în Snowflake

Prezentare generală a funcțiilor

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;
Introducere în modelarea datelor în Snowflake

Să exersăm!

Introducere în modelarea datelor în Snowflake

Preparing Video For Download...