7.2. Redudansi Informasi dan Anomali Pengupdatean - BAB 7 NORMALISASI

BAB 7 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

  Tujuan utama dari perancangan basis data relasional adalah untuk mengelompokkan atribut-atribut ke dalam relasi-relasi agar meminimalisasikan redundansi informasi dan dengan demikian mengurangi ruang penyimpanan file yang dibutuhkan oleh relasi. Permasalahan yang berkaitan dengan kelebihan informasi diilustrasikan dengan membandingkan relasi-relasi antara mata kuliah dengan dosen yang terlihat pada gambar 7.1 dengan relasi-relasi MK_Dosen terlihat dalam gambar 7.2. Relasi mata kuliah merupakan suatu format alternatif dari relasi-relasi MK_Dosen. Dimana diasumsikan satu mata kuliah diajarkan oleh satu dosen sedangkan satu dosen dapat mengajar lebih dari satu mata kuliah. Relasi-relasi tersebut mempunyai bentuk :

  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

  

Kode_MK Nama_MK Kode_Dosen

MI350 Sistem Basis Data B104 MI465 Analisis prc.Sistem B317 MI500 Rek.Perangkat Lunak B317 AKN201 Akuntansi Keuangan D310 MKT300 Dasar Pemasaran B212

RELASI DOSEN

  

Kode_Dosen Nama_Dosen

B104 Indra B317 Diandra D310 Anggia B212 Nesya

Gambar 7.1. Relasi Mata Kuliah dan Relasi Dosen

RELASI MK_DOSEN

  

Kode_MK Nama_MK Kode_Dosen Nama_Dosen

MI350 Sistem Basis Data B104 Indra MI465 Analisis prc.Sistem B317 Diandra MI500 Rek.Perangkat Lunak B317 Diandra AKN201 Akuntansi Keuangan D310 Anggia MKT300 Dasar Pemasaran B212 Nesya

Gambar 7.2. Relasi MK_Dosen

  Kesulitan lainnya yang cukup serius dalam menggunakan relasi yang mempunyai kelebihan informasi adalah permasalahan anomali pengupdatean. Anomali pengupdatean dapat diklasifikasikan menjadi anomali penyisipan, anomali penghapusan atau anomali modifikasi.

  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

  Jika kita menghapus baris mata kuliah dari relasi MK_Dosen yang mewakili mata kuliah terakhir yang diajarkan seorang dosen, informasi mengenai dosen itu juga akan hilang dari basis data. Sebagai contoh, jika kita menghapus baris pada kode mata kuliah MI350 (Sistem Basis Data) dari relasi MK_Dosen, informasi yang berkaitan dengan kode dosen B104 hilang dari basis data. Rancangan relasi pada gambar 7.1. akan menghindari terjadinya permasalahan ini, karena baris-baris dosen ditempatkan terpisah dari baris-baris mata kuliah dan hanya atribut-atribut Kode_Dosen yang terhubung dengan dua relasi. Jika kita menghapus suatu baris pada kode mata kuliah MI350 dari relasi mata kuliah, informasi kode dosen B104 dalam relasi dosen tidak terpengaruh.

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 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.

  Perhatikan relasi atribut-atribut A dan B, dimana atribut B secara fungsional tergantung pada atribut A. (Catatan bahwa A dan B masing-masing dapat terdiri dari satu atau lebih atribut). Dengan kata lain, jika kita mengetahui nilai A dan kita menguji ketergantungan relasi, kita hanya menemukan satu nilai B dalam seluruh baris nilai A yang sama. Dengan demikian, ketika dua baris mempunyai nilai A yang sama, mereka juga mempunyai nilai B yang sama. Tetapi nilai B yang sama mungkin mempunyai nilai A yang berbeda. Ketergantungan antara atribut A dan B dapat diwakilkan secara diagram seperti pada gambar 7.3. di bawah ini.

  B tergantung secara A B fungsional pada A

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 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.

  

1NF

  

2NF

  

3NF

  1NF

  1NF

BCNF

  2NF

  2NF

  3NF

  

4NF

  3NF

BCNF BCNF

  

5NF

  4NF

  4NF

  5NF

  5NF

Higher normal

forms

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 :

  1. Unnormalized form / UNF (Bentuk yang tidak ternormalisasi) Suatu tabel yang berisi satu atau lebih pengulangan grup-grup.

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 Dio MI MI350 Sistem Basis Data B104 Indra A MI465 Analisis prc.Sistem B317 Diandra B MI500 Rek. Perangkat Lunak B317 Diandra A

  5432 Kevin Ak. MI350 Manajmen DB B104 Indra C AKN201 Akuntansi Keuangan D310 Anggia B MKT300 Dasar Pemasaran B212 Nesya A

Gambar 7.5. Relasi Mahasiswa-1 (Bentuk Tidak Normal)

  

No_Mhs Nama_Mhs Jurusan Kode_MK Nama_MK Kode_Dosen Nama_Dos Nilai

en 2683 Dio MI MI350 Sistem Basis Data B104 Indra A 2683 Dio MI MI465 Analisis prc.Sistem B317 Diandra B 2683 Dio MI MI500 Rek. Perangkat Lunak B317 Diandra A 5432 Kevin Ak. MI350 Manajmen DB B104 Indra C 5432 Kevin Ak. AKN201 Akuntansi Keuangan D310 Anggia B 5432 Kevin Ak. MKT300 Dasar Pemasaran B212 Nesya A

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. Relasi mahasiswa-2 belum memenuhi Bentuk Normal Kedua oleh karena itu tabel perlu direvisi. Atribut-atribut yang tidak tergantung penuh perlu dipisah dengan atribut-atribut yang tergantung penuh terhadap kunci utama-nya sehingga tabel mahasiswa-2 dipisah menjadi dua tabel yaitu relasi kuliah dan relasi mahasiswa-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.

  Nama_Mhs No_Mhs Jurusan Nilai Nama_MK Kode_Dosen

  Kode_MK Nama_Dosen

Gambar 7.7. Diagram Ketergantungan Fungsional Kode_MK Nama_MK Kode_Dosen Nama_Dosen

  MI350 Sistem Basis Data B104 Indra MI465 Analisis prc.Sistem B317 Diandra MI500 Rek. Perangkat Lunak B317 Diandra AKN201 Akuntansi Keuangan D310 Anggia MKT300 Dasar Pemasaran B212 Nesya

  

Gambar 7. 8. Relasi Kuliah (2NF)

  

No_Mhs Nama_Mhs Jurusan

2683 Dio MI 5432 Kevin Ak.

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 utama tidak tergantung transitif terhadap kunci utamanya.

  Normalisasi dari relasi Bentuk Normal Kedua ke Bentuk Normal Ketiga melibatkan penghapusan ketergantungan transitif. Atribut-atribut yang mempunyai ketergantungan transitif dihapus dari relasi dan ditempatkan pada relasi baru. Relasi kuliah (gambar 7.8.) belum memenuhi Bentuk Normal Ketiga karena ada ketergantungan transitif (Kode_MK → Kode_Dosen, Kode_Dosen → Nama_Dosen ) sehingga relasi kuliah harus dipecah menjadi dua relasi yaitu relasi mata kuliah dan relasi dosen. Relasi mata kuliah dan relasi dosen sudah memenuhi Bentuk Normal Ketiga karena atribut-atribut sudah tidak tergantung 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 MI350 A 2683 MI465 B 2683 MI500 A 5432 MI350 C 5432 AKN201 B 5432 MKT300 A

Gambar 7.10. Relasi nilai (Bentuk Normal Ketiga)

  Kode_MK Nama_MK Kode_Dosen MI350 Sistem Basis Data B104 MI465 Analisis prc.Sistem B317 MI500 Rek. Perangkat Lunak B317 AKN201 Akuntansi Keuangan D310 MKT300 Dasar Pemasaran B212

Gambar 7.11. Relasi mata kuliah (Bentuk Normal Ketiga)

  

Kode_Dosen Nama_Dosen

B104 Indra B317 Diandra D310 Anggia B212 Nesya