Normalisasi merupakan sebuah teknik dalam logical desain sebuah basis data yang mengelompokkan atribut dari suatu relasi sehingga membentuk struktur relasi yang baik (tanpa redudansi).
Normalisasi adalah proses pembentukan struktur basis data sehingga sebagian besar ambiguity bisa dihilangkan.
1. Tujuan Normalisasi
- Optimalisasi struktur-struktur tabel
- Meningkatkan kecepatan akses
- Mengurangi redundansi
- Menghindari anomali
- Integritas meningkat
2. Kesalahan Proses Modifikasi (anomali)
Delete Anomali
yaitu proses penghapusan suatu entity logik yang menyebabkan hilangnya informasi yang tidak direlasikan secara logik.

Insert anomalies
yaitu proses penyisipan entity logik yang memerlukan entity logik yang lain.

Update anomalies
yaitu proses mengupdate data pada suatu entity logik yang mengakibatkan perubahan pada lebih dari satu tempat dalam suatu relasi.

3. Dependensi
Dependensi Fungsional
Notasi dependensi fungsional yaitu
A ⇒ B (A secara fungsional menentukan B)

Contoh Dependensi Fungsional

Contoh:
- NIM ⇒ NamaMhs
- {MataKuliah,NIM} ⇒ NilaiHuruf
Dependensi Penuh
Dependensi penuh menunjukkan jika terdapat atribut A dan B dalam suatu relasi, dimana:
- B memiliki dependensi fungsional secara penuh pada A
- B bukan memiliki dependensi terhadap subset A.

Dependensi Transitif
Transitif Dependensi adalah kondisi dimana A, B, C merupakan atribut sebuah relasi dimana A ⇒ B dan B ⇒ C. Maka C dikatakan dependensi transitif terhadap A melalui B.

4. Proses Normalisasi
- Menguraikan dalam bentuk tabel
- Melanjutkan ke level beberapa tingkat sesuai persyaratan tertentu

Bentuk tidak normal (unnormalized Form)
Bentuk ini merupakan kumpulan data yang direkam, tidak ada keharusan mengikuti suatu format tertentu, bisa tidak lengkap atau terduplikasi. Data dikumpulkan apa adanya sesuai dengan kedatangannya.
Contoh bentuk UNF


1NF - Bentuk Normal Pertama
- Tidak adanya atribut multi-value, atribut komposit atau kombinasinya.
- Mendefinisikan atribut kunci.
- Setiap atribut dalam tabel tersebut harus bernilai atomic (tidak dapat dibagi-bagi lagi).
Contoh Bentuk 1NF

2NF -- Bentuk Normal Kedua
- Sudah memenuhi dalam bentuk normal kesatu (1NF)
- Semua atribut bukan kunci hanya boleh tergantung (functional dependency) pada atribut kunci
- Jika ada ketergantungan parsial maka atribut tersebut harus dipisah pada tabel yang lain
- Perlu ada tabel penghubung ataupun kehadiran foreign key bagi atribut-atribut yang telah dipisah tadi.
Contoh Bentuk 2NF

Normalisasi Ketiga (3rd Normal Form)
- Sudah berada dalam bentuk normal kedua (2NF)
- Tidak ada ketergantungan transitif (dimana atribut bukan kunci tergantung pada atribut bukan kunci lainnya).
Contoh Bentuk 3NF

5. BCNF - Boyce-Codd Normal Form
Bentuk BCNF dapat terpenuhi apabila setiap dependensi fungsional A ⇒ B memiliki kondisi bahwa A merupakan superkey dari tabel bersangkutan. Tabel tersebut harus didekomposisi berdasarkan functional dependency yang ada, sehingga B menjadi super key dari tabel-tabel hasil dekomposisi.
Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi setiap 3NF belum tentu termasuk BCNF. Perbedaannya, untuk functional dependency A ⇒ B, BCNF tidak membolehkan B sebagai bagian dari primary key.
6. 4NF - Bentuk Normal Keempat
Bentuk normal 4NF terpenuhi dalam sebuah tabel jika tabel tersebut telah memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued atribute. Untuk setiap multivalued dependencies (MVD) juga harus merupakan functional dependencies.
Contoh bentuk 4NF

7. 5NF -Bentuk Normal Kelima
Bentuk normal 5NF tepenuhi jika tidak dapat memiliki sebuah lossless decomposiion menjadi tabel-tabel yang lebih kecil.
Jika 4 bentuk normal sebelumnya dibentuk berdasarkan functional dependency, 5NF dibentuk berdasarkan konsep join dependence, yakni apabila sebuah tabel telah didekomposisi menjadi tabel-tabel lebih kecil, harus bisa digabungkan lagi (join) untuk membentuk tabel semula.
Sumber
Sistem Basis Data (IKB112101), oleh Wahyu Widodo.