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