Dekomposisi Query
Dekomposisi Query
1. Dekomposisi Query
Dekomposisi queri: Pemetaan kueri kalkulus (SQL) ke operasi aljabar (pilih,
proyek, gabung, ganti nama)
o queri input dan output mengacu pada hubungan global, tanpa pengetahuan
tentang distribusi data.
o queri keluaran benar secara semantik dan bagus dalam arti pekerjaan yang
berlebihan dihindari.
o Dekomposisi queri terdiri dari 4 langkah:
1. Normalisasi: Mengubah kueri menjadi bentuk yang dinormalisasi
2. Analisis: Mendeteksi dan menolak kueri yang "salah"; hanya mungkin
untuk subset relasional kalkulus
3. Penghapusan redundansi: Hilangkan predikat yang berlebihan
4. Menulis ulang: Ubah kueri menjadi RA dan optimalkan kueri
Normalisasi: Ubah kueri menjadi bentuk yang dinormalisasi untuk memfasilitasi
pemrosesan lebih lanjut. Terutama terdiri dari dua langkah.
1. Analisis leksikal dan sintaksis
i. Periksa validitas (mirip dengan kompiler)
ii. Periksa atribut dan relasi
iii. Ketik pemeriksaan kualifikasi
2. Disiapkan ke dalam bentuk normal
i. Dengan SQL, kualifikasi kueri (klausa WHERE) adalah bagian tersulit
mungkin predikat kompleks sewenang-wenang yang diawali oleh bilangan
(∃, ∀)
ii. Bentuk normal konjungtif
ii. Dalam bentuk normal terpisah, kueri dapat diproses secara independen
subkueri konjungtif yang ditautkan oleh serikat pekerja (sesuai dengan
disjungsi)
Contoh: Pertimbangkan pertanyaan berikut: Temukan nama-nama karyawan yang
telah mengerjakan proyek P1 selama 12 atau 24 bulan?
SELECT ENAME
FROM EMP, ASG
WHERE EMP.ENO = ASG.ENO AND
ASG.PNO = ‘‘P1’’ AND
DUR = 12 OR DUR = 24
Kualifikasi dalam bentuk normal konjungtif:
Analisis: Mengidentifikasi dan menolak jenis kueri yang salah atau salah secara
semantik
Jenis salah
- Memeriksa apakah atribut dan nama relasi dari suatu query didefinisikan
secara global skema
- Memeriksa apakah operasi pada atribut tidak bertentangan dengan tipe
atribut, misalnya, perbandingan> operasi dengan atribut tipe string
Salah semantik
- Memeriksa apakah komponen berkontribusi dengan cara apa pun terhadap
pembuatan hasil
- Hanya sebagian dari kueri kalkulus relasional yang dapat diuji
kebenarannya, yaitu yang tidak mengandung disjungsi dan negasi
- Struktur data khas yang digunakan untuk mendeteksi kueri yang salah
secara semantik adalah:
- ∗ Grafik koneksi (grafik kueri)
- ∗ Gabung grafik
Contoh: Pertimbangkan queri:
SELECT ENAME,RESP
AND DUR ≥ 36