Back to IF5101 Manajemen Data
Decomposition dan Lossy Decomposition
Questions/Cues
- Apa itu dekomposisi skema relasi dan kenapa dibutuhkan?
- Mengapa tidak semua dekomposisi itu baik?
- Apa yang dimaksud lossy decomposition?
- Bagaimana contoh
employeemenunjukkan hilangnya informasi?- Apa syarat dekomposisi yang lossless?
Reference Points
- IF5101 — Relational Data Model Part 4 (Slides 7-8)
- Silberschatz, Korth, Sudarshan — Database System Concepts 7th Ed., Chapter 7.2 (Decomposition)
Dekomposisi: Memecah Skema
Dekomposisi berarti mengganti satu skema relasi dengan beberapa skema yang gabungan atributnya sama dengan . Pada
in_dep, satu-satunya cara menghindari pengulangan informasi adalah memecahnya menjadiinstructordandepartment.Tetapi tidak semua dekomposisi baik.
Contoh Dekomposisi yang Buruk
Misalkan:
employee = (ID, name, street, city, salary)didekomposisi menjadi
employee1 = (ID, name) employee2 = (name, street, city, salary)Masalah muncul bila dua karyawan memiliki nama yang sama. Atribut yang dipakai untuk menggabungkan kembali kedua tabel (
name) bukan kunci, sehingga natural join menghasilkan tuple palsu (spurious tuples).
ID name street city salary 57766 Kim Main Perryridge 75000 98776 Kim North Hampton 67000 Setelah dipecah lalu di-join lewat
name, kita memperoleh 4 baris: (57766, Kim, North, Hampton, 67000) dan (98776, Kim, Main, Perryridge, 75000) ikut muncul, padahal tidak ada di data asli.Lossy Decomposition
Dekomposisi di atas tidak dapat merekonstruksi relasi
employeeasli — kita kehilangan informasi tentang siapa tinggal di mana. Karena itu disebut lossy decomposition.
- Lossy: — join menghasilkan baris tambahan (informasi hilang karena tidak bisa membedakan yang asli dari yang palsu).
- Lossless: — relasi asli dapat dibangun kembali tepat.
flowchart LR E["employee<br/>(ID, name, street, city, salary)"] E --> E1["employee1<br/>(ID, name)"] E --> E2["employee2<br/>(name, street, city, salary)"] E1 -->|"natural join pada name"| J["hasil join<br/>ada tuple palsu"] E2 --> J J -.->|"≠ employee asli"| EKapan Dekomposisi Lossless?
Dekomposisi menjadi dan adalah lossless bila minimal satu dependensi berikut berlaku di :
Artinya atribut yang dipakai bersama harus menjadi superkey dari paling tidak salah satu hasil dekomposisi. Pada contoh, bukan superkey keduanya, sehingga lossy. Bila dipecah menjadi
(ID, name)dan(ID, street, city, salary), irisannyaIDadalah kunci sehingga lossless.
Dekomposisi memecah skema menjadi untuk menghilangkan redundancy, tetapi tidak semua dekomposisi baik. Memecah
employeemenjadi(ID, name)dan(name, street, city, salary)lossy: bila ada dua karyawan bernama sama, natural join menghasilkan tuple palsu dan relasi asli tidak bisa direkonstruksi. Dekomposisi lossless bila merupakan superkey bagi atau .
Additional Information
Lossless-join vs. dependency preserving
Dua properti ini independen. Lossless menjamin data tidak rusak saat di-join; dependency preserving menjamin aturan (FD) bisa ditegakkan tanpa join. Algoritma dekomposisi BCNF selalu lossless tetapi tidak selalu dependency preserving (lihat BCNF dan Dependency Preservation).
Tes lossless untuk n relasi
Untuk dekomposisi lebih dari dua relasi dipakai tableau / chase algorithm. Untuk dua relasi cukup tes irisan di atas.
Proyek Eksplorasi Mandiri
- Buat tabel
employeedengan dua “Kim”, lakukan dekomposisi buruk di atas laluNATURAL JOIN; hitung jumlah baris hasil vs aslinya.- Ulangi dengan dekomposisi
(ID, name)+(ID, street, city, salary)dan buktikan hasil join identik dengan aslinya.Bacaan Lanjutan
- Silberschatz, Korth, Sudarshan. Database System Concepts, 7th Ed. — Chapter 7.2 (Atomic Domains / Lossless Decomposition).
- Ullman, J. D. Principles of Database and Knowledge-Base Systems — bab dekomposisi dan chase algorithm.