2NF e 3NF

Introdução à Modelagem de Dados no Snowflake

Nuno Rocha

Director of Engineering

Introdução à 2NF

  • Segunda Forma Normal (2NF): Elimina dependências parciais; todo atributo não-chave deve depender funcionalmente da chave primária

Etapas de UNF a 3NF

Introdução à Modelagem de Dados no Snowflake

Introdução à 2NF (1)

  • Segunda Forma Normal (2NF): Elimina dependências parciais; todo atributo não-chave deve depender funcionalmente da chave primária
  • Dependência funcional: A chave primária identifica explicitamente um atributo

Crachás de funcionário mostrando dependência funcional

Introdução à Modelagem de Dados no Snowflake

Introdução à 2NF (2)

  • Segunda Forma Normal (2NF): Elimina dependências parciais; todo atributo não-chave deve depender funcionalmente da chave primária.
  • Dependência funcional: A chave primária identifica explicitamente um atributo.
  • Dependência parcial: Apenas parte da chave primária é necessária para identificar um atributo.

Crachás de funcionário mostrando dependência parcial

Introdução à Modelagem de Dados no Snowflake

A segunda forma normal

Entidade Allproducts, reclamação de produto conforme 2NF

Introdução à Modelagem de Dados no Snowflake

A segunda forma normal

Entidade Allproducts, problema de detalhe com 2NF

Introdução à Modelagem de Dados no Snowflake

A segunda forma normal

Entidade Allproducts, problema de detalhe com 2NF em manufacturer

Introdução à Modelagem de Dados no Snowflake

Transição para 2NF

  • Etapa 1: Crie novas entidades para alocar os atributos que tinham dependência parcial.
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)
);
Introdução à Modelagem de Dados no Snowflake

Transição para 2NF

  • Etapa 2: Preencha as entidades com dados da entidade inicialmente não normalizada.
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;
Introdução à Modelagem de Dados no Snowflake

Transição para 2NF

Dados All products, de UNF para 2NF

Introdução à Modelagem de Dados no Snowflake

Introdução à 3NF

  • Terceira Forma Normal (3NF): Elimina dependências transitivas; atributos não-chave devem depender diretamente da chave primária.

Etapas de UNF a 3NF

Introdução à Modelagem de Dados no Snowflake

Introdução à 3NF

  • Terceira Forma Normal (3NF): Elimina dependências transitivas; atributos não-chave devem depender diretamente da chave primária.
  • Dependência transitiva: Um atributo depende de outro atributo que não é a chave primária.

Crachás de funcionário mostrando dependência transitiva

Introdução à Modelagem de Dados no Snowflake

A terceira forma normal

Localização não conforme com 3NF

Introdução à Modelagem de Dados no Snowflake

Transição para 3NF

  • Etapa 1: Crie nova entidade para alocar os atributos que tinham dependência transitiva.
CREATE TABLE locations (
    location_id NUMBER(10,0) PRIMARY KEY,
    location VARCHAR(255)
);
Introdução à Modelagem de Dados no Snowflake

Transição para 3NF

  • Etapa 2: Preencha as entidades com dados da entidade inicialmente não normalizada.
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;
Introdução à Modelagem de Dados no Snowflake

Transição para 3NF

  • Etapa 3: Crie uma nova entidade para extrair da entidade não normalizada os atributos restantes.
CREATE OR REPLACE TABLE products (
    product_id NUMBER(10,0) PRIMARY KEY,
    name VARCHAR(255)
);
  • Etapa 4: Preencha a entidade com os valores únicos restantes na entidade não normalizada.
INSERT INTO products (product_id, name)
SELECT DISTINCT product_id,
    product_name
FROM allproducts;
Introdução à Modelagem de Dados no Snowflake

Finalizando o modelo

Etapas de UNF a 3NF

Introdução à Modelagem de Dados no Snowflake

Finalizando o modelo

Dados All products, de UNF para 1NF

Introdução à Modelagem de Dados no Snowflake

Finalizando o modelo

Dados All products, de UNF para 2NF

Introdução à Modelagem de Dados no Snowflake

Finalizando o modelo

Dados All products, de UNF para 3NF

Introdução à Modelagem de Dados no Snowflake

Finalizando o modelo

Dados All products, de UNF para 3NF com relacionamentos

Introdução à Modelagem de Dados no Snowflake

Visão geral de termos e funções

  • Segunda Forma Normal (2NF): Elimina dependências parciais; todo atributo não-chave deve depender funcionalmente da chave primária.
  • Terceira Forma Normal (3NF): Elimina dependências transitivas; atributos não-chave devem depender diretamente da chave primária.
  • Dependência funcional: A chave primária identifica explicitamente um atributo.
  • Dependência parcial: Apenas parte da chave primária é necessária para identificar um atributo.
  • Dependência transitiva: Um atributo depende de outro atributo que não é a chave primária.
  • ROW_NUMBER() OVER (ORDER BY): Função SQL que gera numeração sequencial.
  • DISTINCT: Cláusula SQL que retorna valores únicos (diferentes) de um atributo.
  • DROP: Comando SQL, usado com ALTER TABLE, para remover elementos da entidade.
Introdução à Modelagem de Dados no Snowflake

Visão geral de funções

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;
Introdução à Modelagem de Dados no Snowflake

Vamos praticar!

Introdução à Modelagem de Dados no Snowflake

Preparing Video For Download...