2NF y 3NF

Introducción al modelado de datos en Snowflake

Nuno Rocha

Director of Engineering

Introducción a 2NF

  • Segunda forma normal (2NF): Elimina dependencias parciales; todo atributo no clave debe depender funcionalmente de la clave primaria

Pasos de UNF a 3NF

Introducción al modelado de datos en Snowflake

Introducción a 2NF (1)

  • Segunda forma normal (2NF): Elimina dependencias parciales; todo atributo no clave debe depender funcionalmente de la clave primaria
  • Dependencia funcional: La clave primaria identifica explícitamente un atributo

Tarjetas de identificación que muestran dependencia funcional

Introducción al modelado de datos en Snowflake

Introducción a 2NF (2)

  • Segunda forma normal (2NF): Elimina dependencias parciales; todo atributo no clave debe depender funcionalmente de la clave primaria.
  • Dependencia funcional: La clave primaria identifica explícitamente un atributo.
  • Dependencia parcial: Solo parte de la clave primaria basta para identificar un atributo.

Tarjetas de identificación que muestran dependencia parcial

Introducción al modelado de datos en Snowflake

La segunda forma normal

Entidad Allproducts, que cumple con 2NF

Introducción al modelado de datos en Snowflake

La segunda forma normal

Entidad Allproducts, problema de detalle con 2NF

Introducción al modelado de datos en Snowflake

La segunda forma normal

Entidad Allproducts, problema de detalle con 2NF en manufacturer

Introducción al modelado de datos en Snowflake

Transición a 2NF

  • Paso 1: Crea entidades nuevas para alojar los atributos que tenían dependencia 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)
);
Introducción al modelado de datos en Snowflake

Transición a 2NF

  • Paso 2: Rellena las entidades con datos de la entidad inicialmente no 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;
Introducción al modelado de datos en Snowflake

Transición a 2NF

Datos de Allproducts, de UNF a 2NF

Introducción al modelado de datos en Snowflake

Introducción a 3NF

  • Tercera forma normal (3NF): Elimina dependencias transitivas; los atributos no clave deben depender directamente de la clave primaria.

Pasos de UNF a 3NF

Introducción al modelado de datos en Snowflake

Introducción a 3NF

  • Tercera forma normal (3NF): Elimina dependencias transitivas; los atributos no clave deben depender directamente de la clave primaria.
  • Dependencia transitiva: Un atributo depende de otro atributo que no es la clave primaria.

Tarjetas de identificación que muestran dependencia transitiva

Introducción al modelado de datos en Snowflake

La tercera forma normal

Ubicación no cumple 3NF

Introducción al modelado de datos en Snowflake

Transición a 3NF

  • Paso 1: Crea una entidad nueva para alojar los atributos con dependencia transitiva.
CREATE TABLE locations (
    location_id NUMBER(10,0) PRIMARY KEY,
    location VARCHAR(255)
);
Introducción al modelado de datos en Snowflake

Transición a 3NF

  • Paso 2: Rellena las entidades con datos de la entidad inicialmente no 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;
Introducción al modelado de datos en Snowflake

Transición a 3NF

  • Paso 3: Crea una entidad nueva para extraer de la entidad no normalizada los atributos restantes.
CREATE OR REPLACE TABLE products (
    product_id NUMBER(10,0) PRIMARY KEY,
    name VARCHAR(255)
);
  • Paso 4: Rellena la entidad con los valores únicos que quedan en la entidad no normalizada.
INSERT INTO products (product_id, name)
SELECT DISTINCT product_id,
    product_name
FROM allproducts;
Introducción al modelado de datos en Snowflake

Finalización del modelo

Pasos de UNF a 3NF

Introducción al modelado de datos en Snowflake

Finalización del modelo

Datos de Allproducts, de UNF a 1NF

Introducción al modelado de datos en Snowflake

Finalización del modelo

Datos de Allproducts, de UNF a 2NF

Introducción al modelado de datos en Snowflake

Finalización del modelo

Datos de Allproducts, de UNF a 3NF

Introducción al modelado de datos en Snowflake

Finalización del modelo

Datos de Allproducts, de UNF a 3NF con relaciones

Introducción al modelado de datos en Snowflake

Resumen de terminología y funciones

  • Segunda forma normal (2NF): Elimina dependencias parciales; todo atributo no clave debe depender funcionalmente de la clave primaria.
  • Tercera forma normal (3NF): Elimina dependencias transitivas; los atributos no clave deben depender directamente de la clave primaria.
  • Dependencia funcional: La clave primaria identifica explícitamente un atributo.
  • Dependencia parcial: Solo parte de la clave primaria basta para identificar un atributo.
  • Dependencia transitiva: Un atributo depende de otro atributo que no es la clave primaria.
  • ROW_NUMBER() OVER (ORDER BY): Función SQL que genera una numeración secuencial.
  • DISTINCT: Cláusula SQL que devuelve valores únicos de un atributo.
  • DROP: Comando SQL, usado con ALTER TABLE, para eliminar elementos de la entidad.
Introducción al modelado de datos en Snowflake

Resumen de funciones

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;
Introducción al modelado de datos en Snowflake

¡Vamos a practicar!

Introducción al modelado de datos en Snowflake

Preparing Video For Download...