Third Normal Form (3NF)
Syarat 3NF:
- Sudah memenuhi 2NF
- Tidak ada transitive dependency — kolom non-key tidak boleh bergantung pada kolom non-key lainnya
Transitive Dependency
Terjadi ketika kolom A bergantung pada kolom B, dan kolom B bergantung pada primary key. Artinya A bergantung pada PK secara tidak langsung (transitif).
Contoh Melanggar 3NF
-- ❌ Melanggar 3NF
-- department_name bergantung pada department_id, bukan langsung pada employee_id
| employee_id | name | department_id | department_name |
|-------------|------|---------------|-----------------|
| 1 | Budi | 10 | Engineering |
| 2 | Siti | 10 | Engineering |
| 3 | Andi | 20 | Marketing |
Solusi: Memenuhi 3NF
-- ✅ Memenuhi 3NF: pisahkan transitive dependency
CREATE TABLE departments (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department_id INT REFERENCES departments(id)
);
-- department_name sekarang ada di tabel departments sendiri
Ringkasan Normalisasi
- 1NF — Setiap kolom atomic (satu nilai)
- 2NF — Tidak ada partial dependency
- 3NF — Tidak ada transitive dependency
Sebagian besar aplikasi production cukup sampai 3NF. Normal form yang lebih tinggi (BCNF, 4NF, 5NF) jarang dibutuhkan.