Proses normalisasi adalah proses menganalisa dan memperbaiki skema relasi menggunakan data atribut untuk memperoleh properti-properti skema relasi yang baik menjadi bentuk normal lebih tinggi sehingga dapat: Mengotimalisasi redundansi Menghilangkan anomali
Suatu proses untuk mengurangi redundancy pada suatu tabel/obyek/entitas sehingga mudah dimodifikasi. Biasanya melibatkan pembagian tabel entity menjadi dua atau lebih tabel dan menjelaskan hubungan diantara tabel. Tujuannya adalah untuk mengisolasi data sehingga penambahan, pengurangan, dan modifikasi dari atribut dapat dilakukan pada satu tabel dan selanjutnya dikembangkan keseluruh database melalui relasi yang ada.
Pengulangan/duplikasi data yang tidak perlu. Redundansi tidak dapat dihilangkan sama sekali karena berguna untuk integritas referensial yang menghubungkan satu field pada suatu tabel dengan field lain pada tabel yang berbeda.
Contoh Redundansi Tabel KRS
NIM
Kode_MK
Nama_MK
Nilai
200543423
PS-4533
Perancangan Sistem
A
200512345
PS-4533
Perancangan Sistem
B
200534632
PS-4533
Perancangan Sistem
B
200595732
PS-4533
Perancangan Sistem
A
200634123
BD-5452
Basis Data
B
200612367
BD-5452
Basis Data
B
200691245
BD-5452
Basis Data
A
200736512
PG-3465
Pemrograman
B
Tabel diatas memiliki redundansi. Kolom Kode_MK dan Nama_MK memiliki data yang sama (berulang-ulang).
Anomali pada dasarnya adalah ketidakkonsistenan (inkonsistensi) data. Anomali bisa terlihat pada saat melakukan perubahan, penghapusan dan penambahan data.
Contoh Anomali Tabel KRS NIM
Kode_MK
Nama_MK
Nilai
200543423
PS-4533
Perancangan Sistem
A
200512345
PS-4533
Perancangan Sistem
B
200534632
PS-4533
Perancangan Sistem
B
200595732
BD-5630
Sistem Basis Data
A
200634123
BD-5452
Basis Data
B
200612367
BD-5452
Basis Data
B
200691245
BD-5452
Basis Data
A
200736512
PG-3465
Pemrograman
B
Misalkan pada tabel diatas dilakukan perubahan data pada record ke 5, data nama mata kuliah basis data menjadi perancangan basis data.
Contoh Anomali (2) Tabel KRS NIM
Kode_MK
Nama_MK
Nilai
200543423
PS-4533
Perancangan Sistem
A
200512345
PS-4533
Perancangan Sistem
B
200534632
PS-4533
Perancangan Sistem
B
200595732
BD-5630
Sistem Basis Data
A
200634123
BD-5452
Perancangan Basis Data
B
200612367
BD-5452
Basis Data
B
200691245
BD-5452
Basis Data
A
200736512
PG-3465
Pemrograman
B
Pada tabel diatas akan terjadi ketidak-konsistenan pada record 5, 6 dan 7. yaitu record Kode_MK = BD-5452 berelasi dengan dua Nama_MK yang berbeda (Perancangan basis data dengan Basis data).
Solusi
Normalisasi
Melakukan dekomposisi dengan menentukan ketergantungan fungsional. Contoh ketergantungan fungsional : Ketergantungan fungsional pada tabel KRS Kode_MK Nim, Kode_MK
Nama_MK Nilai
Dekomposisi
Berdasarkan ketergantungan fungsional tersebut, maka tabel KRS dapat didekomposisi menjadi 2 tabel
Nama_MK
NIM
PS-4533
Perancangan Sistem
200543423
PS-4533
A
BD-5630
Sistem Basis Data
200512345
PS-4533
B
BD-5452
Perancangan Basis Data
200534632
PS-4533
B
200595732
BD-5630
A
200634123
BD-5452
B
200612367
BD-5452
B
200691245
BD-5452
A
200736512
PG-3465
B
Kode_MK
PG-3465
Pemrograman
Kode_MK
Nilai
Dekomposisi tabel dapat mengurangi redudansi yang ada dan menghilangkan anomali Perancangan melalui proses normalisasi mempunyai keuntungan-keuntungan sebagai berikut : Meminimalkan ukuran penyimpanan yang diperlukan untuk penyimpanan data. Meminimalkan resiko inkonsistensi data pada basis data. Meminimalkan kemungkinan anomaly pembaruan. Memaksimalkan stabilitas struktur data.
Tujuan proses normalisasi adalah mengkonversi relasi menjadi bentuk normal lebih tinggi. Terdapat beragam tingkat bentuk normal, yaitu: 1. 2. 3. 4. 5. 6.
Bentuk normal pertama (1NF) Bentuk normal kedua (2NF) Bentuk normal ketiga (3NF) Bentuk normal Boyce-Codd (BCNF) Bentuk normal keempat (4NF) Bentuk normal kelima (5NF)
Bentuk normal pertama (1NF) untuk menghilangkan atribut bernilai jamak. Bentuk normal kedua (2NF) untuk menghilangkan kebergantungan parsial. Bentuk normal ketiga (3NF) untuk menghilangkan kebergantungan transitif. Bentuk normal Boyce-Codd (BCNF) untuk menghilangkan anomaly tersisa disebabkan kebergantungan fungsional. Bentuk normal keempat (4NF) untuk menghilangkan kebergantungan nilai jamak. Bentuk normal kelima (5NF) untuk menghilangkan anomaly tersisa.
Tiga bentuk normal pertama berkaitan dengan kebergantungan fungsional. Sementara itu bentuk keempat dan kelima berkaitan dengan redundansi yang disebabkan kebergantungan banyak nilai (multi-valued dependencies).
Syarat 1NF adalah : setiap atribut harus bersifat atomik, artinya, setiap atribut merupakan unsur terkecil dari identitas entitas (tidak perlu dipecah-pecah lagi) semua nilai atributnya adalah sederhana, bukan atribut komposit (composite) dan bukan atribut bernilai banyak (multi-valued). Menghilangkan repeating group data (kelompok data yang berulang).
Contoh tabel yang termasuk dalam 1NF
Pada gambar disamping, atribut nilai bersifat tunggal untuk setiap kombinasi atribut NIM dan atribut Kode_MK tertentu.
NIM
Kode_MK
Nilai
200543423
PS-4533
A
200512345
PS-4533
B
200534632
PS-4533
B
200595732
BD-5630
A
200634123
BD-5452
B
200612367
BD-5452
B
200691245
BD-5452
A
200736512
PG-3465
B
Kombinasi NIM dan Kode_MK merupakan kunci primer untuk menentukan nilai.
Syarat 2NF : telah memenuhi 1NF, setiap atribut non key (bukan primary atau foreign key) harus tergantung secara fungsional dengan atribut keynya.
Relasi pada bentuk normal kedua harus tidak menyimpan fakta-fakta mengenai bagian kunci relasi. Bentuk normal kedua menghilangkan kebergantungan parsial dan masih memiliki anomalianomali yang secara praktis tidak dapat diterima.
Pada gambar disamping, atribut Nilai memiliki ketergantungan fungsional dengan atribut NIM dan Kode_MK
NIM
Kode_MK
Nilai
200543423
PS-4533
A
200512345
PS-4533
B
200534632
PS-4533
B
200595732
BD-5630
A
200634123
BD-5452
B
200612367
BD-5452
B
200691245
BD-5452
A
200736512
PG-3465
B
Apabila ketergantungan tersebut diganti menjadi NIM dengan Nilai saja, maka akan terdapat ketidakbenaran.
Dari gambar disamping terlihat bahwa Nilai tidak tergantung secara fungsional dengan NIM
NIM
Nilai
200543423
A
200512345
B
200534632
B
200595732
A
200634123
B
200612367
B
200691245
A
200736512
B
Kesimpulan : kombinasi NIM dengan Kode_MK menentukan Nilai seorang mahasiswa dengan NIM untuk mata kuliah tertentu.
NIM
Kode_MK
Nama_Mhs
Nama_MK
Nilai
200543423
PS-4533
Juli
Perancangan Sistem
A
200512345
PS-4533
Gogon
Perancangan Sistem
B
200534632
PS-4533
Heru
Perancangan Sistem
B
200595732
BD-5630
Heni
Perancangan Basis Data
A
200634123
BD-5452
Yanita
Basis Data
B
200612367
BD-5452
Linda
Basis Data
B
200691245
BD-5452
Petruk
Basis Data
A
200736512
PG-3465
Koko
Pemrograman
B
Bagaimana bila terdapat tabel seperti diatas. Apakah sudah memenuhi syarat 2NF ?
Pada tabel tersebut terdapat 2 atribut key :
NIM dan Kode_MK
Atribut non key memiliki ketergantungan :
Nama_mhs NIM Nama_Mk Kode_Mk Nilai NIM dan Kode_Mk NIM
Kode_MK
Nama_Mhs
Nama_MK
Nilai
200543423
PS-4533
Juli
Perancangan Sistem
A
200512345
PS-4533
Gogon
Perancangan Sistem
B
200534632
PS-4533
Heru
Perancangan Sistem
B
200595732
BD-5630
Heni
Perancangan Basis Data
A
200634123
BD-5452
Yanita
Basis Data
B
200612367
BD-5452
Linda
Basis Data
B
200691245
BD-5452
Petruk
Basis Data
A
200736512
PG-3465
Koko
Pemrograman
B
Untuk memenuhi syarat 2NF, maka atribut non key harus memiliki ketergantungan fungsional dengan atribut key. Tabel harus dipisah menjadi tiga tabel yang memiliki atribut key dan ketergantungan fungsional dengan atribut non key.
NIM
Nama_Mhs
NIM
Kode_MK
Nilai
200543423
Juli
200543423
PS-4533
A
200512345
Gogon
200512345
PS-4533
B
200534632
Heru
200534632
PS-4533
B
200595732
Heni
200595732
BD-5630
A
200634123
Yanita
200634123
BD-5452
B
200612367
Linda
200612367
BD-5452
B
200691245
Petruk
200691245
BD-5452
A
200736512
Koko
200736512
PG-3465
B
Kode_MK
Nama_MK
PS-4533
Perancangan Sistem
BD-5630
Perancangan Basis Data
BD-5452
Basis Data
PG-3465
Pemrograman
Syarat 3NF : telah memenuhi 2NF setiap atribut non key tidak boleh tergantung dengan atribut non key lainnya (tidak boleh terjadi ketergantungan transitif).
NIM
KodePos
Kota
12345
65141
Malang
34924
65151
Malang
42345
13460
Jakarta
54231
13460
Jakarta
Tabel diatas memiliki primary key NIM. Atribut non key : KodePos dan Kota Atribut Kota memiliki ketergantungan dengan atribut Kode Pos, bukan dengan primary key.
Menurut aturan 3NF, atribut non key tidak boleh memiliki ketergantungan dengan atribut non key (tidak boleh ada ketergantungan transitif) Untuk mengatasi masalah ini, harus dibuat tabel baru dengan atribut Kota. Sebagai primary key digunakan atribut Kode Pos. NIM
KodePos
KodePos
Kota
12345
65141
65141
Malang
34924
65151
65151
Malang
42345
13460
13460
Jakarta
54231
13460