1NF dotyczy atomowości, a nie redundancji (o to chodzi w wyższych normalnych formach). Zasadniczo, jeśli wszystkie atrybuty są niepodzielne, twoja tabela jest w 1NF.
Oczywiście to, czy tabela jest w 1NF, zależy od tego, co definiujesz jako „atomowe”. To, co właściwie oznacza „atomowość” jest kwestią kontrowersyjną, ale przyjmę tu pragmatyczne podejście do każdego przypadku i po prostu zapytam:
W kontekście problemu, który próbuję rozwiązać, czy kiedykolwiek ma sens uzyskiwanie dostępu do jakiejkolwiek części wartości, czy zawsze mam dostęp do całej wartości?
Jeśli zawsze mam dostęp do całości, jest to atomowe w tym konkretnym kontekście.
W twoim przykładzie prawdopodobnie będziesz chciał uzyskać dostęp do first_name
i last_name
osobno, więc full_name
byłoby nieatomowe i to byłby powód naruszenia 1NF. Jeśli jednak wiesz, że nigdy nie będziesz potrzebować oddzielnego dostępu do imienia i nazwiska, możesz po prostu full_name
i nadal nie narusza 1NF.
„Uzyskiwanie dostępu” do wartości powinno być tutaj rozumiane dość szeroko. Może to oczywiście oznaczać odczytanie go z bazy danych, ale może również oznaczać użycie go w ograniczeniu, indeksowanie itp.