Le 1NF concerne l'atomicité, pas la redondance (c'est ce que sont les formes normales supérieures). Essentiellement, si tous les attributs sont atomiques, votre table est en 1NF.
Évidemment, si une table est en 1NF dépend de ce que vous définissez comme "atomique". Ce que "atomicité" signifie réellement est sujet à controverse, mais j'adopterais ici une approche pragmatique au cas par cas et je demanderais simplement :
Dans le contexte du problème que j'essaie de résoudre, est-il judicieux d'accéder à une partie de la valeur, ou j'accède toujours à la valeur entière ?
Si j'accède toujours au tout, c'est atomique dans ce contexte particulier.
Dans votre exemple, il est probable que vous souhaitiez accéder à first_name
et last_name
séparément, donc full_name
serait non atomique et ce serait la raison de la violation de l'1NF. Si, toutefois, vous savez que vous n'aurez jamais besoin d'accéder séparément au prénom et au nom de famille, alors vous pourriez avoir juste le full_name
et toujours pas violé le 1NF.
"Accéder" à la valeur doit être compris assez largement ici. Cela peut évidemment signifier le lire depuis la base de données, mais cela peut aussi signifier l'utiliser dans une contrainte, ou l'indexer etc...