1FN — Première forme normale
Une table est en première forme normale si chaque colonne contient une seule valeur atomique et qu'aucun groupe de colonnes ne se répète. C'est la condition de base pour interroger en SQL.
- atomicité
- 1NF
- redondance
- multivalué
Syntaxe
Chaque cellule contient une seule valeur atomiquePas de liste « a, b, c » ni de colonnes répétées tel1, tel2, tel3Exemple
✗ etudiant(num_etudiant PK, nom, competences) (E01, Ana, 'Python, SQL, Excel') → impossible de compter proprement qui maîtrise SQL✓ etudiant(num_etudiant PK, nom) competence(code_competence PK, libelle) maitriser(num_etudiant FK → etudiant, code_competence FK → competence) clé primaire = (num_etudiant, code_competence)À retenir
- Les colonnes répétées (tel1, tel2, tel3) limitent arbitrairement le nombre de valeurs et obligent à chercher dans trois colonnes : déplacez-les dans une table à part.
- Un MCD bien construit, sans attribut multivalué, donne directement des tables en 1FN.
- L'atomicité dépend de l'usage : une adresse en un seul bloc reste acceptable si l'on ne cherche jamais par ville.
- Piège : stocker une liste séparée par des virgules pour aller vite. Les filtres deviennent des LIKE fragiles : '%SQL%' trouve aussi « NoSQL ».
Voir aussi
- 2FN & 3FNLa 2FN interdit qu'un attribut dépende d'une partie seulement d'une clé composée ; la 3FN interdit qu'il dépende d'un autre attribut non clé. Ensemble, elles suppriment l'essentiel des redondances.
- FNBC (forme normale de Boyce-Codd)Une table est en FNBC si toute dépendance fonctionnelle part d'une clé candidate. Plus stricte que la 3FN, elle n'en diffère qu'avec plusieurs clés candidates composées qui se chevauchent.
- TableAu MLD, chaque entité devient une table : ses attributs deviennent des colonnes et chaque occurrence une ligne. La table s'écrit sans type SQL, qui n'arrive qu'au MPD.