La primera forma normal

Introducción al modelado de datos en Snowflake

Nuno Rocha

Director of Engineering

El proceso de normalización de datos

  • Normalización de datos: Proceso en varios pasos para estructurar datos y minimizar duplicidades y dependencias

Pasos atenuados después de UNF

Introducción al modelado de datos en Snowflake

El proceso de normalización de datos (1)

  • Normalización de datos: Proceso en varios pasos para estructurar datos y minimizar duplicidades y dependencias

Pasos de UNF a 1NF

Introducción al modelado de datos en Snowflake

El proceso de normalización de datos (2)

  • Normalización de datos: Proceso en varios pasos para estructurar datos y minimizar duplicidades y dependencias

Pasos de UNF a 3NF

Introducción al modelado de datos en Snowflake

El proceso de normalización de datos (3)

  • Normalización de datos: Proceso en varios pasos para estructurar datos y minimizar duplicidades y dependencias

Pasos de UNF a 3NF

Introducción al modelado de datos en Snowflake

La primera forma normal

  • Primera forma normal (1NF): Garantiza que cada columna de una entidad tenga valores atómicos únicos

Tabla de todos los productos con la categoría destacada

Introducción al modelado de datos en Snowflake

La primera forma normal (1)

  • Datos de categoría en UNF: La categoría L no está aislada para poder actualizar sus valores

Lista de todos los productos que contienen L

Introducción al modelado de datos en Snowflake

La primera forma normal (2)

  • Paso de validación: Consulta los valores únicos para evaluar el cumplimiento de 1NF.
SELECT DISTINCT category 
FROM allproducts;

Lista de categorías

Introducción al modelado de datos en Snowflake

Funciones de Snowflake para 1NF

  • TRIM
  • LATERAL y FLATTEN
  • SPLIT
Introducción al modelado de datos en Snowflake

Funciones de Snowflake para 1NF

  • TRIM: Elimina espacios en blanco al inicio y al final de los valores
SELECT TRIM(category)
FROM allproducts;

Función TRIM en category

Introducción al modelado de datos en Snowflake

Funciones de Snowflake para 1NF

  • TRIM: Elimina espacios en blanco al inicio y al final de los valores.
  • LATERAL y FLATTEN: Tratan una lista de valores como una tabla de elementos individuales.
  • SPLIT: Separa valores usando un delimitador.
SELECT TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;

Funciones LATERAL, FLATTEN y SPLIT en category

Introducción al modelado de datos en Snowflake

Aplicar 1NF

  • Paso 1: Crea una nueva entidad para trasladar los valores del atributo en UNF
CREATE OR REPLACE TABLE categories (
    category_id NUMBER(10,0) PRIMARY KEY,
    category VARCHAR(255)
);
Introducción al modelado de datos en Snowflake

Aplicar 1NF

  • Paso 2.1: Rellena la nueva entidad con datos de la entidad inicialmente no normalizada
  • INSERT INTO: Comando SQL para insertar filas nuevas en una tabla.
INSERT INTO categories (category_id, category)
___;
Introducción al modelado de datos en Snowflake

Aplicar 1NF

  • Paso 2.2: Selecciona los datos de allproducts, la entidad inicialmente no normalizada
INSERT INTO categories (category_id, category)
SELECT 
    ___,
    ___
FROM allproducts;
Introducción al modelado de datos en Snowflake

Aplicar 1NF

  • Paso 2.3: Usa una función para dividir valores dentro de un atributo específico
INSERT INTO categories (category_id, category)
SELECT 
    ___, 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;
Introducción al modelado de datos en Snowflake

Aplicar 1NF

  • Paso 2.4: Selecciona el número de fila para definir un identificador único
INSERT INTO categories (category_id, category)
SELECT 
    ROW_NUMBER() OVER (ORDER BY TRIM(f.value)), 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;
Introducción al modelado de datos en Snowflake

Aplicar 1NF

  • Paso 2.4: Agrega los datos para generar valores de categoría únicos
INSERT INTO categories (category_id, category)
SELECT 
    ROW_NUMBER() OVER (ORDER BY TRIM(f.value)), 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f
GROUP BY TRIM(f.value);
Introducción al modelado de datos en Snowflake

Hacia la normalización de datos

Datos de todos los productos, de UNF a 1NF

Introducción al modelado de datos en Snowflake

Resumen de términos y funciones

  • Normalización de datos: Proceso para estructurar datos y minimizar duplicidad y dependencia
  • Formas normales: Pautas para aplicar la normalización
  • Primera forma normal (1NF): Garantiza que cada columna de una entidad tenga valores atómicos únicos
  • INSERT INTO: Comando SQL para insertar filas nuevas en una tabla
  • TRIM: Función SQL que elimina espacios al inicio y al final de los valores
  • LATERAL FLATTEN(INPUT => SPLIT()): Función de Snowflake que divide valores en filas
  • ROW_NUMBER() OVER (ORDER BY): Función SQL que genera una numeración secuencial
  • GROUP BY: Cláusula SQL para agrupar datos con los mismos valores
Introducción al modelado de datos en Snowflake

Resumen de funciones

-- Rellenar una entidad con datos de un resultado de consulta
INSERT INTO table_name (column_name, other_columns)
SELECT 
    -- Generar un valor único usando el número de fila
    ROW_NUMBER() OVER (ORDER BY TRIM(alias.value)),
    TRIM(alias.value)
FROM another_table,
-- Dividir el valor de un atributo de texto según un delimitador 
LATERAL FLATTEN(INPUT => SPLIT(another_table.column_name, 'delimiter_value'))alias
-- Agregar los datos para garantizar la unicidad de los valores
GROUP BY TRIM(alias.value);
Introducción al modelado de datos en Snowflake

¡Vamos a practicar!

Introducción al modelado de datos en Snowflake

Preparing Video For Download...