Moim ulubionym przykładem jest klasyczny wynik Ashoka Chandry i Philipa Merlina z 1977 r . Wykazali, że problem ograniczania zapytań był rozstrzygalny w przypadku zapytań łącznych. Okazało się, że problem ograniczania zapytań łącznych jest równoważny z podejmowaniem decyzji, czy istnieje homomorfizm między dwoma zapytaniami wejściowymi. Przeformułowuje to problem semantyki, obejmujący kwantyfikację w zbiorze nieskończonym, na problem składniowy, wymagający jedynie sprawdzenia skończonej liczby możliwych homomorfizmów. Certyfikat homomorfizmu ma tylko rozmiar liniowy, więc problem dotyczy NP.
Twierdzenie to stanowi jedną z podstaw teorii optymalizacji zapytań do bazy danych. Chodzi o przekształcenie zapytania w inne, szybsze. Jednak chce się mieć pewność, że proces optymalizacji nie utworzy nowego zapytania, które nie da odpowiedzi w niektórych bazach danych, w których oryginalne zapytanie dało wyniki.
Formalnie zapytanie do bazy danych jest wyrażeniem postaci , gdzie to lista wolnych zmiennych, jest listą powiązanych zmiennych, a to formuła pierwszego rzędu ze zmiennymi i języka z symbolami relacji. Zapytanie może zawierać kwantyfikatory egzystencjalne i uniwersalne, formuła może zawierać koniunkcję i rozłączenie atomów relacyjnych, a także może pojawić się negacja. Zapytanie jest stosowane do instancji bazy danych , która jest zbiorem relacji. Wynikiem jest zestaw krotek; kiedy krotkax y Q ( x , y ) x y Q I t x Q ( t , y ) Q 1 Q 2 Q 1 I Q 2 I Q 1 Q 2 Q 1 Q 2 Q 1x.Q(x,y)xyQ(x,y)xyQIt w wyniku zastępuje a następnie można spełnić formułę . Można następnie porównać dwa zapytania: zawarty jest w jeśli kiedykolwiek zastosować do dowolnej instancji bazy danych wytwarza pewne rezultaty, a następnie zastosowane do tej samej instancji produkuje również pewne rezultaty. (Jest w porządku, jeśli nie generuje wyników, ale tak, ale dla powstrzymania implikacja musi być zachowana dla każdej możliwej instancji). Problem powstrzymywania zapytań pyta: biorąc pod uwagę dwa zapytania do bazy danychxQ(t,y)Q1Q2Q1IQ2IQ1Q2Q1i , czy jest zawarte w ?Q2Q1Q2
Przed Chandra-Merlin nie było wcale jasne, że problem jest rozstrzygalny. Używając samej definicji, należy obliczyć nieskończony zestaw wszystkich możliwych baz danych. Jeśli zapytania są nieograniczone, problem jest w rzeczywistości nierozstrzygalny: niech będzie formułą, która jest zawsze prawdziwa, wtedy jest zawarte w jeśli jest poprawne. (To Entscheidungsproblem Hilberta , pokazany jako niezdecydowany przez Churcha i Turinga w 1936 r.)Q1Q1Q2Q2
Aby uniknąć nierozstrzygalności, zapytanie łączone ma raczej ograniczoną formę: zawiera tylko kwantyfikatory egzystencjalne, a negacja i rozłączenie są niedozwolone. Zatem jest pozytywną formułą egzystencjalną z jedynie połączeniem atomów relacyjnych. Jest to niewielki fragment logiki, ale wystarcza do wyrażenia dużej części przydatnych zapytań do bazy danych. Klasyczna instrukcja w SQL wyraża zapytania łączące; większość zapytań w wyszukiwarkach to zapytania łączone.QQSELECT ... FROM
Homomorfizmy między zapytaniami można zdefiniować w prosty sposób (podobnie jak homomorfizm wykresów, z odrobiną dodatkowej księgowości). Twierdzenie Chandra-Merlina mówi: biorąc pod uwagę dwa zapytania i , jest zawarte w iff, istnieje homomorfizm zapytania od do . Ustanawia to członkostwo w NP i łatwo jest pokazać, że jest to również trudne dla NP.Q1Q2Q1Q2Q2Q1
- Ashok K. Chandra i Philip M. Merlin, Optymalne wdrażanie spójnych zapytań w relacyjnych bazach danych , STOC '77 77–90. doi: 10.1145 / 800105.803397
Rozstrzygalność ograniczania zapytań została później rozszerzona na związki zapytań łączonych (zapytania egzystencjalne dodatnie, w których dozwolone jest rozłączanie), chociaż zezwolenie na rozłączanie podnosi złożoność do . Ustalono również wyniki rozstrzygalności i nierozstrzygalności dla bardziej ogólnej formy ograniczania zapytań , polegającej na przerywaniu wycen, które występują podczas zliczania liczby odpowiedzi, łączenia adnotacji lub pochodzenia wyników zapytań w probabilistycznych bazach danych.ΠP2