L'1NF riguarda l'atomicità, non la ridondanza (questo è ciò che riguardano le forme normali superiori). In sostanza, se tutti gli attributi sono atomici, la tua tabella è in 1NF.
Ovviamente, se una tabella è in 1NF dipende da ciò che definisci "atomico". Cosa significhi effettivamente "atomicità" è oggetto di qualche controversia, ma qui adotterei un approccio pragmatico caso per caso e chiederei semplicemente:
Nel contesto del problema che sto cercando di risolvere, ha mai senso accedere a una parte del valore o accedo sempre all'intero valore?
Se accedo sempre al tutto, è atomico in quel particolare contesto.
Nel tuo esempio, è probabile che tu voglia accedere a first_name
e last_name
separatamente, quindi full_name
sarebbe non atomico e questo sarebbe il motivo per violare la 1NF. Se, tuttavia, sai che non avrai mai bisogno di accedere separatamente al nome e al cognome, allora potresti avere solo il full_name
e ancora non violare la 1NF.
"Accesso" al valore dovrebbe essere compreso in modo abbastanza ampio qui. Potrebbe ovviamente significare leggerlo dal database, ma potrebbe anche significare usarlo in un vincolo, o indicizzarlo ecc...