Il mio esempio preferito è un classico risultato del 1977 di Ashok Chandra e Philip Merlin. Hanno dimostrato che il problema di contenimento della query era decidibile per le query congiuntive. Il problema congiuntivo di contenimento delle query risulta equivalente a decidere se esiste un omomorfismo tra le due query di input. Ciò riformula un problema di semantica, che implica la quantificazione su un insieme infinito, in un sintattico, che richiede solo il controllo di un numero finito di possibili omomorfismi. Il certificato di omomorfismo ha solo una dimensione lineare e quindi il problema è in NP.
Questo teorema fornisce una delle basi della teoria dell'ottimizzazione delle query del database. L'idea è di trasformare una query in un'altra, più veloce. Tuttavia, si vuole essere certi che il processo di ottimizzazione non crei una nuova query che non riesce a fornire risposte su alcuni database in cui la query originale ha prodotto risultati.
Formalmente, una query di database è un'espressione della forma , dove è un elenco di variabili libere, è un elenco di variabili associate e è una formula di primo ordine con variabili e di una lingua con simboli di relazione. La query può contenere quantificatori esistenziali e universali, la formula può contenere congiunzione e disgiunzione di atomi relazionali e può apparire anche la negazione. Una query viene applicata a un'istanza di database , che è un insieme di relazioni. Il risultato è una serie di tuple; quando tuplax.Q(x,y)xyQ(x,y)xyQIt nel risultato viene sostituito con quindi la formula può essere soddisfatta. Si può quindi confrontare due query: è contenuto in se ogniqualvolta applicato ad un'istanza del database arbitrario produce dei risultati, quindi applicata alla stessa istanza produce anche alcuni risultati. (Va bene se non produce risultati ma fa, ma per il contenimento le implicazioni devono per ogni possibile istanza.) Il problema di contenimento della query richiede: date due query di databasexQ(t,y)Q1Q2Q1IQ2IQ1Q2Q1e , è contenuta in ?Q2Q1Q2
Prima di Chandra-Merlin non era affatto chiaro che il problema fosse decidibile. Usando solo la definizione, bisogna quantificare sull'insieme infinito di tutti i possibili database. Se le query non hanno restrizioni, il problema è, in effetti, indecidibile: lascia che sia una formula sempre vera, quindi è contenuto in se è valido. (Questo è il problema di Entscheidungs di Hilbert , mostrato indecidibile da Church and Turing nel 1936.)Q1Q1Q2Q2
Per evitare indecidibilità, una query congiuntiva ha una forma piuttosto limitata: contiene solo quantificatori esistenziali e negazione e disgiunzione non sono consentite. Quindi è una formula esistenziale positiva con solo congiunzione di atomi relazionali. Questo è un piccolo frammento di logica, ma è sufficiente per esprimere una grande percentuale di utili query sul database. L' istruzione classica in SQL esprime query congiuntive; la maggior parte delle query dei motori di ricerca sono query congiuntive.QQSELECT ... FROM
È possibile definire gli omomorfismi tra le query in modo semplice (simile all'omomorfismo grafico, con un po 'di contabilità extra). Il teorema di Chandra-Merlin dice: date due query congiunte e , è contenuta in se c'è un omomorfismo di query da a . Ciò stabilisce l'appartenenza a NP ed è semplice dimostrare che anche questo è NP-difficile.Q1Q2Q1Q2Q2Q1
- Ashok K. Chandra e Philip M. Merlin, Implementazione ottimale di query congiuntive in banche dati relazionali , STOC '77 77–90. doi: 10.1145 / 800105.803397
La decidibilità del contenimento delle query è stata successivamente estesa ai sindacati di query congiuntive (query positive esistenziali in cui è consentita la disgiunzione), sebbene consentire la disgiunzione aumenti la complessità a . Sono stati inoltre stabiliti risultati di decidibilità e indecidibilità per una forma più generale di contenimento delle query , che coinvolge valutazioni di semiring che si verificano quando si conta il numero di risposte, quando si combinano annotazioni in provenienza o quando si combinano i risultati di query in database probabilistici.ΠP2