2NF et 3NF

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

Nuno Rocha

Director of Engineering

Introduction à la 2NF

  • Deuxième forme normale (2NF) : élimine les dépendances partielles ; chaque attribut non clé doit dépendre fonctionnellement de la clé primaire

Étapes de UNF à 3NF

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

Introduction à la 2NF (1)

  • Deuxième forme normale (2NF) : élimine les dépendances partielles ; chaque attribut non clé doit dépendre fonctionnellement de la clé primaire
  • Dépendance fonctionnelle : la clé primaire identifie explicitement un attribut

Cartes d'employé illustrant la dépendance fonctionnelle

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

Introduction à la 2NF (2)

  • Deuxième forme normale (2NF) : élimine les dépendances partielles ; chaque attribut non clé doit dépendre fonctionnellement de la clé primaire.
  • Dépendance fonctionnelle : la clé primaire identifie explicitement un attribut.
  • Dépendance partielle : seule une partie de la clé primaire suffit pour identifier un attribut.

Cartes d'employé illustrant la dépendance partielle

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

La deuxième forme normale

Entité Allproducts, plainte produit conforme à la 2NF

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

La deuxième forme normale

Entité Allproducts, problème de détail avec la 2NF

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

La deuxième forme normale

Entité Allproducts, problème de détail avec la 2NF dans manufacturer

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

Passer à la 2NF

  • Étape 1 : créer de nouvelles entités pour répartir les attributs qui avaient une dépendance partielle.
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)
);
Introduction à la modélisation des données dans Snowflake

Passer à la 2NF

  • Étape 2 : remplir les entités avec les données de l'entité initialement non normalisée.
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;
Introduction à la modélisation des données dans Snowflake

Passer à la 2NF

Données Allproducts, de UNF à 2NF

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

Introduction à la 3NF

  • Troisième forme normale (3NF) : élimine les dépendances transitives ; les attributs non clés doivent dépendre directement de la clé primaire.

Étapes de UNF à 3NF

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

Introduction à la 3NF

  • Troisième forme normale (3NF) : élimine les dépendances transitives ; les attributs non clés doivent dépendre directement de la clé primaire.
  • Dépendance transitive : un attribut dépend d'un autre attribut qui n'est pas la clé primaire.

Cartes d'employé illustrant la dépendance transitive

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

La troisième forme normale

Location non conforme à la 3NF

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

Passer à la 3NF

  • Étape 1 : créer une nouvelle entité pour répartir les attributs qui avaient une dépendance transitive.
CREATE TABLE locations (
    location_id NUMBER(10,0) PRIMARY KEY,
    location VARCHAR(255)
);
Introduction à la modélisation des données dans Snowflake

Passer à la 3NF

  • Étape 2 : remplir les entités avec les données de l'entité initialement non normalisée.
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;
Introduction à la modélisation des données dans Snowflake

Passer à la 3NF

  • Étape 3 : créer une nouvelle entité pour extraire de l'entité non normalisée les attributs restants.
CREATE OR REPLACE TABLE products (
    product_id NUMBER(10,0) PRIMARY KEY,
    name VARCHAR(255)
);
  • Étape 4 : remplir l'entité avec les valeurs uniques restantes dans l'entité non normalisée.
INSERT INTO products (product_id, name)
SELECT DISTINCT product_id,
    product_name
FROM allproducts;
Introduction à la modélisation des données dans Snowflake

Finalisation du modèle

Étapes de UNF à 3NF

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

Finalisation du modèle

Données Allproducts, de UNF à 1NF

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

Finalisation du modèle

Données Allproducts, de UNF à 2NF

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

Finalisation du modèle

Données Allproducts, de UNF à 3NF

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

Finalisation du modèle

Données Allproducts, de UNF à 3NF avec relations

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

Aperçu : terminologie et fonctions

  • Deuxième forme normale (2NF) : élimine les dépendances partielles ; chaque attribut non clé doit dépendre fonctionnellement de la clé primaire.
  • Troisième forme normale (3NF) : élimine les dépendances transitives ; les attributs non clés doivent dépendre directement de la clé primaire.
  • Dépendance fonctionnelle : la clé primaire identifie explicitement un attribut.
  • Dépendance partielle : seule une partie de la clé primaire suffit pour identifier un attribut.
  • Dépendance transitive : un attribut dépend d'un autre attribut qui n'est pas la clé primaire.
  • ROW_NUMBER() OVER (ORDER BY) : fonction SQL qui génère un numéro séquentiel.
  • DISTINCT : clause SQL qui renvoie des valeurs uniques d'un attribut.
  • DROP : commande SQL, utilisée avec ALTER TABLE, pour supprimer des éléments de l'entité.
Introduction à la modélisation des données dans Snowflake

Aperçu des fonctions

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;
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...