私のお気に入りの例は、アショクチャンドラとフィリップマーリンの古典的な1977年の結果です。彼らは、クエリ包含問題が接続クエリに対して決定可能であることを示しました。結合クエリの包含問題は、2つの入力クエリ間に準同型性があるかどうかを判断することと同じであることがわかりました。これは、無限集合上の数量化を含むセマンティクス問題を構文問題に言い換えて、有限数の可能な準同型をチェックするだけで済みます。準同型証明書のサイズは線形であるため、問題はNPにあります。
この定理は、データベースクエリ最適化の理論の基礎の1つを提供します。アイデアは、クエリを別のより高速なクエリに変換することです。ただし、元のクエリで結果が生成された一部のデータベースでは、最適化プロセスで新しいクエリが作成されず、回答が得られないという保証が必要です。
正式には、データベースクエリはの形式の式です。Q (x、y)、ここでxは自由変数のリスト、yはバインドされた変数のリスト、Q (x、y)は関係記号を持つ言語の変数xとyをもつ1次式です。クエリQには、実存的および普遍的な量指定子が含まれる場合があります。式には、関係原子の結合および分離が含まれる場合があり、否定も表示される場合があります。クエリはデータベースインスタンスIに適用されますx.Q(x,y)xyQ(x,y)xyQI、これは一連の関係です。結果はタプルのセットです。結果のタプルがxに置換されると、式Q (t、y)を満たすことができます。一つは、2つのクエリを比較することができる:Q 1が中に含まれているQ 2たび場合Q 1は任意のデータベース・インスタンスに適用され、私はいくつかの結果を生成し、その後、Q 2は、同じインスタンスに適用され、私はまた、いくつかの結果を生じます。(Q 1で結果が生成されなくてもQ 2であれば問題ありませんtxQ(t,y)Q1Q2Q1IQ2IQ1Q2しかし、封じ込めのための含意は、すべての可能なインスタンスのために保持しなければならないん)。クエリ封じ込め問題が尋ねる:照会する2つのデータベース与えられたとQ 2、されるQ 1が中に含まれているQ 2?Q1Q2Q1Q2
Chandra-Merlinの前では、問題が決定可能であることはまったく明らかではありませんでした。定義だけを使用して、考えられるすべてのデータベースの無限のセットを定量化する必要があります。クエリが無制限であれば、問題は、実際には、決定不能さ:聞かせて常に真である式も、その後、Q 1が中に含まれているQ 2場合に限っQ 2が有効です。(これは、1936年に教会とチューリングによって決定不能に示されたヒルベルトのEntscheidungsproblemです。)Q1Q1Q2Q2
決定不能性を回避するために、連言クエリの形式はかなり限定されていますは実存量指定子のみが含まれ、否定と選言は許可されません。したがって、Qは関係原子のみを結合した正の実存的公式です。これはロジックの小さな断片ですが、有用なデータベースクエリの大部分を表現するには十分です。SQL の古典的なステートメントは、連言クエリを表します。ほとんどの検索エンジンクエリは接続クエリです。QQSELECT ... FROM
クエリ間の準同型を簡単な方法で定義できます(グラフ準同型に似ていますが、少し余分なブックキーピングがあります)。Chandra-Merlinの定理によると、2つの結合クエリおよびQ 2が与えられた場合、Q 2からQ 1へのクエリ準同型がある場合、Q 1はQ 2に含まれます。これによりNPのメンバーシップが確立され、これもNPハードであることを示すのは簡単です。Q1Q2Q1Q2Q2Q1
クエリ封じ込めの決定可能性は、後に論理和がに複雑さを上昇させる可能にするが、論理積クエリ(論理和が許可されている実存正クエリ)の組合に拡張した -complete。決定可能性および決定不能性の結果は、回答の数を数えるとき、出所で注釈を結合するとき、または確率的データベースでクエリの結果を結合するときに発生する半環評価を含む、クエリの包含のより一般的な形式でも確立されています。ΠP2