Clé naturelle vs. clé de substitution

Clé naturelle

Définition : Une clé naturelle est un attribut (ou un ensemble d'attributs) qui identifie de manière unique une entité dans le monde réel, sans dépendre d'un identifiant artificiel.
Exemples :
Numéro de sécurité sociale (pour une personne).
Code ISBN (pour un livre).
Adresse e-mail (pour un utilisateur).
Avantages :
Sémantique : Elle a un sens métier, ce qui facilite la compréhension et la validation.
Stabilité : Si elle est bien choisie, elle ne change pas (ex. : un ISBN reste lié à un livre).
Inconvénients :
Volatilité : Certaines clés naturelles peuvent changer (ex. : un numéro de téléphone, une adresse).
Complexité : Peut être composite (plusieurs colonnes) ou difficile à gérer (ex. : noms avec homonymes).
Contraintes externes : Peut dépendre de règles métiers ou légales (ex. : format d'un code postal).

Clé de substitution (ou clé artificielle)

Définition : Une clé de substitution est un identifiant généré artificiellement (souvent un entier auto-incrémenté ou un UUID) pour remplacer une clé naturelle, sans signification métier.
Exemples :
id (auto-incrémenté) dans une table utilisateurs.
UUID (ex. : 550e8400-e29b-41d4-a716-446655440000).
Avantages :
Stabilité : Ne change jamais, même si les données métiers évoluent.
Simplicité : Facile à gérer (indexation optimisée, pas de dépendance métier).
Performance : Les entiers sont plus rapides à indexer que des chaînes de caractères (attention : un UUID aléatoire est plus volumineux et fragmente les index).
Inconvénients :
Absence de sens : Aucune signification métier, ce qui peut compliquer les requêtes ou les audits.
Gestion supplémentaire : Nécessite un mécanisme de génération (ex. : séquence, UUID).
Risque de doublons métier : n'empêche pas l'insertion de deux lignes identiques ; une contrainte UNIQUE sur la clé naturelle reste nécessaire.

Comparaison claire

Critère Clé naturelle Clé de substitution

Origine Donnée métier existante. Générée artificiellement.
Sémantique Signifiante (ex. : ISBN). Sans signification (ex. : id).
Stabilité Peut changer (selon le choix). Immuable.
Performance Peut être lente (chaînes longues). Optimisée (entier compact).
Complexité Peut être composite ou contrainte. Simple (un seul champ).
Exemple d'usage Tables de référence (pays, produits). Tables transactionnelles (commandes).

Quand utiliser l'une ou l'autre ?

Privilégier une clé naturelle :
Quand elle est stable, unique, et simple (ex. : code ISO d'un pays, ISBN).
Pour des entités statiques ou des tables de référence.
Privilégier une clé de substitution :
Quand la clé naturelle est volatile, complexe, ou inexistante.
Pour des tables transactionnelles (ex. : commandes, logs).
Pour éviter les dépendances métiers dans le schéma.

Note : En pratique, les bases de données modernes utilisent souvent des clés de substitution pour les tables principales, tout en conservant les clés naturelles comme contraintes d'unicité (pour les validations et les rapprochements de données). Ce compromis combine stabilité technique et pertinence métier.