NORMALISASI
7.1. Tujuan Normalisasi
Dalam merancang suatu basis data relasional, sasaran utama dalam mengembangkan suatu model data logika adalah untuk membuat suatu data yang akurat yaitu relasi-relasi dan batasan-batasannya. Untuk mencapai sasaran ini, kita harus mengidentifikasi bentuk atau rangkaian yang sesuai dari relasi. Teknik yang kita dapat gunakan untuk membantu mengidentifikasi relasi disebut normalisasi.
Normalisasi adalah suatu teknik untuk memproduksi suatu rangkaian relasi-relasi dengan properti-properti yang diinginkan untuk memenuhi permintaan-permintaan data suatu organisasi.
Proses normalisasi pertama kali dikembangkan oleh E.F.Codd (1972). Normalisasi sering ditampilkan sebagai suatu rangkaian pengujian dalam suatu relasi untuk menentukan apakah relasi tersebut memenuhi permintaan dari suatu bentuk rangkaian yang spesifik.
Proses normalisasi merupakan metode formal yang mengidentifikasi relasi-relasi berdasarkan kunci utama dan ketergantungan fungsional diantara atribut-atribut. Normalisasi mendukung perancang-perancang basis data dengan menyajikan serangkaian pengujian yang dapat diaplikasikan pada relasi-relasi individu sehingga skema relasi dapat dinormalisasikan ke bentuk yang spesifik untuk mencegah anomali-anomali pengupdatean yang kemungkinan terjadi.
7.2. Redudansi Informasi dan Anomali Pengupdatean
Mata Kuliah (Kode_MK, Nama_MK, Kode_Dosen) Dosen (Kode_Dosen, Nama_Dosen)
MK_Dosen (Kode_MK, Nama_MK, Kode_Dosen, Nama_Dosen)
Pada relasi MK_Dosen terdapat kelebihan informasi; detail mengenai dosen diulang setiap mata kuliah yang diajarkan. Sebaliknya, dalam relasi dosen informasi dosen muncul hanya sekali pada setiap dosen, dan hanya kode dosen (Kode_Dosen) yang diulang dalam relasi mata kuliah, untuk mewakili setiap mata kuliah yang diajarkan oleh dosen tersebut.
RELASI MATA KULIAH
Gambar 7.1. Relasi Mata Kuliah dan Relasi Dosen
RELASI MK_DOSEN
Kode_MK Nama_MK Kode_Dosen Nama_Dosen MI350
Gambar 7.2. Relasi MK_Dosen
7.2.1. Anomali Penyisipan
Terdapat dua tipe utama dari anomali penyisipan, dimana kita akan mengilustrasikannya dengan menggunakan relasi MK_Dosen yang diperlihatkan pada gambar 7.2, yakni :
1. Pada saat menyisipkan secara detail dari mata kuliah–mata kuliah baru kedalam relasi MK_Dosen, kita harus memasukkan detail dari dosen yang mengajarkan. Contoh, untuk memasukkan detail dari mata kuliah baru yang diajarkan dosen dengan kode B317, kita harus memasukkan data yang benar dari dosen dengan kode B317 sehingga detail-detail dosen konsisten dengan nilai-nilai pada dosen B317 dalam baris relasi MK_Dosen lainnya. Relasi yang terlihat dalam gambar 7.1 tidak terdapat kemungkinan terjadinya ketidak konsistenan ini karena kita hanya memasukkan kode dosen yang sesuai untuk setiap mata kuliah kedalam relasi mata kuliah. Ditambah lagi detail-detail dari kode dosen B317 direkam hanya sekali dalam basis data sebagai baris tunggal dalam relasi dosen tersebut.
2. Pada saat memasukkan detail dari dosen baru yang belum mengajar kedalam relasi MK_Dosen, jika kita berusaha untuk memasukkan detail-detail dosen terdapat nilai null dalam atribut-atribut mata kuliah, seperti Kode_MK. Karena Kode_MK merupakan primary key dalam relasi MK_Dosen, memasukkan nilai null pada Kode_MK melanggar integritas. Karena itu kita tidak dapat memasukkan satu baris pada dosen baru kedalam relasi MK_Dosen. Rancangan relasi-relasi yang diperlihatkan gambar 1 menghindari permasalahan ini karena detail-detail dosen dimasukkan dalam relasi dosen secara terpisah dari detail-detail mata kuliah.
7.2.2. Anomali Penghapusan
7.2.3. Anomali Modifikasi
Dalam relasi MK_Dosen, jika kita ingin merubah nilai dari salah satu atribut dosen tertentu, sebagai contoh, informasi mengenai nama dosen dari kode dosen B317, kita harus mengupdate baris-baris dari seluruh mata kuliah yang diajarkan dosen tersebut. Jika modifikasi ini tidak diselesaikan pada seluruh baris-baris yang sesuai dari relasi MK_Dosen, basis data menjadi tidak konsisten. Sebagai contoh, kode Dosen B317 dapat muncul dengan nama-nama dosen yang berbeda di baris-baris mata kuliah yang berbeda.
Contoh-contoh di atas menyatakan bahwa relasi mata kuliah dan relasi dosen pada gambar 7.1. mempunyai properti-properti yang lebih baik daripada relasi MK_Dosen pada gambar 7.2.
7.3.
Ketergantungan Fungsional
Salah satu dari konsep-konsep utama yang terkait dengan normalisasi adalah ketergantungan fungsional. Ketergantungan Fungsional menjelaskan relasi diantara atribut-atribut. Dalam bagian ini dijelaskan konsep dari ketergantungan fungsional dan dalam bagian berikutnya menerangkan gabungan dari ketergantungan fungsional dengan proses normalisasi dari relasi-relasi basis data.
7.3.1.
Definisi dari Ketergantungan Fungsional
Ketergantungan fungsional menerangkan keterhubungan diantara atribut-atribut dalam suatu relasi. Sebagai contoh, jika A dan B merupakan atribut-atribut dari relasi R, B secara fungsional tergantung pada A (dilambangkan A → B), jika setiap nilai A dalam R berhubungan tepat dengan satu nilai B dalam R.
Ketergantungan fungsional merupakan properti dari atribut-atribut yang bernilai dalam suatu relasi yang mengindikasikan bagaimana atribut berhubungan dengan atribut lain dan menspesifikasikan ketergantungan fungsional diantara atribut-atribut tersebut. Jika terjadi ketergantungan fungsional, ketergantungan dispesifikasikan sebagai batasan diantara atribut-atribut tersebut.
Gambar 7.3. Diagram Ketergantungan fungsional
7.3.2. Determinan
Determinan dari ketergantungan fungsional menunjukkan atribut atau sekelompok atribut pada sisi kiri anak panah. Jika terjadi ketergantungan fungsional, atribut atau kelompok atribut pada sisi kiri panah disebut determinan. Sebagai contoh, A adalah determinan B seperti terlihat pada gambar 7.3.
Relasi antara nama dosen dan Kode_MK adalah 1 : M terdapat beberapa kode matakuliah dihubungkan dengan satu dosen. Dalam hal ini, Kode_MK merupakan penentu dari ketergantungan fungsional ini.
Kode_MK → Nama_MK Kode_MK → Kode_Dosen Kode_MK → Nama_Dosen Kode_Dosen → Nama_Dosen
Format alternatif untuk menggambarkan ketergantungan fungsional diperlihatkan di bawah ini :
Kode_MK → Nama_MK, Kode_Dosen, Nama_Dosen Kode_Dosen → Nama_Dosen
Untuk mengidentifikasi kunci kandidat untuk relasi MK_Dosen, kita harus mengenali atribut (atau kelompok atribut) yang secara unik mengidentifikasi setiap baris dalam relasi ini. Jika suatu relasi memiliki lebih dari satu kunci kandidat, kita mengidentifikasi kunci kandidat yang bertindak sebagai kunci utama untuk relasi tersebut. Seluruh atribut yang bukan merupakan bagian dari kunci utama seharusnya secara fungsional tergantung pada kunci kandidat tersebut.
Hanya satu kunci kandidat dari relasi MK_Dosen, dengan demikian kunci utama-nya adalah Kode_MK, seluruh atribut-atribut lain dari relasi yang secara fungsional tergantung pada Kode_MK.
7.4.
Proses Normalisasi
Normalisasi merupakan suatu teknik formal untuk menganalisa relasi-relasi yang berdasarkan pada kunci utama dan ketergantungan fungsional. Teknik tersebut melibatkan serangkaian aturan yang dapat digunakan untuk menguji relasi-relasi individu sehingga suatu basis data dapat dinormalisasikan ke tingkat manapun. Jika suatu kebutuhan tidak dipenuhi, relasi yang
A B
B tergantung secara
mengganggu kebutuhan tersebut harus diuraikan ke dalam relasi-relasi yang secara individu memenuhi kebutuhan dari normalisasi tersebut.
Normalisasi sering dilaksanakan dengan beberapa langkah. Setiap langkah berhubungan dengan bentuk normal yang khusus dimana properti-properti telah diketahui. Dalam normalisasi, relasi-relasi secara progresif menjadi lebih dibatasi dalam format untuk mengurangi anomali-anomali pengupdatean. Pada relasi model data, penting untuk mengetahui bahwa hanya bentuk normal pertama ( first normal form /1NF) yang diwajibkan sedangkan bentuk-bentuk normal berikutnya tidak diwajibkan. Tetapi juga untuk menghindari anomali-anomali pengupdatean yang telah dibahas sebelumnya disarankan untuk meneruskan setidaknya sampai 3NF.
Proses normalisasi seperti yang diilustrasikan dalam gambar 7.4, menampilkan relasi-relasi antar berbagai bentuk normal. Gambar tersebut menampilkan beberapa relasi-relasi 1NF juga berhubungan dengan 2NF dan relasi-relasi 2NF juga berhubungan dengan 3NF, dan seterusnya. Dalam tulisan ini hanya dibahas sampai dengan bentuk normal ketiga.
Selanjutnya kita menampilkan proses dari normalisasi tersebut dengan pertama-tama mentransfer data yang disimpan sebagai suatu bentuk dalam format tabel dengan baris dan kolom. Kemudian kita melanjutkan untuk menormalisasikan tabel data ini.
5NF 4NF BCNF
1NF
2NF
3NF
Higher normal forms 1NF
5NF
4NFBCNF 3NF
2NF 1NF
5NF 4NF BCNF 3NF 2NF
Gambar 7.4 . Ilustrasi diagramatik dari relasi-relasi antar normal form
7.4.1.
First Normal Form
/1NF (Bentuk Normal Pertama)
Sebelum membahas Bentuk Normal Pertama, pertama-tama kita memberikan definisi dari pernyataan sebelum Bentuk Normal Pertama yakni :
2. Bentuk Normal Pertama
Suatu relasi dikatakan sudah memenuhi Bentuk Normal Pertama bila setiap data bersifat atomik yaitu setiap irisan baris dan kolom hanya mempunyai satu nilai data.
Pada bagian ini, proses normalisasi dimulai dengan mentransfer data dari sumbernya kedalam format tabel dengan kolom-kolom dan baris-baris. Dalam format ini, tabel tersebut masih dalam bentuk yang tidak ternormalisasi. Untuk merubah tabel yang tidak ternormalisasi tersebut ke Bentuk Normal Pertama, kita mendefinisikan dan menghapus pengulangan grup-grup di dalam tabel tersebut. Pengulangan grup merupakan suatu atribut atau grup dari atribut di dalam suatu tabel yang terjadi dengan nilai berganda dari atribut-atribut yang dinominasikan sebagai kunci pada tabel tersebut. Yang perlu diperhatikan dalam konteks ini, istilah kunci menunjukkan atribut yang secara unik mengidentifikasi setiap baris dalam tabel yang tidak ternormalisasi.
Untuk merubah bentuk yang tidak ternormalisasi menjadi bentuk pertama kita harus menghapus pengulangan grup dengan memasukkan data yang sesuai dalam kolom-kolom kosong dari baris-baris yang berisi pengulangan data tersebut. Dengan kata lain, kita mengisi kolom yang kosong dengan menduplikasi data. Hasil tabel tersebut, menunjukkan suatu relasi, berisi nilai-nilai atomik (tunggal) dalam irisan dari setiap baris dan kolom dan karena itu tabel ini masuk dalam Bentuk Normal Pertama. Dengan pendekatan ini, redudansi diperkenalkan ke dalam hasil relasi, yang kemudian dihapus selama proses normalisasi berikutnya.
Untuk menjelaskan tahapan normalisasi kita menggunakan relasi mahasiswa-1 dimana seorang mahasiswa dapat mengambil beberapa mata kuliah, satu mata kuliah dapat diambil oleh lebih dari satu mahasiswa, satu mata kuliah hanya diajarkan oleh satu dosen, satu dosen dapat mengajar beberapa mata kuliah dan seorang mahasiswa pada mata kuliah tertentu hanya mempunyai satu nilai. Untuk melihat hubungan antar atribut dapat kita lihat diagram ketergantungan fungsional pada gambar 7.7.
No_Mhs Nama_Mhs Jurusan Kode_MK Nama_MK Kode_Dosen Nama_Dosen Nilai
2683
No_Mhs Nama_Mhs Jurusan Kode_MK Nama_MK Kode_Dosen Nama_Dos
Gambar 7.6. Relasi Mahasiswa-2 (Bentuk Normal Pertama)
7.4.2.
Second Normal Form
/2NF (Bentuk Normal Kedua)
Bentuk Normal Kedua berdasarkan pada konsep dari ketergantungan fungsional penuh dapat kita jabarkan sebagai berikut :
a. Fully Functional Dependency (Ketergantungan Fungsional Penuh)
Atribut B pada relasi R dikatakan tergantung fungsional penuh pada atribut A pada relasi R, jika B tidak tergantung pada subset dari A ( bila A adalah kunci gabungan).
Contoh ketergantungan fungsional penuh dapat dilihat pada gambar 7.7. Pada gambar 7.7, No_Mhs dan Kode_MK merupakan kunci komposit pada relasi mahasiswa-2, dari atribut-atribut yang ada pada relasi mahasiswa-2 hanya atribut nilai yang tergantung fungsional penuh. Atribut nilai tergantung fungsional penuh pada No_Mhs dan Kode_MK karena nilai tidak tergantung pada subset dari kunci komposit. Sedangkan Nama_Mhs dan jurusan tergantung fungsional sebagian, karena keduanya tergantung pada No_Mhs. Begitu pula atribut Nama_MK, Kode_Dosen dan Nama_Dosen tergantung juga pada Kode_MK.
b. Definisi dari Bentuk Normal Kedua
Bentuk Normal Kedua berlaku pada relasi-relasi dengan kunci komposit yaitu relasi dengan kunci utama yang terdiri dari dua atau lebih atribut-atribut. Suatu relasi dengan atribut kunci utama tunggal secara otomatis berada dalam Bentuk Normal Kedua.
Suatu relasi dikatakan sudah memenuhi Bentuk Normal Kedua bila relasi tersebut sudah memenuhi Bentuk Normal Kesatu, dan atribut yang bukan kunci utama sudah tergantung penuh terhadap kunci utamanya.
utama-nya sehingga tabel mahasiswa-2 dipisah menjadi dua tabel yaitu relasi kuliah dan relasi 3. Relasi kuliah dan relasi mahasiswa-3 sudah memenuhi Bentuk Normal Kedua karena semua atribut yang ada didalamnya sudah tergantung penuh terhadap kunci utamanya.
7.4.3.
Third Normal Form
/3NF (Bentuk Normal Ketiga)
Meskipun relasi-relasi Bentuk Normal Kedua mengurangi redundansi dari relasi yang ada dalam Bentuk Normal Pertama, tetapi masih terdapat anomali-anomali. Sebagai contoh bila kita ingin menghapus satu mata kuliah misalkan sistem basis data. Apabila hanya 1 orang yang mengajar sistem basis data, informasi dosen yang bernama Indra akan terhapus juga. Begitu pula bila kita ingin mengupdate nama dosen, harus mengupdate beberapa kali. Pengupdatean anomali ini disebabkan oleh transitive dependency (ketergantungan transitif). Kita perlu meneruskan sampai ke Bentuk Normal Ketiga.
Gambar 7.7. Diagram Ketergantungan Fungsional
Kode_MK Nama_MK Kode_Dosen Nama_Dosen MI350
MI465 MI500 AKN201 MKT300
Sistem Basis Data Analisis prc.Sistem Rek. Perangkat Lunak Akuntansi Keuangan Dasar Pemasaran
B104 B317 B317 D310 B212
Indra Diandra Diandra Anggia Nesya
Gambar 7. 8. Relasi Kuliah (2NF)
Nilai
No_Mhs
Kode_MK
Nama_Mhs
Jurusan
Nama_MK
Kode_Dosen
No_Mhs Nama_Mhs Jurusan
2683
5432 DioKevin MIAk.
Gambar 7.9. Relasi mahasiswa-3 (3 NF)
7.4.3.1. Transitive Dependency (Ketergantungan Transitif)
Atribut C pada relasi R dikatakan tergantung transitif pada atribut A, jika atribut B tergantung pada atribut A pada relasi R dan atribut C tergantung pada atribut B pada relasi R ( A → B, B → C, maka A → C ).
Ketergantungan transitif merupakan suatu deskripsi suatu tipe dari ketergantungan fungsional yang terjadi ketika ketergantungan-ketergantungan fungsional yang ada diantara atribut A, B, dan C dari suatu relasi diuraikan seperti berikut ini :
A → B dan B → C
Kemudian ketergantungan transitif A → C tersebut terjadi via atribut B.
Sebagai contoh, perhatikan ketergantungan fungsional berikut dalam relasi tabel kuliah berikut ini :
Kode_MK → Kode_Dosen dan Kode_Dosen → Nama_Dosen
Nama_Dosen tergantung fungsional pada Kode_Dosen dan Kode_Dosen tergantung fungsional pada Kode_MK sehingga dapat dikatakan bahwa Nama_Dosen tergantung transitif pada Kode_MK.
7.4.3.2. Definisi dari Bentuk Normal Ketiga
Suatu relasi dikatakan sudah memenuhi Bentuk Normal Ketiga bila relasi tersebut sudah memenuhi bentuk Normal Kedua dan atribut yang bukan kunci utamatidak tergantung transitif terhadap kunci utamanya.
transitif terhadap kunci utama-nya. Relasi mahasiswa-3 dan relasi nilai sudah memenuhi Bentuk Normal Ketiga juga karena tidak tergantung transitif terhadap kunci utama-nya.
No_Mhs Kode_MK Nilai
2683 2683 2683 5432 5432 5432
MI350 MI465 MI500 MI350 AKN201 MKT300
A B A C B A
Gambar 7.10. Relasi nilai (Bentuk Normal Ketiga)
Kode_MK Nama_MK Kode_Dosen
MI350 MI465 MI500 AKN201 MKT300
Sistem Basis Data Analisis prc.Sistem Rek. Perangkat Lunak Akuntansi Keuangan Dasar Pemasaran
B104 B317 B317 D310 B212
Gambar 7.11. Relasi mata kuliah (Bentuk Normal Ketiga)
Kode_Dosen Nama_Dosen
B104 B317 D310 B212
Indra Diandra Anggia Nesya