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.
- FNBC
- BCNF
- Boyce-Codd
- clé candidate
- dépendance
Syntaxe
Pour toute dépendance X → Y (Y non inclus dans X) :X contient une clé candidate de la tableExemple
Règles : un moniteur n'enseigne qu'un sport ;un élève a un seul moniteur par sport.seance(eleve, sport, moniteur) (eleve, sport) → moniteur clés candidates : (eleve, sport) moniteur → sport et (eleve, moniteur)→ en 3FN (sport appartient à une clé), mais pas en FNBC : moniteur n'est pas une clé. Le sport de chaque moniteur est répété pour chacun de ses élèves.Décomposition en FNBC : moniteur(nom_moniteur PK, sport) suivre(eleve, nom_moniteur FK → moniteur) clé primaire = (eleve, nom_moniteur)À retenir
- En pratique, une table en 3FN dont la seule clé candidate est la clé primaire est déjà en FNBC.
- Cherchez les cas suspects : plusieurs clés candidates composées qui partagent une colonne.
- La décomposition peut perdre une règle : ici, « un seul moniteur par sport pour un élève » ne se vérifie plus par une clé et demande un déclencheur ou un contrôle applicatif.
- Piège : décomposer à tout prix. Si la redondance est faible et la règle perdue importante, rester en 3FN est un choix défendable, à documenter.
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.
- 1FN — Première forme normaleUne 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.
- Dénormalisation maîtriséeDénormaliser, c'est réintroduire une redondance contrôlée pour accélérer des lectures fréquentes. On le fait après avoir normalisé et mesuré, avec un mécanisme qui garde la copie juste.