views:

99

answers:

1

My understanding about Codd's concept of "safe queries" was created to ensure that a query would always terminate. One key ability of a Turing machine is that it can work on infinite calculations (and thus isn't guaranteed to terminate). If the safe query restriction were removed, would relational calculus be Turing-complete since that means it doesn't have to terminate?

A: 

I don't know if this is correct, but I have a hypothesis. If we allowed free variables in the formula, then we could think of queries as functions. For example, consider the following query:

{ <A, B, C> | <A, B, C> \in R and A = x}

If the above query has a result M, we can consider that to be a function of the form lambda x.M. If we allow relations to be free variables, we can define a function of the form lambda R.R. Now, if we allow "higher-order queries", ie queries that can query queries, we can represent the Church numerals (with q being a query):

0 = lambda qR.R
1 = lambda qR.q R
2 = lambda qR.q (q R)
3 = lambda qR.q (q (q R))

Therefore, I think that relational calculus can also be a lambda calculus, and therefore be Turing-complete. Can anyone tell me if I'm on the right path?

Jason Baker