¿Se pueden usar las pruebas de álgebra / cálculo relacional para probar / verificar SQL?

9

¿Es factible o incluso posible utilizar álgebra relacional y / o cálculo relacional en forma de pruebas para probar / verificar la exactitud de las declaraciones, funciones y procedimientos almacenados de SQL?

Me parece que al menos debería ser posible, pero no sé si me falta algún detalle que haga que una asignación 1: 1 entre la prueba y el código sea incorrecta.

¿Alguno de ustedes ha probado un método como este? ¿Funcionó? ¿Cómo fueron tus experiencias?

Robert Winslow Dalpe
fuente
2
Repita después de mí: SQL no es relacional.
Deer Hunter

Respuestas:

4

Existen algunas reglas de mapeo conocidas entre los operadores de álgebra relacional y las declaraciones SQL. Por ejemplo, el operador Sigma se asigna a una instrucción SELECT, hay una asignación uno a uno para los operadores de unión, Delta asigna a la selección de un subconjunto de columnas, etc.

¿Es posible usar álgebra relacional para verificar la exactitud de las declaraciones SQL?

Sí, es posible. Por supuesto, necesitará tener un esquema claro de la base de datos con todas las relaciones, claves externas, etc. En algunos casos, es aún más fácil manipular las declaraciones de álgebra relacional que las declaraciones SQL (existen reglas de transformación comprobadas para modificar y simplificar declaraciones) .

Pero, por otro lado, no creo que verificar las declaraciones usando álgebra relacional sea mucho más fácil que probar las declaraciones SQL, especialmente cuando tienes una base de datos lista donde puedes ejecutar las consultas y ver los resultados.

superM
fuente
1
Solo quería decir: los operadores relacionales se asignan a "SELECCIONAR DISTINTO" ya que el álgebra relacional usa conjuntos de tuplas y, por lo tanto, no puede manejar duplicados. La sigma en sí corresponde a la cláusula WHERE, la pi a SELECT y así sucesivamente.
contradice el
Los operadores de unión no son 1: 1, las versiones de SQL tratan los nulos especialmente, y de manera similar los predicados no son booleanos.
philipxy