내가 가장 좋아하는 예는 Ashok Chandra 와 Philip Merlin 의 고전적인 1977 결과입니다 . 이들은 쿼리 포함 문제가 결합 쿼리에 대해 결정 가능한 것으로 나타났습니다. 결 합 쿼리 포함 문제는 두 입력 쿼리 사이에 동질성이 있는지 여부를 결정하는 것과 같습니다. 이것은 무한 세트에 대한 수량화를 포함하는 의미 론적 문제를 구문 상으로 표현하며, 한정된 수의 가능한 동형을 확인하는 것만 필요로합니다. 동종 인증서는 선형 크기이므로 문제는 NP에 있습니다.
이 정리는 데이터베이스 쿼리 최적화 이론의 기초 중 하나를 제공합니다. 아이디어는 쿼리를 다른 더 빠른 쿼리로 변환하는 것입니다. 그러나 최적화 프로세스가 원래 쿼리가 결과를 생성 한 일부 데이터베이스에 대한 응답을 제공하지 않는 새 쿼리를 생성하지 않는다는 확신을 원합니다.
공식적으로 데이터베이스 쿼리 는 형식의 표현식입니다 . Q ( x , y ) (여기서 x 는 자유 변수 목록, y 는 바인딩 된 변수 목록, Q ( x , y ) 는 관계 기호가있는 언어의 변수 x 및 y 가있는 1 차 수식입니다 . 질의 Q 는 실존적이고 보편적 인 정량자를 포함 할 수 있고, 공식은 관계 원자의 결합 및 분리를 포함 할 수 있으며, 부정도 나타날 수있다. 쿼리는 데이터베이스 인스턴스 I에 적용됩니다x . Q( x , y )엑스와이Q ( x , y )엑스와이큐나는관계의 집합입니다. 결과는 튜플 세트입니다. 결과에서 튜플 가 x 로 대치 될 때 식 Q ( t , y ) 가 만족 될 수있다. 하나는 두 개의 쿼리를 비교할 수 Q (1) 에 포함되는 Q 2 마다 경우 Q 1은 임의의 데이터베이스 인스턴스에 적용 I는 어떤 결과를 생성하고 Q (2)가 동일한 경우에 적용 I는 일부 결과를 생성한다. ( Q 1 이 결과를 생성하지 않고 Q 2를 생성해도 괜찮습니다티엑스Q ( t , y )큐1큐2큐1나는큐2나는큐1큐2하지만, 견제의 의미는 모든 가능한 예를 들어 보유해야 않음). 쿼리 봉쇄 문제가 묻습니다 : 쿼리 두 개의 데이터베이스 주어진 과 Q 2 ,되는 Q 1 에 포함 된 Q 2 ?큐1큐2큐1큐2
Chandra-Merlin 이전에는 그 문제가 결정 가능하다는 것이 전혀 명확하지 않았습니다. 정의 만 사용하면 가능한 모든 데이터베이스의 무한 세트를 수량화해야합니다. 쿼리가 제한이없는 경우, 다음 문제는, 사실, 결정 불가능하다 :하자 다음 항상 true입니다 공식, 수 Q (1) 에 포함되어있는 Q 2 IFF에 Q 2는 유효합니다. (이것은 1936 년에 교회와 튜링이 결정할 수없는 것으로 밝혀진 힐버트의 엔츠 아이돌 스 문제 입니다.)큐1큐1큐2큐2
결정 불가능 성을 피하기 위해, 결합 쿼리 는 다소 제한된 형식을 갖습니다. 는 존재하는 수량 자만 포함하며 부정 및 분리는 허용되지 않습니다. 따라서 Q 는 관계 원자 만 결합한 양의 실존 적 공식입니다. 이것은 논리의 작은 조각이지만 많은 양의 유용한 데이터베이스 쿼리를 표현하기에 충분합니다. SQL 의 고전적인 문장은 결합 쿼리를 표현합니다. 대부분의 검색 엔진 검색어는 연결성 검색어입니다.큐큐SELECT ... FROM
하나의 쿼리 사이에 동질성을 정의 할 수있다 (그래서 약간의 추가 부기를 가지고 동질화와 유사). 찬드라 - 멀린 정리는 말한다 :이 결합하는 쿼리 주어진 과 Q 2 , Q (1) 에 포함되어있는 Q 2 에서 쿼리 이체 동형가 IFF에 Q 2 에 Q 1 . 이것은 NP의 멤버쉽을 확립하며, 이것이 또한 NP-hard임을 보여주는 것은 간단합니다.큐1큐2큐1큐2큐2큐1
분리를 허용하면 복잡성이 복잡 해지더라도, 질의 억제의 결정 가능성은 결합 성 쿼리 (분리가 허용되는 실존 적 긍정적 쿼리)의 결합으로 확장되었다 . 보다 일반적인 형태의 쿼리 포함에 대해 결정 가능성과 결정 불가능한 결과가 설정되었습니다. 여기 에는 답변 수를 계산할 때, 주석을 결합 할 때 또는 확률 론적 데이터베이스에서 쿼리 결과를 결합 할 때 발생하는 반올림 평가가 포함됩니다.Π피2