1NF е за атомарност, а не за излишък (за това са по-високите нормални форми). По същество, ако всички атрибути са атомарни, вашата таблица е в 1NF.
Очевидно, дали дадена таблица е в 1NF зависи от това, което дефинирате като "атомна". Какво всъщност означава "атомност" е въпрос на известен спор, но тук бих възприел прагматичен подход за всеки отделен случай и просто бих попитал:
В контекста на проблема, който се опитвам да разреша, има ли смисъл да имам достъп до част от стойността или винаги имам достъп до цялата стойност?
Ако винаги имам достъп до цялото, то е атомарно в този конкретен контекст.
Във вашия пример е вероятно да искате да получите достъп до first_name
и last_name
отделно, така че full_name
ще бъде неатомен и това би било причината за нарушаване на 1NF. Ако обаче знаете, че никога няма да имате нужда от достъп до собственото и фамилното име поотделно, тогава бихте могли да просто full_name
и все още не нарушава 1NF.
Тук "достъпът" до стойността трябва да се разбира доста широко. Очевидно може да означава четене от базата данни, но също така може да означава използването му в ограничение или индексирането му и т.н....