CodeGym /Cours /SQL SELF /Principes de la première forme normale (1NF)

Principes de la première forme normale (1NF)

SQL SELF
Niveau 25 , Leçon 1
Disponible

Principes de la première forme normale (1NF)

La première forme normale (First Normal Form, 1NF), c'est le tout premier niveau de normalisation d'une base de données. Elle impose des règles strictes sur la structure des tables. Une table est en 1NF si :

  1. Toutes les données sont atomiques. Chaque valeur dans une cellule doit être indivisible. Oublie les "listes dans une cellule" ! Dans une base de données, ça ne passe pas.
  2. Chaque ligne est unique. Donc la table doit avoir une clé primaire (Primary Key) ou un identifiant unique.
  3. Pas de groupes de données répétitifs. Les valeurs d'une même entité ne doivent pas être dans la même colonne.

Pour faire simple, imagine que ta table de base de données, c'est ta chambre, et les valeurs atomiques, c'est chaque objet séparé : lampe, bureau, livre. Si ta chambre est en bazar (genre tout est empilé), tu ne trouveras jamais la lampe ou tu ne sauras pas si t'as un bureau de rechange. La normalisation, ça aide à "tout ranger à sa place".

Exemple de violation de la 1NF

Imaginons qu'on a une table d'étudiants où on stocke les cours qu'ils suivent :

student_id name courses
1 Maria "Mathématiques, Physique"
2 Rob "Biologie, Chimie"

Qu'est-ce qui cloche ici ? Les cours (colonne courses) sont séparés par une virgule dans une seule cellule. Du coup, si tu veux trouver tous les étudiants qui font de la physique, la requête va être galère : il faudra faire des manipulations de texte compliquées. Et si un étudiant veut enlever la physique de sa liste, c'est encore un autre souci. Ces données ne sont pas atomiques, donc on viole la règle principale de la 1NF.

Comment mettre la table en 1NF ?

Pour régler le problème, on va séparer les données en lignes distinctes, où chaque valeur sera atomique :

student_id name course
1 Maria Mathématiques
1 Maria Physique
2 Rob Biologie
2 Rob Chimie

Là, c'est bon. On a transformé la table pour que chaque valeur soit indivisible. Ça colle aux principes de la 1NF.

Exemple détaillé de violation et correction de la 1NF

Imaginons qu'on a une table de commandes d'une boutique en ligne :

order_id customer_name items
1001 Otto Lin "Ordinateur portable, Souris, Clavier"
1002 Anna Song "Smartphone, Coque"

Clairement, ici items contient plusieurs valeurs séparées par des virgules, ce qui viole la 1NF.

Pour passer en 1NF, on va stocker une ligne par article dans la commande :

order_id customer_name item
1001 Otto Lin Ordinateur portable
1001 Otto Lin Souris
1001 Otto Lin Clavier
1002 Anna Song Smartphone
1002 Anna Song Coque

Maintenant, la structure de la table respecte la 1NF. Chaque commande et chaque article sont sur une ligne séparée, et les valeurs sont atomiques.

Ajout d'une clé primaire

Après avoir transformé la table, c'est important d'ajouter un identifiant unique (clé primaire) pour chaque ligne, pour garantir leur unicité. Dans l'exemple ci-dessus, tu peux utiliser la combinaison order_id et item comme clé primaire composée. Mais en vrai, on crée souvent un champ id à part.

id order_id customer_name item
1 1001 Otto Lin Ordinateur portable
2 1001 Otto Lin Souris
3 1001 Otto Lin Clavier
4 1002 Anna Song Smartphone
5 1002 Anna Song Coque

Exercice pratique

Tu as une table d'étudiants avec les matières qu'ils étudient, toutes dans une seule cellule :

student_id name subjects
1 Polly "Mathématiques, Chimie"
2 Peter "Physique, Informatique"

Mets la table dans une forme qui respecte la 1NF.

Après transformation, la table doit ressembler à ça :

student_id name subject
1 Polly Mathématiques
1 Polly Chimie
2 Peter Physique
2 Peter Informatique

Erreurs les plus fréquentes avec la 1NF

Quand tu bosses avec une base de données, les violations de la 1NF arrivent souvent dans ces cas :

  • Stocker des listes ou des tableaux directement dans la table. C'est l'erreur la plus courante.
  • Pas d'identifiant unique pour les lignes (clé primaire). Ta table devient vulnérable aux doublons.
  • Utiliser plusieurs colonnes pour la même info. Genre "course_1", "course_2", "course_3" — au lieu d'une structure correcte.

Garde ça en tête, et ta base de données sera toujours en première forme normale.

Application pratique de la 1NF

Dans les vrais projets, la 1NF est super importante. Par exemple :

  • Dans les applis de gestion client (CRM), les données sur les clients et leurs actions doivent être atomiques. Ça simplifie l'analyse et la recherche.
  • Dans les boutiques en ligne, la 1NF sert à stocker efficacement les infos sur les commandes, les produits et les clients.
  • Dans les systèmes bancaires, les données sur les clients, leurs comptes et transactions doivent être atomiques pour éviter toute confusion entre les opérations.

Respecter la 1NF aide à concevoir des bases de données qui tiennent la charge et restent faciles à utiliser. Tout roule, mais ça crée des doublons. C'est pour ça qu'on passe à la deuxième forme normale (2NF), où on va voir comment gérer les dépendances partielles dans les tables.

Pourquoi c'est important de respecter la première forme normale (1NF) ? Imagine que tu stockes des données dans une table où une cellule peut contenir plusieurs valeurs — genre une liste de produits commandés par un client. Dans ce cas, c'est galère d'accéder aux données : essayer de trouver tous ceux qui ont commandé un "Clavier" devient un cauchemar. Et si tu dois modifier ou supprimer une partie de l'info, tu risques de faire une boulette. Quand les données sont atomiques — donc chaque champ contient une seule valeur — c'est plus fiable et plus clair. En plus, ces tables sont plus faciles à faire évoluer, à mettre à jour et à restructurer si besoin.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION