Skip to main content

Mettre une base de données en première forme normale

Ep26 La Pensée Bayesienne (Avril 2024)

Ep26 La Pensée Bayesienne (Avril 2024)
Anonim

First Normal Form (1NF) définit les règles de base pour une base de données organisée:

  • Éliminez les colonnes en double de la même table.
  • Créez des tables distinctes pour chaque groupe de données liées et identifiez chaque ligne avec une colonne unique (la clé primaire).

Que signifient ces règles lors de la conception pratique d'une base de données? C'est en fait assez simple.

Éliminer les doublons

La première règle stipule qu'il ne faut pas dupliquer les données dans la même ligne d'un tableau. Dans la communauté de la base de données, ce concept est appelé l'atomicité d'une table. Les tables conformes à cette règle sont dites atomiques. Explorons ce principe avec un exemple classique: une table dans une base de données de ressources humaines qui stocke la relation gestionnaire-subordonné. Pour les besoins de notre exemple, nous allons imposer la règle de gestion selon laquelle chaque responsable peut avoir un ou plusieurs subordonnés, tandis que chaque subordonné ne peut avoir qu'un seul responsable.

Intuitivement, lors de la création d'une liste ou d'une feuille de calcul pour suivre ces informations, nous pourrions créer un tableau avec les champs suivants:

  • Directeur
  • Subordonné1
  • Subordonné2
  • Subordonné3
  • Subordonné4

Cependant, rappelez-vous la première règle imposée par 1NF: Éliminer les colonnes en double de la même table. Clairement, les colonnes Subordinate1-Subordinate4 sont en double. Prenez un moment pour réfléchir aux problèmes posés par ce scénario. Si un gestionnaire ne compte qu'un seul subordonné, les colonnes Subordinate2-Subordinate4 constituent simplement un espace de stockage inutilisé (un produit de base de données précieux). De plus, imaginons le cas où un responsable a déjà 4 subordonnés: que se passera-t-il si elle engage un autre employé? Toute la structure de la table nécessiterait une modification.

À ce stade, les novices des bases de données ont généralement une deuxième idée brillante: nous ne voulons pas avoir plus d'une colonne et nous voulons permettre une quantité flexible de stockage de données. Essayons quelque chose comme ça:

  • Directeur
  • Subordonnés

Et le champ Subordinates contient plusieurs entrées sous la forme "Mary, Bill, Joe".

Cette solution est plus proche, mais elle est également insuffisante. La colonne des subordonnés est toujours duplicative et non atomique. Que se passe-t-il lorsque nous devons ajouter ou supprimer un subordonné? Nous devons lire et écrire tout le contenu de la table. Ce n'est pas grave dans cette situation, mais que se passe-t-il si un directeur compte cent employés? En outre, cela complique le processus de sélection des données de la base de données lors de futures requêtes.

Voici un tableau qui satisfait à la première règle de 1NF:

  • Directeur
  • Subalterne

Dans ce cas, chaque subordonné a une seule entrée, mais les responsables peuvent avoir plusieurs entrées.

Identifier la clé primaire

Maintenant, qu’en est-il de la deuxième règle: identifiez chaque ligne avec une colonne unique ou un ensemble de colonnes (la clé primaire). Vous pouvez consulter le tableau ci-dessus et suggérer l'utilisation de la colonne subordonnée en tant que clé primaire. En fait, la colonne subordonnée est un bon candidat pour une clé primaire car nos règles de gestion spécifiaient que chaque subordonné ne pouvait avoir qu'un seul gestionnaire. Cependant, les données que nous avons choisi de stocker dans notre tableau en font une solution loin d'être idéale. Qu'advient-il si nous embauchons un autre employé nommé Jim? Comment stockons-nous sa relation gestionnaire-subordonné dans la base de données?

Il est préférable d'utiliser un identifiant vraiment unique (tel qu'un ID d'employé) en tant que clé primaire. Notre table finale ressemblerait à ceci:

  • ID de responsable
  • ID subordonné

Maintenant, notre table est dans la première forme normale! Au-delà, il existe des options pour mettre votre base de données en seconde forme normale ainsi qu'en troisième forme normale si vous êtes enthousiasmé par encore plus d'organisation.