Warunki 2NF oznaczają, że każdy ni-kluczowy atrybut relacji musi zależeć od pełnego klucza relacji. Warunki 3NF natomiast mówią, że każdy atrybut relacji, który nie jest kluczem, powinien zależeć tylko od klucza głównego relacji (brak zależności funkcyjnych między atrybutami ni-kluczowymi). Aby wykazać naruszenie 3NF, potrzebujemy znaleźć zależność funkcyjną, która nie spełnia tych warunków.
Załóżmy, że mamy zależność funkcyjną:
a, b, c -> d
Ta zależność funkcyjna narusza 3NF, ponieważ atrybut "d" zależy od części klucza (a, b, c). Aby spełnić warunki 3NF, atrybut "d" nie powinien zależeć od atrybutów ni-kluczowych (czyli a, b, c) ani od innych atrybutów, które nie są bezpośrednio zależne od klucza głównego.
Aby przekształcić relację R do 3NF, musimy wyizolować atrybuty, które naruszają te warunki. Możemy to zrobić, tworząc nową relację, która będzie zawierać atrybuty, które naruszają 3NF, oraz ich związane atrybuty klucza. W naszym przypadku stworzymy nową relację, która zawiera a, b, c i d:
R1(a, b, c, d); PK(a, b, c)
Teraz w oryginalnej relacji R pozostaną tylko atrybuty, które nie naruszają 3NF:
R2(e, f, g, h); PK(e, f, g)
Teraz mamy dwie relacje: R1 i R2. Każda z nich spełnia warunki 3NF, ponieważ w R1 atrybut "d" zależy tylko od klucza głównego (a, b, c), a w R2 nie ma zależności funkcyjnych między atrybutami ni-kluczowymi. Dzięki temu osiągnęliśmy trzecią postać normalną dla naszej relacji.