Normalisasi (bagian III) Lossless-Join Decomposition Dependency Preservation BCNF
Diagram Ketergantungan NPM nama_mhs NPM alamat_mhs NPM nama_mhs alamat_mhs tgl_lahir NPM tgl_lahir Kode_kul nama_kul Kode_kul sks Kode_kul nama_kul sks semester Kode_kul semester NPM kode_kul indeks_nilai
Kelemahan Mendasar (i) Pengulangan informasi Pengulangan pada atribut nama_mhs, alamat_mhs dan tgl_lahir dinyatakan berulang-ulang sesuai npm Pengulangan pada atribut nama_kul, semester, sks sesuai kode_kul Potensi inkonsistensi data pada operasi pengubahan Jika ada perubahan pada data nama_mhs, maka perubahan ini harus dijalarkan ke seluruh baris data pada tabel tersebut untuk npm yang sama. Jika perubahan ini tidak dilakukan maka ketergantungan fungsional yang telah ditetapkan akan terganggu, karena akan ada 2 row atau lebih dengan npm yang sama tapi nama_mhs nya berbeda.
Kelemahan Mendasar (ii) Tersembunyinya informasi tertentu Ada data yang tidak terlihat misalnya data mahasiswa dengan NPM ‘2001.25.002’ sedang tdak mengambil kuliah apapun, sehingga tidak disertakan dalam tabel tersebut Kelemahan yang ada tersebut mengiring kita untuk melakukan dekomposisi, yakni melakukan pemilahan tabel tersebut untuk menjadi beberapa tabel dengan mempertimbangkan ketergantungan fungsionalnya.
Lossless-Join Decomposition Dekomposisi yang benar terjadi jika hasil dekomposisi tabel-tabel dapat digabungkan kembali untuk menghasilkan tabel awal sebelum didekomposisi Dekomposisi yang benar semacam ini disebut Lossless-Join Decomposition atau Lossless Decomposition (Dekomposisi aman)
Lossless-Join Decomposition Contoh abstrak yang menghasilkan dekomposisi yang tidak aman (Lossy-Join Decomposition) Tabel ABC dengan 2 ketergantungan Fungsi yaitu : A B dan B C A B C A1 100 C1 A2 200 C2 A3 300 C3 A4 C4
Lossless-Join Decomposition A B A1 100 A2 200 A3 300 A4 A B C A1 100 C1 A2 200 C2 A3 300 C3 A4 C4 B C 100 C1 200 C2 300 C3 C4
Lossless-Join Decomposition A B A1 100 A2 200 A3 300 A4 A B C A1 100 C1 A2 200 C2 C4 A3 300 C3 A4 B C 100 C1 200 C2 300 C3 C4 A4 – 200 – C2
Dependency Preservation (i) Dependency Preservation (Pemeliharaan Ketergantungan): Ketika kita melakukan perubahan data, maka harus bisa dijamin agar perubahan tersebut tidak menghasilkan inkonsistensi data yang mengakibatkan KF yang sudah benar menjadi tidak terpenuhi. Pada tabel universal, misalnya ada perubahan data alamat untuk mahasiswa dengan NPM = ‘2001.25.001’ maka perubahan ini harus kita lakukan pada atribut alamat_mhs di semua row yang nilai atribut npm-nya bernilai ‘2001.25.001’. Hal ini menjadi tidak efisien.
Dependency Preservation (ii) Contoh lain : Misalkan terdapat 2 tabel: tabel mahasiswa (npm, nama, alamat_mhs, tgl_lahir) dan tabel nilai (npm, nama_mhs, nama_kul, indeks_nilai) Pada tabel nilai terdapat dua buah KF yaitu : nama_kul npm indeks_nilai dan npm nama_mhs Jika di tabel mahasiswa terjadi perubahan data pada atribut alamat_mhs atau tgl_lahir, maka perubahan itu tidak perlu dijalarkan ke tabel nilai karena memang di tabel nilai atribut tsb tidak dilibatkan
Dependency Preservation (iii) Tetapi jika perubahan itu terjadi pada atribut nama_mhs di tabel mahasiswa, maka perubahan ini harus dijalarkan ke tabel nilai, krn atribut ini juga digunakan di tabel nilai Karena itu solusi terbaik agar criteria Dependency Preservation dapat terpenuhi adalah dengan meniadakan atribut nama_mhs dari tabel nilai, sehingga tabel nilai hanya berisi 3 buah atribut yaitu : nama_kul, npm dan indeks_nilai
BCNF (i) Kriteria: Untuk semua ketergantungan fungsional harus merupakan candidate key pada relasi tersebut . Jika tabel hanya memiliki sebuah candidate key, 3NF dan BCNF-nya ekuivalen BCNF merupakan special case dari 3NF
BCNF (ii) Jika kita tinjau tabel universal, jelas tabel tersebut tidak memenuhi BCNF. Buktinya, kita ambil salah satu KF, yaitu : npm nama_mhs alamat_mhs tgl_lahir, maka seharusnya npm merupakan candidate key di tabel tsb tapi pada kenyataanya tidak demikian karena pada tabel tsb npm tidak unik. Karena itu tabel universal harus didekomposisi.
BCNF (iii) Jika kita tinjau tabel universal, jelas tabel tersebut tidak memenuhi BCNF. Buktinya, kita ambil salah satu KF, yaitu : npm nama_mhs alamat_mhs tgl_lahir, maka seharusnya npm merupakan candidate key di tabel tsb tapi pada kenyataanya tidak demikian karena pada tabel tsb npm tidak unik. Karena itu tabel universal harus didekomposisi.
BCNF (iv) Tabel “mahasiswa” Tabel “kuliah” Tabel “nilai” Npm nama_mhs alamat_mhs tgl_lahir Tabel “kuliah” Kode_kul nama_kul sks semester Tabel “nilai” Npm kode_kul indeks_nilai