En teoría de bases de datos , una consulta conjuntiva es una forma restringida de consultas de primer orden que utiliza el operador de conjunción lógica . Muchas consultas de primer orden pueden escribirse como consultas conjuntivas. En particular, gran parte de las consultas realizadas en bases de datos relacionales pueden expresarse de esta manera. Las consultas conjuntivas también poseen una serie de propiedades teóricas deseables que no comparten otras clases de consultas más amplias (por ejemplo, las consultas de álgebra relacional ).
Definición
Las consultas conjuntivas son el fragmento de lógica de primer orden (independiente del dominio) dado por el conjunto de fórmulas que se pueden construir a partir de fórmulas atómicas usando la conjunción ∧ y la cuantificación existencial ∃, pero no usando la disyunción ∨ , la negación ¬ o la cuantificación universal ∀. Cada una de estas fórmulas se puede reescribir (eficientemente) en una fórmula equivalente en forma normal prenexa , por lo que esta forma generalmente se asume simplemente.
Así pues, las consultas conjuntivas tienen la siguiente forma general:
- ,
con las variables libresllamadas variables distinguidas y variables ligadasse denominan variables indistinguibles.son fórmulas atómicas .
Como ejemplo de por qué es importante la restricción a la lógica de primer orden independiente del dominio, consideremos:, que no es independiente del dominio; véase el teorema de Codd . Esta fórmula no puede implementarse en el fragmento select-project-join del álgebra relacional y, por lo tanto, no debe considerarse una consulta conjuntiva.
Las consultas conjuntivas pueden expresar una gran proporción de las consultas que se realizan con frecuencia en bases de datos relacionales . Por ejemplo, imaginemos una base de datos relacional para almacenar información sobre estudiantes, su dirección, los cursos que toman y su género. Encontrar a todos los estudiantes varones y sus direcciones que asisten a un curso al que también asiste una estudiante mujer se expresa mediante la siguiente consulta conjuntiva:
(estudiante, dirección) . ∃ (estudiante2, curso) . asiste(estudiante, curso) ∧ género(estudiante, 'masculino') ∧ asiste(estudiante2, curso) ∧ género(estudiante2, 'femenino') ∧ vive(estudiante, dirección)
Tenga en cuenta que, dado que la única entidad de interés es el estudiante varón y su dirección, estas son las únicas variables distinguidas, mientras que las variables course, student2solo se cuantifican existencialmente , es decir, no se distinguen.
Fragmentos
Las consultas conjuntivas sin variables distinguidas se denominan consultas conjuntivas booleanas . Las consultas conjuntivas en las que todas las variables son distinguidas (y ninguna variable está ligada) se denominan consultas de equi-unión , [ 1 ] porque son el equivalente, en el cálculo relacional , de las consultas de equi-unión en el álgebra relacional (cuando se seleccionan todas las columnas del resultado).
Relación con otros lenguajes de consulta
Las consultas conjuntivas también se corresponden con las consultas select-project-join en álgebra relacional (es decir, consultas de álgebra relacional que no utilizan las operaciones unión o diferencia) y con las consultas select-from-where en SQL en las que la condición where utiliza exclusivamente conjunciones de condiciones de igualdad atómicas, es decir, condiciones construidas a partir de nombres de columnas y constantes sin utilizar operadores de comparación distintos de "=", combinadas mediante "and". Cabe destacar que esto excluye el uso de agregación y subconsultas. Por ejemplo, la consulta anterior se puede escribir como una consulta SQL del fragmento de consulta conjuntiva como
seleccionar l . estudiante , l . dirección de asiste a1 , género g1 , asiste a2 , género g2 , vive l donde a1 . estudiante = g1 . estudiante y a2 . estudiante = g2 . estudiante y l . estudiante = g1 . estudiante y a1 . curso = a2 . curso y g1 . género = 'masculino' y g2 . género = 'femenino' ;Registro de datos
Además de su notación lógica, las consultas conjuntivas también pueden escribirse como reglas Datalog . De hecho, muchos autores prefieren la siguiente notación Datalog para la consulta anterior:
resultado ( estudiante , dirección ) :- asiste ( estudiante , curso ), género ( estudiante , masculino ), asiste ( estudiante2 , curso ), género ( estudiante2 , femenino ), vive ( estudiante , dirección ).Aunque esta notación no contiene cuantificadores, las variables que aparecen en la cabeza de la regla siguen estando implícitamente cuantificadas universalmente , mientras que las variables que solo aparecen en el cuerpo de la regla siguen estando implícitamente cuantificadas existencialmente.
Si bien cualquier consulta conjuntiva puede escribirse como una regla Datalog, no todos los programas Datalog pueden escribirse como una consulta conjuntiva. De hecho, solo las reglas individuales sobre símbolos de predicados extensionales pueden reescribirse fácilmente como una consulta conjuntiva equivalente. El problema de decidir si para un programa Datalog dado existe un programa no recursivo equivalente (que corresponda a una consulta de álgebra relacional positiva, o, equivalentemente, a una fórmula de lógica existencial positiva de primer orden , o, como caso especial, a una consulta conjuntiva) se conoce como el problema de acotación de Datalog y es indecidible. [ 2 ]
Extensiones
Entre las extensiones de las consultas conjuntivas que capturan un mayor poder expresivo se incluyen:
- uniones de consultas conjuntivas , que son equivalentes al álgebra relacional positiva (es decir, libre de negación )
- Consultas conjuntivas extendidas por unión y negación , que según el teorema de Codd corresponden al álgebra relacional y a la lógica de primer orden.
- consultas conjuntivas con predicados incorporados , por ejemplo, predicados aritméticos
- consultas conjuntivas con funciones de agregación .
El estudio formal de todas estas extensiones se justifica por su aplicación en bases de datos relacionales y se enmarca dentro del ámbito de la teoría de bases de datos .
Complejidad
Para el estudio de la complejidad computacional de la evaluación de consultas conjuntivas, es necesario distinguir dos problemas. El primero es el problema de evaluar una consulta conjuntiva en una base de datos relacional, donde tanto la consulta como la base de datos se consideran parte de la entrada. La complejidad de este problema se suele denominar complejidad combinada , mientras que la complejidad del problema de evaluar una consulta en una base de datos relacional, donde se supone que la consulta es fija, se denomina complejidad de datos . [ 3 ]
Las consultas conjuntivas son NP-completas con respecto a la complejidad combinada , [ 4 ] mientras que la complejidad de datos de las consultas conjuntivas es muy baja, en la clase de complejidad paralela AC0 , que está contenida en LOGSPACE y por lo tanto en tiempo polinomial . La NP-dificultad de las consultas conjuntivas puede parecer sorprendente, ya que el álgebra relacional y SQL engloban estrictamente las consultas conjuntivas y, por lo tanto, son al menos igual de difíciles (de hecho, el álgebra relacional es PSPACE -completa con respecto a la complejidad combinada y, por lo tanto, es incluso más difícil bajo supuestos teóricos de complejidad ampliamente aceptados). Sin embargo, en el escenario de aplicación habitual, las bases de datos son grandes, mientras que las consultas son muy pequeñas, y el modelo de complejidad de datos puede ser apropiado para estudiar y describir su dificultad.
El problema de listar todas las respuestas a una consulta conjuntiva no booleana se ha estudiado en el contexto de los algoritmos de enumeración , con una caracterización (bajo ciertas suposiciones de dificultad computacional ) de las consultas para las que la enumeración puede realizarse con un preprocesamiento de tiempo lineal y un retardo constante entre cada solución. Específicamente, se trata de las consultas conjuntivas acíclicas que también satisfacen una condición de conexión libre . [ 5 ]
Propiedades formales
Las consultas conjuntivas son uno de los grandes éxitos de la teoría de bases de datos, ya que muchos problemas interesantes que son computacionalmente difíciles o indecidibles para clases más amplias de consultas son factibles para consultas conjuntivas. [ 6 ] Por ejemplo, consideremos el problema de contención de consultas . Escribimospara dos relaciones de base de datosdel mismo esquema si y solo si cada tupla que aparece entambién ocurre en. Dada una consultay una instancia de base de datos relacional, escribimos la relación de resultado de evaluar la consulta en la instancia simplemente como. Dadas dos consultasyy un esquema de base de datos , el problema de contención de consultas es el problema de decidir si para todas las posibles instancias de base de datossobre el esquema de la base de datos de entrada,La principal aplicación de la contención de consultas reside en la optimización de consultas: es posible decidir si dos consultas son equivalentes simplemente comprobando la contención mutua.
El problema de contención de consultas es indecidible para el álgebra relacional y SQL , pero es decidible y NP-completo [ 7 ] para consultas conjuntivas. De hecho, resulta que el problema de contención de consultas para consultas conjuntivas es exactamente el mismo que el problema de evaluación de consultas [ 6 ] . Dado que las consultas tienden a ser pequeñas, la NP-completitud en este caso suele considerarse aceptable. El problema de contención de consultas para consultas conjuntivas también es equivalente al problema de satisfacción de restricciones [ 8 ] .
Una clase importante de consultas conjuntivas que tienen una complejidad combinada de tiempo polinomial son las consultas conjuntivas acíclicas . [ 9 ] La evaluación de la consulta, y por lo tanto la contención de la consulta, es LOGCFL -completa y por lo tanto en tiempo polinomial . [ 10 ] La aciclicidad de las consultas conjuntivas es una propiedad estructural de las consultas que se define con respecto al hipergrafo de la consulta : [ 6 ] una consulta conjuntiva es acíclica si y solo si tiene un ancho de hiperárbol de 1. Para el caso especial de consultas conjuntivas en las que todas las relaciones utilizadas son binarias, esta noción corresponde al ancho de árbol del grafo de dependencia de las variables en la consulta (es decir, el grafo que tiene las variables de la consulta como nodos y una arista no dirigida).entre dos variables si y solo si existe una fórmula atómicaoen la consulta) y la consulta conjuntiva es acíclica si y solo si su grafo de dependencia es acíclico .
Una generalización importante de la aciclicidad es la noción de ancho de hiperárbol acotado , que es una medida de cuán cerca de ser acíclico está un hipergrafo, análoga al ancho de árbol acotado en grafos . Las consultas conjuntivas de ancho de árbol acotado tienen una complejidad combinada LOGCFL . [ 11 ]
Las consultas conjuntivas sin restricciones sobre datos de árbol (es decir, una base de datos relacional que consta de una relación binaria hija de un árbol, así como relaciones unarias para etiquetar los nodos del árbol) tienen una complejidad combinada de tiempo polinomial. [ 12 ]
Referencias
- ^ Dan Olteanu, Jakub Závodný, Límites de tamaño para representaciones factorizadas de resultados de consultas , 2015, DOI 10.1145/2656335,
- ↑ Gerd G. Hillebrand , Paris C. Kanellakis , Harry G. Mairson , Moshe Y. Vardi : Problemas de acotación indecidibles para programas Datalog. J. Log. Program. 25(2): 163-190 (1995)
- ↑ Vardi, Moshe Y. (1982), "La complejidad de los lenguajes de consulta relacionales (Resumen extendido)", Actas del decimocuarto simposio anual de la ACM sobre Teoría de la Computación - STOC '82 , págs. 137–146 , CiteSeerX 10.1.1.331.6045 , doi : 10.1145/800070.802186 , ISBN 978-0897910705, S2CID 7869248 , archivado del original el 23-08-2011 , recuperado el 16-05-2011
- ↑ Ashok K. Chandra y Philip M. Merlin , 1977. Implementación óptima de consultas conjuntivas en bases de datos relacionales . STOC '77: Actas del noveno simposio anual de la ACM sobre teoría de la computación.
- ↑ Bagan, Guillaume; Durand, Arnaud; Grandjean, Etienne (2007). Duparc, Jacques; Henzinger, Thomas A. (eds.). "Sobre consultas conjuntivas acíclicas y enumeración con retardo constante". Lógica de la informática . Notas de clase en informática. 4646. Springer Berlin Heidelberg: 208–222 . doi : 10.1007/978-3-540-74915-8_18 . ISBN 9783540749158.
- 1 2 3 Serge Abiteboul , Richard B. Hull , Victor Vianu : Fundamentos de bases de datos. Addison-Wesley, 1995.
- ↑ Koutris, París. "Lección 2: Contención de consultas" (PDF) .
Teorema 2
- ↑ Kolaitis, Phokion G.; Vardi, Moshe Y. (2000), "Contención de consultas conjuntivas y satisfacción de restricciones", Journal of Computer and System Sciences , 61 (2): 302–332 , doi : 10.1006/jcss.2000.1713
- ↑ Mihalis Yannakakis : Algoritmos para esquemas de bases de datos acíclicas. Proc. VLDB 1981: 82-94.
- ↑ Georg Gottlob , Nicola Leone y Francesco Scarcello (2001). "La complejidad de las consultas conjuntivas acíclicas". Journal of the ACM 48 (3): 431–498. doi : 10.1145/382780.382783 .
- ↑ Georg Gottlob , Nicola Leone y Francesco Scarcello : Descomposiciones de hiperárboles y consultas tratables. J. Comput. Syst. Sci. 64(3): 579-627 (2002)
- ↑ Georg Gottlob , Christoph Koch , Klaus U. Schulz : Consultas conjuntivas sobre árboles. J.ACM 53(2): 238-272 (2006)
Enlaces externos
- Georg Gottlob , Presentación sobre métodos de descomposición estructural para la evaluación eficiente de consultas conjuntivas (PDF)
- teoría de bases de datos