La première forme normale

Introduction à la modélisation des données dans Snowflake

Nuno Rocha

Director of Engineering

Processus de normalisation des données

  • Normalisation des données : processus en plusieurs étapes pour structurer les données et réduire la duplication et les dépendances

Étapes estompées après UNF

Introduction à la modélisation des données dans Snowflake

Processus de normalisation des données (1)

  • Normalisation des données : processus en plusieurs étapes pour structurer les données et réduire la duplication et les dépendances

Étapes de UNF à 1NF

Introduction à la modélisation des données dans Snowflake

Processus de normalisation des données (2)

  • Normalisation des données : processus en plusieurs étapes pour structurer les données et réduire la duplication et les dépendances

Étapes de UNF à 3NF

Introduction à la modélisation des données dans Snowflake

Processus de normalisation des données (3)

  • Normalisation des données : processus en plusieurs étapes pour structurer les données et réduire la duplication et les dépendances

Étapes de UNF à 3NF

Introduction à la modélisation des données dans Snowflake

La première forme normale

  • Première forme normale (1NF) : garantit que chaque colonne d'une entité contient des valeurs atomiques uniques

Table des produits avec la catégorie en surbrillance

Introduction à la modélisation des données dans Snowflake

La première forme normale (1)

  • Données de catégorie en UNF : la catégorie L n'est pas isolée, ce qui empêche de mettre les valeurs à jour

Liste de tous les produits contenant L

Introduction à la modélisation des données dans Snowflake

La première forme normale (2)

  • Étape de validation : interroger les valeurs uniques pour vérifier la conformité à la 1NF.
SELECT DISTINCT category 
FROM allproducts;

Liste des catégories

Introduction à la modélisation des données dans Snowflake

Fonctions Snowflake pour la 1NF

  • TRIM
  • LATERAL & FLATTEN
  • SPLIT
Introduction à la modélisation des données dans Snowflake

Fonctions Snowflake pour la 1NF

  • TRIM : supprime les espaces au début et à la fin des valeurs
SELECT TRIM(category)
FROM allproducts;

Fonction TRIM sur category

Introduction à la modélisation des données dans Snowflake

Fonctions Snowflake pour la 1NF

  • TRIM : supprime les espaces au début et à la fin des valeurs.
  • LATERAL & FLATTEN : traitent une liste de valeurs comme une table d'éléments individuels.
  • SPLIT : sépare les valeurs selon un délimiteur.
SELECT TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;

Fonctions LATERAL, FLATTEN et SPLIT sur category

Introduction à la modélisation des données dans Snowflake

Application de la 1NF

  • Étape 1 : créer une nouvelle entité pour transférer les valeurs d'attribut issues de l'UNF
CREATE OR REPLACE TABLE categories (
    category_id NUMBER(10,0) PRIMARY KEY,
    category VARCHAR(255)
);
Introduction à la modélisation des données dans Snowflake

Application de la 1NF

  • Étape 2.1 : remplir la nouvelle entité avec les données de l'entité initialement non normalisée
  • INSERT INTO : commande SQL pour insérer de nouvelles lignes dans une table.
INSERT INTO categories (category_id, category)
___;
Introduction à la modélisation des données dans Snowflake

Application de la 1NF

  • Étape 2.2 : sélectionner les données de allproducts, l'entité initialement non normalisée
INSERT INTO categories (category_id, category)
SELECT 
    ___,
    ___
FROM allproducts;
Introduction à la modélisation des données dans Snowflake

Application de la 1NF

  • Étape 2.3 : utiliser une fonction pour scinder les valeurs d'un attribut précis
INSERT INTO categories (category_id, category)
SELECT 
    ___, 
    TRIM(f.value)
FROM allproducts,
LATERAL FLATTEN(INPUT => SPLIT(allproducts.category, ',')) f;
Introduction à la modélisation des données dans Snowflake

Application de la 1NF

  • Étape 2.4 : utiliser le numéro de ligne pour définir un identifiant unique
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;
Introduction à la modélisation des données dans Snowflake

Application de la 1NF

  • Étape 2.4 : agréger les données pour produire des valeurs de catégorie uniques
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);
Introduction à la modélisation des données dans Snowflake

Vers la normalisation des données

Données allproducts, de UNF à 1NF

Introduction à la modélisation des données dans Snowflake

Aperçu de la terminologie et des fonctions

  • Normalisation des données : processus de structuration des données pour réduire la duplication et les dépendances
  • Formes normales : lignes directrices pour appliquer la normalisation
  • Première forme normale (1NF) : garantit que chaque colonne d'une entité contient des valeurs atomiques uniques
  • INSERT INTO : commande SQL pour insérer de nouvelles lignes dans une table
  • TRIM : fonction SQL pour supprimer les espaces au début et à la fin des valeurs
  • LATERAL FLATTEN(INPUT => SPLIT()) : fonction Snowflake pour éclater des valeurs en lignes
  • ROW_NUMBER() OVER (ORDER BY) : fonction SQL qui génère un numéro séquentiel
  • GROUP BY : clause SQL pour agréger des données ayant les mêmes valeurs
Introduction à la modélisation des données dans Snowflake

Aperçu des fonctions

-- Remplir une entité avec les données d'un résultat de requête
INSERT INTO table_name (column_name, other_columns)
SELECT 
    -- Générer une valeur unique à l'aide du numéro de ligne
    ROW_NUMBER() OVER (ORDER BY TRIM(alias.value)),
    TRIM(alias.value)
FROM another_table,
-- Scinder la valeur textuelle d'un attribut selon un délimiteur 
LATERAL FLATTEN(INPUT => SPLIT(another_table.column_name, 'delimiter_value'))alias
-- Agréger les données pour assurer l'unicité des valeurs
GROUP BY TRIM(alias.value);
Introduction à la modélisation des données dans Snowflake

Passons à la pratique !

Introduction à la modélisation des données dans Snowflake

Preparing Video For Download...