Petit Rappel : LA NORMALISATION d'une base de données

Eléphant du PHP | 63 Messages

08 oct. 2006, 01:33

Salut à tous et Longue vie !

Il y a certaines choses qu'il faut garder en tête quand on met en place une base de données (et moi plus que les autres, c'est clair ! :D). Et pour cela, on a mis en place un processus qui s'appelle la normalisation.

La normalisation, c'est quoi ? C'est le processus de mise en forme des données qui élimine, en 3 phases, les anomalies des données (anomalie de mise à jour, de suppression et d'insertion) et donc d'énormément de problèmes !

- 1er forme normalisée : chaque colonne doit contenir une valeur atomique (une seule valeur donc), chaque colonne doit avoir un nom unique, il faut une clé primaire par table, il ne peut y avoir 2 lignes identiques, et aucune répétition de groupes de données n'est admise).

- 2e forme normalisée : supprimer les données d'une table qui ne dépendent que partiellement d'une clé primaire multicolonne - c'est à dire une clé primaire constituée en fait de 2 colonnes.

- 3e forme normalisée : supprimer les dépendances transitives éventuelles (lorsqu'une colonne ne dépend pas de la clé primaire mais d'une autre colonne qui, elle, en dépend).


Enfin voilà. C'était un petit rappel, qui peut paraître abscon mais faut se pencher la dessus car c'est la base de toute base.

Pour en savoir plus, il y a plein de bouquins dont MySQL Web Training par Jay Greenspan.

Bon vent à tous !!

Zeuf

Mammouth du PHP | 19672 Messages

08 oct. 2006, 10:25

Merci pour cette contribution zeuf, je colle ça en post-it en souhaitant que ce soit lu par tous :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

08 oct. 2006, 11:45

À voir, quelques exemples de formes normales chez Wikipédia. Il y a longtemps de cela, je voulais éditer pour transformer les pseudo tableaux en ASCII pour les faire ressembler à la sortie de MySQL mais... au bout de cinq minutes de mise en forme j'ai eu la flemme :lol:

Eléphant du PHP | 63 Messages

08 oct. 2006, 15:19

Finalement on a toujours ses maîtres et tant mieux !

Un pour la sagesse (Merci Cyrano) et un autre pour le savoir (Merci Hubert).

Longue vie à vous et à bientôt sur le forum.

Amicalement,

Zeuf

Mammouth du PHP | 19672 Messages

08 oct. 2006, 15:39

...Un pour la sagesse (Merci Cyrano)...
N'en jetez plus, la cour est pleine. :langue:

Suis-je vraiment sage ? Bonne question, mais peut-être un petit peu si on considère que j'en arrive à réaliser que "plus j'apprends, plus je mesure l'étendue de mon ignorance" ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

08 oct. 2006, 16:32

Qui paraît sage parmi les sots paraît sot parmi les sages.

Est-ce vrai ? :mrgreen:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 63 Messages

08 oct. 2006, 16:55

Ben heu.... C'est vrai si je suis sot ! mdr !

A +

ViPHP
ViPHP | 2144 Messages

08 oct. 2006, 17:05

hum, oui, et "au pays des aveugles, les bornes sont rois". c'est ça ??
Ok, je suis déja dehors :lol: :lol:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

08 oct. 2006, 17:11

Vous ai-je dit comment on appellerait ma tante si elle en avait ?... :-*

Attends-moi, Iclo, j'arrive ! :langue:

Invité
Invité n'ayant pas de compte PHPfrance

08 oct. 2006, 17:17

Je savais bien que la normalisation était un sujet très sérieux !

Bon allez j'arrête là car je dois faire un script PHP pour récupérer les 38950 communes, Dom, Tom et autres de France d'un fichier CSV pour les stocker dans une BD MySQL.

Vive la normalisation !

Petit nouveau ! | 1 Messages

05 mai 2009, 14:59

Votre définition de la première forme normale est redondante... Et la redondance est mauvaise en matière de bases de données :
- 1er forme normalisée : chaque colonne doit contenir une valeur atomique (une seule valeur donc), chaque colonne doit avoir un nom unique, il faut une clé primaire par table, il ne peut y avoir 2 lignes identiques, et aucune répétition de groupes de données n'est admise).
En effet s'il existe une clef, chaque tuple est unique il n'y a donc pas de doublons par essence.

De plus il existe quelques autres formes normales :
FNBC : forme normale de Boyce Codd
4FN : 5e forme normale (dépendance multivaluée)
5FN : 6e forme normale (dépendance de jointure)
FNDC : forme normale domaine clef
6FN : 6e forme normale.

Mais en principe un bon schéma relationnel s'obtient en allant jusqu'à la 3FN, un excellent jusqu'à la 5e (ceci incluant la FNBC) et un parfait jusqu'à la 6e (incluant la FNDC).

A +

Mammouth du PHP | 19672 Messages

05 mai 2009, 15:39

Ho, visite de grande qualité : bienvenue ici Frédéric. :merci:

Ce serait infiniment apprécié si un petit développement sur ces différents points pouvait être élaboré.

Je précise pour ceux qui l'ignorent que Frédéric Brouard est un grand spécialiste en SQL, auteur de divers ouvrage sur le sujet chez divers éditeurs et j'ai toujours sous la main «SQL 2ieme édition » co-écrit avec Rudi Bruchez et Christian Soutou. Et on retrouve ses interventions fort instructives sur sqlpro.developpez.com : à consommer sans modération ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

05 mai 2009, 15:47

Bienvenue sur PHPFrance, Fred ! :agenouille:

Mammouth du PHP | 2278 Messages

05 juil. 2011, 15:36

http://www.framasoft.net/article1951.html
propose quelques pistes logicielles libres pour aider à ce type de normalisation.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Normalisons
Invité n'ayant pas de compte PHPfrance

01 mars 2013, 21:08

Pour tout savoir, de la première à la sixième forme normale :

http://fsmrel.developpez.com/basesrelat ... alisation/