Dalam perspektif normalisasi, sebuah basis data dapat dikatakan baik, jika setiap tabel yang menjadi unsur pembentuk basis data tersebut juga telah berada dalam keadaan baik atau normal. Selanjutnya, sebuah tabel dapat dikategorikan baik (efisien) atau normal, jika telah memenuhi 3 (tiga) kriteria berikut :
- Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya harus
dijamin aman (dijamin aman (Lossless–Join Decomposition). - Terpeliharanya ketergantungan fungsional pada saat perubahan data (DependencyPreservation).
- Tidak melanggar Boyce–Code Normal Form (BCNF)
Dekomposisi memang merupakan upaya untuk mendapatkan tabel yang baik. Tetapi jika tidak hati–hati, upaya ini justru dapat menghasilkan kesalahan. Dekomposisi yang benar terjadi jika tabel–tabel hasil dekomposisi kita gabungkan kembali dapat menghasilkan tabel awal sebelum didekomposisi.
Dekomposisi yang benar semacam ini disebut Lossless–Join Decomposition atau Lossless Decomposition (dekomposisi aman).
Di bawah ini contoh abstrak yang menghasilkan dekomposisi tidak aman (Lossy-Join Decomposition) :
Diasumsikan tabel XYZ yang didefinisikan oleh dua buah ketergantungan fungsional X Y dan Y Z. Kedua ketergantungan fungsional tersebut diperoleh dari pengamatan terhadap data yang kurang memadai atau karena asumsi yang kurang tepat. Katakan isi tabel XYZ tersebut adalah sebagai berikut:
Kalau kedua tabel diatas diagabungkan kembali maka, tabel awal XYZnya akan diperoleh ke,bali sehingga dekomposisi tersebut aman. Karena itulah ketergantungan fungsional pada suatu tabel harus kita tetapkan berdasarkan pengamatan yang teliti dan asumsi yang dapat dipertanggung jawabkan agar
kelak hasil dekomposisi dapat dibenarkan.
Dependency Prasevation
Dependecy Preservation (pemiliharaan ketergantungan merupakan) kriteria kedua yang harus dapat
dicapai untuk mendapatkan tabel dan basis data yang baik. Ketika kita melakukan perubahan data, maka harus bisa dijamin agar perubahan tersebut tidak menghasilkan inkonsistensi data yang mengakibatkan ketergantungan fungsional yang sudah benar menjadi tidak terpenuhi. Akan tetapi, dalam upaya untuk memelihara ketergantungan fungsional yang ada untuk tetap terpenuhi tersebut, prosesnya harus dapat dilakukan dengan efisien.
Contoh :
Tabel mahasiswa : (nim, nama_mhs, alamat_mhs, tgl_lahir) dengan
ketergantungan fungsional–nya yaitu :
nim nama_mhs, alamat_mhs, tgl_lahir
Tabel nilai : (nama_kul, nim, nama_mhs, indeks_nilai) dengan ketergantungan
fungsional–nya yaitu :
nama_kul, nim indeks_nilai dan
nim nama_mhs
dicapai untuk mendapatkan tabel dan basis data yang baik. Ketika kita melakukan perubahan data, maka harus bisa dijamin agar perubahan tersebut tidak menghasilkan inkonsistensi data yang mengakibatkan ketergantungan fungsional yang sudah benar menjadi tidak terpenuhi. Akan tetapi, dalam upaya untuk memelihara ketergantungan fungsional yang ada untuk tetap terpenuhi tersebut, prosesnya harus dapat dilakukan dengan efisien.
Contoh :
Tabel mahasiswa : (nim, nama_mhs, alamat_mhs, tgl_lahir) dengan
ketergantungan fungsional–nya yaitu :
nim nama_mhs, alamat_mhs, tgl_lahir
Tabel nilai : (nama_kul, nim, nama_mhs, indeks_nilai) dengan ketergantungan
fungsional–nya yaitu :
nama_kul, nim indeks_nilai dan
nim nama_mhs
Jika ada perubahan nama_mhs di tabel mahasiswa maka perubahan tersebut harus juga dilakukan di tabel nilai dan juga berlaku sebaliknya yaitu jika ada perubahan nama_mhs di tabel nilai maka perubahan tersebut harus juga dilakukan di tabel mahasiswa.
Jika hal tersebut tidak dilakukan maka data menjadi tidak konsiste dan ketergantunan fungsional menjadi tidak terpenuhi. Misalnya nilai yang nim-nya sama tetapi nama_mhs berbeda. Jika begitu, maka perubahan harus dilakukan diseluruh basis data, tetapi masalahnya perubahan itu tidak efisien dan seharusnya dihindari.Karena itu sebaiknya agar kriteria dependency preservation dapat terpenuhi dengan meniadakan/melepaskan atribut nama_mhs dari tabel nilai (sehingga tabel nilai berisi 3 atribut, yaitu nama-kul, nim dan indeks_nilai)
Boyce Code Normal Form (BCNF)
Kriteria berikutnya untuk mendapatkan tabel yang baik adalah dengan menerapkan BCNF. Sebuah tabel dikatakan memenuhi BCNF jika untuk semua ketergantungan fungsional dengan notasi X Y, maka X harus merupakan candidate key pada tabel tersebut. Jika tidak demikian, maka tabel tersebut harus didekomposisi berdasarkan ketergantungan fungsional yang ada, sedemikian hingga X menjadi candidat key dari tabel–tabel hasil dekomposisi.
Contoh tabel yang tidak memenuhi BCNF :
Ditentukan tabel A = (E, F, G, H, I) dan berlaku ketergantungan fungsional, yaitu :
E, F G, H, I
F, G H, I
Disini tabel A tidak memenuhi BCNF karena ada X yang bukan candiday key,
yaitu F, G sehingga F, G H, I. Sedangkan E, F adalah candidat key karena E, F G, H, I Karena terdapat 2 ketergantungan fungsional maka agar tabel A tidak memenuhi BCNF maka tabel tersebut harus didekomposisikan menjadi :
A1 = (E, F, G) dengan ketergantungan fungsional E, F G
A2 = (F, G, H, I) dengan ketergantungan fungsional F, G H, I
Demikian penjelasan tentang Pengantar teknik Normalisasi Data, Sampai jumpa di artikel berikutnya.






Tidak ada komentar:
Posting Komentar