Contoh favorit saya adalah hasil klasik 1977 dari Ashok Chandra dan Philip Merlin. Mereka menunjukkan bahwa masalah penahanan kueri dapat ditentukan untuk kueri konjungtif. Masalah kontainmen permintaan konjungtif ternyata setara dengan memutuskan apakah ada homomorfisme antara dua kueri input. Ini mengulangi masalah semantik, yang melibatkan kuantifikasi atas set yang tak terbatas, menjadi satu sintaksis, hanya memerlukan memeriksa sejumlah terbatas kemungkinan homomorfisme. Sertifikat homomorfisme hanya berukuran linier dan masalahnya ada di NP.
Teorema ini memberikan salah satu dasar dari teori optimasi kueri basis data. Idenya adalah untuk mengubah permintaan menjadi yang lain, lebih cepat. Namun, orang menginginkan jaminan bahwa proses optimasi tidak membuat kueri baru yang gagal memberikan jawaban pada beberapa basis data di mana kueri asli memang menghasilkan hasil.
Secara formal, permintaan basis data adalah ekspresi dari formulir , di mana x adalah daftar variabel bebas, y adalah daftar variabel terikat, dan Q ( x , y ) adalah rumus orde pertama dengan variabel x dan y dari bahasa dengan simbol relasi. Kueri Q dapat berisi penjumlahan eksistensial dan universal, rumus ini mungkin berisi konjungsi dan disjungsi atom relasional, dan negasi juga dapat muncul. Kueri diterapkan ke instance database Ix . Q( x , y )xyQ ( x , y )xyQsaya, yang merupakan seperangkat hubungan. Hasilnya adalah satu set tupel; ketika tuple dalam hasil digantikan x maka rumus Q ( t , y ) dapat dipenuhi. Satu kemudian dapat membandingkan dua pertanyaan: Q 1 terkandung dalam Q 2 jika setiap kali Q 1 diterapkan ke database contoh sewenang-wenang saya menghasilkan beberapa hasil, maka Q 2 diterapkan pada contoh yang sama saya juga menghasilkan beberapa hasil. (Tidak apa-apa jika Q 1 tidak menghasilkan hasil tetapi Q 2txQ ( t , y )Q1Q2Q1sayaQ2sayaQ1Q2tidak, tetapi untuk kontainmen implikasinya harus berlaku untuk setiap instance yang mungkin.) Masalah kontainmen kueri bertanya: diberikan dua permintaan basis data dan Q 2 , apakah Q 1 terkandung dalam Q 2 ?Q1Q2Q1Q2
Sama sekali tidak jelas di hadapan Chandra-Merlin bahwa masalahnya dapat diputuskan. Hanya dengan menggunakan definisi, kita harus mengukur set yang tak terbatas dari semua database yang mungkin. Jika query tidak dibatasi, maka masalahnya adalah, pada kenyataannya, diputuskan: biarkan menjadi formula yang selalu benar, maka Q 1 terkandung di Q 2 IFF Q 2 adalah valid. (Ini Entscheidungsproblem dari Hilbert , ditunjukkan tidak dapat dipastikan oleh Gereja dan Turing pada tahun 1936.)Q1Q1Q2Q2
Untuk menghindari ketidakpastian, kueri konjungtif memiliki bentuk yang agak terbatas: hanya berisi penjumlahan eksistensial, dan negasi dan disjungsi tidak diperbolehkan. Jadi Q adalah rumus eksistensial positif dengan hanya hubungan atom relasional. Ini adalah bagian kecil dari logika, tetapi cukup untuk mengekspresikan sebagian besar permintaan basis data yang berguna. Pernyataan klasik dalam SQL mengungkapkan kueri konjungtif; sebagian besar kueri mesin pencari adalah kueri konjungtif.QQSELECT ... FROM
Seseorang dapat mendefinisikan homomorfisme antara permintaan dengan cara yang mudah (mirip dengan homomorfisme grafik, dengan sedikit pembukuan tambahan). The Chandra-Merlin teorema mengatakan: diberikan dua pertanyaan penghubung dan Q 2 , Q 1 terkandung dalam Q 2 IFF ada permintaan homomorfisma dari Q 2 ke Q 1 . Ini menetapkan keanggotaan dalam NP, dan langsung untuk menunjukkan bahwa ini juga NP-hard.Q1Q2Q1Q2Q2Q1
- Ashok K. Chandra dan Philip M. Merlin, Implementasi Optimal dari Pertanyaan Konjungtif dalam Basis Data Relasional , STOC '77 77-90. doi: 10.1145 / 800105.803397
Decidability of Containment Containment kemudian diperluas ke persatuan query konjungtif (queri positif eksistensial di mana disjungsi diperbolehkan), meskipun disjungsi meningkatkan kompleksitas hingga -complete. Hasil desidabilitas dan ketidakpastian juga telah ditetapkan untuk bentuk yang lebih umum dari penahanan kueri , yang melibatkan penilaian semiring yang terjadi ketika menghitung jumlah jawaban, ketika menggabungkan anotasi dalam sumber, atau ketika menggabungkan hasil kueri dalam database probabilistik.ΠP2