1NF je o atomicitě, ne o redundanci (o tom jsou vyšší normální formy). V podstatě, pokud jsou všechny atributy atomické, vaše tabulka je v 1NF.
Je zřejmé, že zda je tabulka v 1NF závisí na tom, co definujete jako "atomové". Co vlastně znamená „atomicita“, je předmětem určité kontroverze, ale zde bych zvolil pragmatický přístup případ od případu a jednoduše se zeptal:
Má někdy v kontextu problému, který se snažím vyřešit, smysl přistupovat k jakékoli části hodnoty, nebo mám vždy přístup k celé hodnotě?
Pokud vždy přistupuji k celku, je v tomto konkrétním kontextu atomický.
Ve vašem příkladu je pravděpodobné, že budete chtít získat přístup k first_name
a last_name
samostatně, tedy full_name
by byl neatomový a to by byl důvod porušení 1NF. Pokud však víte, že nikdy nebudete potřebovat přístup ke křestnímu jménu a příjmení odděleně, můžete jen full_name
a přesto neporušují 1NF.
"Přístup" k hodnotě by zde měl být chápán poměrně široce. Může to samozřejmě znamenat čtení z databáze, ale může to také znamenat použití v omezení nebo indexování atd...