Мій улюблений приклад - класичний результат 1977 року Ашока Чандри та Філіпа Мерліна. Вони показали, що проблема вмісту запитів вирішується для кон'юнктивних запитів. Проблема утримання кон'юнктивних запитів виявляється рівнозначною вирішенню, чи існує гомоморфізм між двома вхідними запитами. Це перефразовує семантичну задачу, що включає кількісне визначення над нескінченним набором, у синтаксичну, вимагаючи лише перевірки обмеженої кількості можливих гомоморфізмів. Сертифікат гомоморфізму має лише лінійний розмір, тому проблема полягає в NP.
Ця теорема є однією з основ теорії оптимізації запитів баз даних. Ідея полягає в перетворенні запиту в інший, більш швидкий. Однак хочеться впевнитись, що процес оптимізації не створює нового запиту, який не дає відповіді на деякі бази даних, де оригінальний запит дав результати.
Формально запит до бази даних є виразом форми , де x - список вільних змінних, y - список зв'язаних змінних, а Q ( x , y ) - формула першого порядку зі змінними x та y мови із символами відношення. Запит Q може містити екзистенційні та універсальні квантори, формула може містити кон'юнкцію та диз'юнкцію реляційних атомів, також може з'являтися заперечення. Запит застосовується до екземпляра I бази данихх . Q( x , y )хуQ ( x , y )хуQЯ, що є сукупністю відносин. Результат - набір кортежів; коли кортеж в результаті заміщений на x, то формулу Q ( t , y ) можна задовольнити. Тоді можна порівняти два запити: Q 1 міститься у Q 2, якщо всякий раз, коли Q 1, застосований до довільного екземпляра бази даних, я створює певні результати, тоді Q 2, застосований до одного і того ж екземпляра, я також дає деякі результати. (Добре, якщо Q 1 не дає результатів, але Q 2тхQ ( t , y )Q1Q2Q1ЯQ2ЯQ1Q2так, але для стримування імплікація повинна мати місце для кожного можливого екземпляра.) Проблема з вмістом запитів запитує: з огляду на два запити бази даних і Q 2 , чи Q 1 міститься у Q 2 ?Q1Q2Q1Q2
Перед Чандрою-Мерліном зовсім не було зрозуміло, що проблема вирішується. Використовуючи лише визначення, треба кількісно оцінити нескінченний набір усіх можливих баз даних. Якщо запити необмежені, то проблема насправді не може бути вирішена: нехай - це формула, яка завжди відповідає дійсності, тоді Q 1 міститься в Q 2, якщо Q 2 є дійсним. (Це Енштайдунгспроблема Гільберта , показана Церквою та Тюрінгом у 1936 році.Q1Q1Q2Q2
Щоб уникнути визначуваності, кон'юнктивний запит має досить обмежену форму: містить лише екзистенційні кількісні показники, а заперечення та диз'юнкція заборонені. Тож Q - це позитивна екзистенціальна формула з лише сполученням реляційних атомів. Це крихітний фрагмент логіки, але цього достатньо, щоб висловити велику частку корисних запитів до бази даних. Класичний вислів у SQL виражає сполучні запити; більшість запитів пошукової системи - це кон'юнктивні запити.QQSELECT ... FROM
Можна визначити гомоморфізми між запитами прямо (аналогічно гомоморфізму графів, дещо додаткової бухгалтерії). Теорема Чандра-Мерліна говорить: якщо два сполучних запити і Q 2 , Q 1 міститься в Q 2, якщо є гомоморфізм запиту від Q 2 до Q 1 . Це встановлює членство в НП, і просто можна показати, що це також важко для НП.Q1Q2Q1Q2Q2Q1
- Ашок К. Чандра та Філіп М. Мерлін, Оптимальна реалізація кон'юнктивних запитів у реляційних базах даних , STOC '77 77–90. doi: 10.1145 / 800105.803397
Розв’язання вмісту запитів пізніше поширилося на об'єднання кон'юнктивних запитів (екзистенційні позитивні запити, де дозволена диз'юнкція), хоча дозволення диз'юнкції підвищує складність до -повної. Результати розбірливості та невизначеності також встановлені для більш загальної форми утримання запитів , що передбачає семірінг оцінок, які виникають під час підрахунку кількості відповідей, при поєднанні анотацій у походженнях або при об'єднанні результатів запитів у імовірнісних базах даних.ΠП2