Normalisasi merupakan sebuah teknik dalam logical desain sebuah basis data, teknik pengelompokkan atribut dari suatu relasi sehingga membentuk struktur relasi yang baik (tanpa redudansi). Proses normalisasi adalah proses pengelompokan data elemen menjadi tabel-tabel yang menunjukkan entity dan relasinya. Pada proses normalisasi dilakukan pengujian pada beberapa kondisi apakah ada kesulitan pada saat menambah, mengubah atau menghapus pada suatu basis data. Bila terdapat kesulitan pada pengujian tersebut maka perlu dipecahkan relasi pada beberapa tabel lagi atau dengan kata lain perancangan basis data belum optimal.
Anomali adalah proses pada basis data yang memberikan efek samping yang tidak diharapkan (misalnya ketidakkonsistenan data karena adanya redudansi). Ada 3 macam anomali pada suatu database: • Anomali penyisipan data (insert) • Anomali pengubahan data (update) • Anomali penghapusan data (delete) Bila ada anomali maka relasi mungkin perlu dipecah menjadi beberapa tabel lagi agar diperoleh database yang optimal.
Depedensi (Ketergantungan). • Depedensi merupakan konsep yang mendasari normalisasi. Depedensi menjelaskan nilai suatu atribut yang menentukan nilai atribut lainnya. Jenis depedensi antara lain: • Depedensi Fungsional • Depedensi Transitif
Depedensi Fungsional • Definisi : Suatu atribut Y mempunyai dependensi fungsional terhadap atribut X dan hanya jika setiap nilai nilai X berhubungan dengan sebuah nilai Y. X→Y
Depedensi Transitif • Definisi : Atribut Z mempunyai depedensi transitif terhadap X bila: • •
Y memiliki depedensi fungsional terhadap X Z memiliki depedensi fungsional terhadap Y
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. (Lihat contoh kasus)
Untuk mendapatkan hasil yang paling normal, maka proses normalisasi dimulai dari normal pertama. Field-field tabel di atas yang merupakan group berulang : NoPegawai, NamaPegawai, Golongan, BesarGaji.
Contoh Normaliasi…
Aturan
: Mendefinisikan atribut kunci Tidak adanya group berulang Semua atribut bukan kunci tergantung pada atribut kunci
Solusinya hilangkan duplikasi dengan mencari ketergantungan parsial. menjadikan field-field menjadi tergantung pada satu atau beberapa field. Karena yang dapat dijadikan kunci adalah NoProyek dan NoPegawai, maka langkah kemudian dicari field-field mana yang tergantung pada NoProyek dan mana yang tergantung pada NoPegawai.
Contoh Normaliasi…
Aturan
: Sudah memenuhi dalam bentuk normal ke satu Sudah tidak ada ketergantungan parsial, dimana seluruh field hanya tergantung pada field kunci. Field-field yang tergantung pada satu field haruslah dipisah dengan tepat, misalnya NoProyek menjelaskan NamaProyek dan NoPegawai menjelaskan NamaPegawai, Golongan dan BesarGaji.
TABEL PROYEK
TABEL PEGAWAI
Untuk membuat hubungan antara dua tabel, dibuat suatu tabel yang berisi key-key dari tabel yang lain. TABEL PROYEKPEGAWAI
Contoh Normaliasi…
Aturan
: Sudah berada dalam bentuk normal kedua Tidak ada ketergantungan transitif (dimana field bukan kunci tergantung pada field bukan kunci lainnya).
Pada tabel diatas masih terdapat masalah, bahwa NoPegawai 12 mendapatkan BesarGaji yang tidak sesuai dengan Golongan nya. Solusinya adalah kita harus mencari hubungan transitif (transitive relation) dimana field non-key tergantung pada field non-key lainnya. Artinya
kita
harus
memisahkan
fielfd
non-kunci
Golongan yang tadinya tergantung secara parsial kepada field kunci NoPegawai, untuk menghilangkan anomali penulisan data pada field BesarGaji.
TABEL PROYEKPEGAWAI TABEL PROYEK
TABEL PEGAWAI
TABEL GOLONGAN
Tabel-tabel yang memenuhi kriteria normalisasi ketiga, sudah siap diimplementasikan. Sebenarnya masih ada lagi bentuk normalisasi yang lain; Normalisasi Boyce-Codd dan normalisasi keempat, hanya saja sangat jarang dipakai. Pada kebanyakan kasus, normalisasi hanya sampai ketiga.