Base de données - Troisième forme normale (3NF)

Un tableau se présente sous une troisième forme normale lorsque les conditions suivantes sont remplies -

  • C'est dans la deuxième forme normale.
  • Tous les champs non primaires dépendent de la clé primaire.

La dépendance de ces champs non principaux se situe entre les données. Par exemple, dans le tableau suivant, le nom de la rue, la ville et l'état sont liés de manière incassable à leur code postal.

CREATE TABLE CUSTOMERS(
   CUST_ID       INT              NOT NULL,
   CUST_NAME     VARCHAR (20)      NOT NULL,
   DOB           DATE,
   STREET        VARCHAR(200),
   CITY          VARCHAR(100),
   STATE         VARCHAR(100),
   ZIP           VARCHAR(12),
   EMAIL_ID      VARCHAR(256),
   PRIMARY KEY (CUST_ID)
);

La dépendance entre le code postal et l'adresse est appelée comme une dépendance transitive. Pour vous conformer au troisième formulaire normal, tout ce que vous avez à faire est de déplacer les champs Rue, Ville et État dans leur propre table, que vous pouvez appeler en tant que table Code postal. -

CREATE TABLE ADDRESS(
   ZIP           VARCHAR(12),
   STREET        VARCHAR(200),
   CITY          VARCHAR(100),
   STATE         VARCHAR(100),
   PRIMARY KEY (ZIP)
);

L'étape suivante consiste à modifier le tableau CLIENTS comme indiqué ci-dessous -

CREATE TABLE CUSTOMERS(
   CUST_ID       INT              NOT NULL,
   CUST_NAME     VARCHAR (20)      NOT NULL,
   DOB           DATE,
   ZIP           VARCHAR(12),
   EMAIL_ID      VARCHAR(256),
   PRIMARY KEY (CUST_ID)
);

Les avantages de la suppression des dépendances transitives sont principalement doubles. Premièrement, la quantité de duplication de données est réduite et donc votre base de données devient plus petite.

Le deuxième avantage est l'intégrité des données. Lorsque des données dupliquées changent, il existe un risque important de ne mettre à jour que certaines des données, surtout si elles sont réparties à de nombreux endroits différents dans la base de données.

Par exemple, si l'adresse et les données de code postal étaient stockées dans trois ou quatre tables différentes, toute modification des codes postaux devrait se répercuter sur chaque enregistrement de ces trois ou quatre tables.

sql-rdbms-concepts.htm