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

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 1 dengan relasi-relasi MK_Dosen terlihat dalam gambar 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
MI465
MI500
AKN201
MKT300

Sistem Basis Data
Analisis prc.Sistem
Rek.Perangkat Lunak
Akuntansi Keuangan
Dasar Pemasaran

B104
B317
B317
D310
B212
RELASI DOSEN

Kode_Dosen
Nama_Dosen

B104
B317
D310
B212

Indra
Diandra
Anggia
Nesya

Gambar  1  Relasi Mata Kuliah dan Relasi Dosen

RELASI MK_DOSEN

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




1.     Anomali Penyisipan

Terdapat dua tipe utama dari anomali penyisipan, dimana kita akan mengilustrasikannya dengan menggunakan relasi MK_Dosen yang diperlihatkan pada gambar 2, yakni :

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

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

  1. 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 1. mempunyai properti-properti yang lebih baik daripada relasi MK_Dosen pada gambar 2

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

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 3 di bawah ini.

Gambar 3 Diagram Ketergantungan fungsional

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





Komentar

Postingan populer dari blog ini

Yuk Simak Perbedaan SQL dan NoSQL !

Profil Perusahaan GOJEK Indonesia

Mengenal Kebudayaan di Kalimantan Barat