As provas relacionais de álgebra / cálculo podem ser usadas para testar / verificar o SQL?


9

É possível ou mesmo possível usar álgebra relacional e / ou cálculo relacional na forma de provas para testar / verificar a exatidão das instruções, funções e procedimentos armazenados do SQL?

Parece-me que deveria ser pelo menos possível, mas não sei se falta um detalhe que faça um mapeamento 1: 1 entre a prova e o código incorreto.

Algum de vocês já tentou um método como este? Funcionou? Como foram suas experiências?


2
Por favor, repita comigo: SQL não é relacional.
Deer Hunter

Respostas:


4

Existem algumas regras de mapeamento conhecidas entre operadores de álgebra relacional e instruções SQL. Por exemplo, o operador Sigma mapeia para uma instrução SELECT, há um mapeamento individual para os operadores de junção, mapeia o Delta para selecionar um subconjunto de colunas, etc.

É possível usar álgebra relacional para verificar a correção das instruções SQL?

Sim, é possível. É claro que você precisará ter um esquema claro do banco de dados com todos os relacionamentos, chaves estrangeiras etc. Em alguns casos, é ainda mais fácil manipular instruções de álgebra relacional do que instruções SQL (existem regras de transformação comprovadas para modificar e simplificar) .

Mas, por outro lado, não acho que verificar instruções usando álgebra relacional seja muito mais fácil do que testar instruções SQL, especialmente quando você tem um banco de dados pronto para executar as consultas e ver os resultados.


11
Só queria dizer: Os operadores relacionais são mapeados para "SELECT DISTINCT", pois a álgebra relacional usa conjuntos de tuplas e, portanto, não pode manipular duplicatas. O próprio sigma corresponde à cláusula WHERE, o pi ao SELECT e assim por diante.
contradito

Os operadores de junção não são 1: 1, as versões SQL tratam nulos especialmente e predicados semelhantes não são booleanos.
Philipxy # 4/17
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.