Meu exemplo favorito é um resultado clássico de 1977 de Ashok Chandra e Philip Merlin. Eles mostraram que o problema de contenção de consultas era decidível para consultas conjuntivas. O problema de contenção de consulta conjunta acaba sendo equivalente a decidir se existe um homomorfismo entre as duas consultas de entrada. Isso reformula um problema semântico, envolvendo quantificação em um conjunto infinito, em um problema sintático, exigindo apenas a verificação de um número finito de possíveis homomorfismos. O certificado de homomorfismo é apenas de tamanho linear e, portanto, o problema está no NP.
Esse teorema fornece um dos fundamentos da teoria da otimização de consultas ao banco de dados. A idéia é transformar uma consulta em outra, mais rápida. No entanto, deseja-se garantir que o processo de otimização não crie uma nova consulta que não forneça respostas em alguns bancos de dados em que a consulta original produziu resultados.
Formalmente, uma consulta ao banco de dados é uma expressão do formulário , onde x é uma lista de variáveis livres, y é uma lista de variáveis vinculadas e Q ( x , y ) é uma fórmula de primeira ordem com variáveis x e y de um idioma com símbolos de relação. A consulta Q pode conter quantificadores existenciais e universais, a fórmula pode conter conjunção e disjunção de átomos relacionais e a negação também pode aparecer. Uma consulta é aplicada a uma instância de banco de dados Ix.Q(x,y)xyQ(x,y)xyQI, que é um conjunto de relações. O resultado é um conjunto de tuplas; quando tupla no resultado é substituído por xtx , a fórmula pode ser satisfeita. Pode-se então comparar duas consultas: Q 1 está contida em Q 2 se sempre que Q 1 aplicado a um banco de dados arbitrária exemplo I produz alguns resultados, então Q 2 aplicado ao mesmo exemplo que também produz alguns resultados. (Tudo bem se Q 1 não produzir resultados, mas Q 2Q(t,y)Q1Q2Q1IQ2IQ1Q2mas, para contenção, a implicação deve ser mantida para todas as instâncias possíveis.) O problema de contenção de consulta pergunta: dadas duas consultas ao banco de dados e Q 2 , Q 1 está contido em Q 2 ?Q1Q2Q1Q2
Não ficou claro diante de Chandra-Merlin que o problema era decidível. Usando apenas a definição, é preciso quantificar o conjunto infinito de todos os bancos de dados possíveis. Se as consultas são irrestritas, então o problema é, na verdade, undecidable: deixe ser uma fórmula que é sempre verdadeiro, então Q 1 está contida em Q 2 sse Q 2 é válido. (Este é o problema de Hilts , Entscheidung , mostrado indecidível por Church e Turing em 1936.)Q1Q1Q2Q2
Para evitar indecidibilidade, uma consulta conjuntiva tem uma forma bastante limitada: contém apenas quantificadores existenciais, e negação e disjunção não são permitidas. Então Q é uma fórmula existencial positiva com apenas conjunção de átomos relacionais. Este é um pequeno fragmento de lógica, mas é suficiente para expressar uma grande proporção de consultas úteis ao banco de dados. A declaração clássica no SQL expressa consultas conjuntivas; a maioria das consultas de mecanismos de pesquisa é conjunta.QQSELECT ... FROM
Pode-se definir homomorfismos entre consultas de maneira direta (semelhante ao homomorfismo de gráfico, com um pouco de contabilidade extra). O teorema de Chandra-Merlin diz: dadas duas consultas conjuntivas e Q 2 , Q 1 está contida em Q 2 se houver um homomorfismo de consulta de Q 2 a Q 1 . Isso estabelece a associação ao NP e é fácil mostrar que isso também é difícil para o NP.Q1Q2Q1Q2Q2Q1
- Ashok K. Chandra e Philip M. Merlin, Implementação Ótima de Consultas Conjuntivas em Bases de Dados Relacionais , STOC '77 77–90. doi: 10.1145 / 800105.803397
Decidibilidade de contenção consulta foi mais tarde estendido para uniões de consultas conjuntivo (consultas positivos existenciais onde disjunção é permitido), embora permitindo disjunção aumenta a complexidade para -completo. Também foram estabelecidos resultados de decidibilidade e indecidibilidade para uma forma mais geral de contenção de consultas , envolvendo avaliações semirráficas que ocorrem ao contar o número de respostas, ao combinar anotações na proveniência ou ao combinar resultados de consultas em bancos de dados probabilísticos.ΠP2