Sobre el algoritmo de reducción de Codd

12

El algoritmo de Codd convierte una expresión en cálculo relacional de tuplas a álgebra relacional.

  1. ¿Existe una implementación estándar del algoritmo?
  2. ¿Se usa este algoritmo en alguna parte? (Parece que la industria solo necesita SQL y variantes, no estoy seguro acerca de los teóricos de bases de datos en la academia).
  3. ¿Cuál es la complejidad de la reducción?

Esto se publicó en SO hace más de un año, pero no recibió una buena respuesta.

PKG
fuente

Respuestas:

8

Esta reducción es la técnica de prueba constructiva para mostrar que un subconjunto (llamado seguro) Tuple Relational Calculus (TRC) es menos expresivo que Relational Algebra (RA). También es cierto que Safe-TRC y RA tienen un poder expresivo equivalente. Ver Teorema 5.3.10 por ejemplo. La restricción sintáctica de "seguridad" garantiza la propiedad independiente del dominio del cálculo y es necesaria.

En R-DBMS, SQL puede verse como el lenguaje concreto (declarativo) para TRC. La contraparte RA es el plan de procedimiento (una secuencia de operaciones) en el que se compila una expresión SQL. Entonces, la conversión es en realidad la descripción formal del proceso de compilación. Tenga en cuenta que SQL introduce extensiones como DISTINCT, ORDER BY, GROUP BY que están claramente fuera del alcance de la teoría TRC y RA.

No conozco la complejidad teórica precisa de la conversión, pero claramente tiene que ser "barata". Kolaitis de fotones dice que es lineal.

No conozco una implementación de prueba de concepto de este algoritmo.

Romuald
fuente