![]() | |
#41
| |||||
| |||||
|
|
Kevin Kirkpatrick wrote: |
|
It might be interesting for defining an environment that allows the language features mentioned to reference an algebra or calculus (which don't have a notion of update in the first place), but I don't see why normalization needs to be introduced to implement updating of bases nor of views. If it does need to be, then presumably the updating of any relation somehow depends on how 'normal' it is. |
|
I don't see what triggers have to do with updating either, even though some implementations require them. |
|
By the way, why assume that CURRENT_USER is not updateable? |
|
When it comes to updating, I'd prefer to use as few concepts as possible, named sets of tuples, algebraically expressible constraints and a set of algebra operators. Design matters might determine particular results but a logical engine shouldn't distinguish between designs, that's what the old hierachical and network systems did. Regarding an UPDATE verb, it is probably simpler to do what TTM does and assume an algebra that has extend and rename operators. I suppose a dbms that follows a mere algebra could distinguish 6NF relations, but I think it would be ponderous to use.- Hide quoted text - - Show quoted text - |
#42
| |||
| |||
|
|
Mr. Scott wrote: ... I give up. Instead of applying plain old ordinary logic, you appear to have strange preconceived notions that are a mystery to me. Without a common frame of reference, there's no point in continuing this discussion. Regarding POOL (plain old ordinary logic), I can't remember any logic book that I was able to read all the way through, but enjoyed the first chapter or two of most which were about the difficulties POOP (plain old ordinary people) get into because of POOL. SQL might be a large scale example of the problems with POOL. |
#43
| |||
| |||
|
|
By the way, why assume that CURRENT_USER is not updateable? Great question, cuts to the heart of the matter: It can't be updated because it is a view. It returns an conclusion, and it is not (IMO) valid to assert conclusions. ... |
|
It's kind of an aside to this conversation, but my underlying idea here is that if a business rule differentiates between two parts of a predicate, e.g. "Some people can update this column, but not that column", then the data model should treat them as two separate predicates. ... |
#44
| |||
| |||
|
|
Kevin Kirkpatrick wrote: ... By the way, why assume that CURRENT_USER is not updateable? Great question, cuts to the heart of the matter: *It can't be updated because it is a view. *It returns an conclusion, and it is not (IMO) valid to assert conclusions. ... So A UNION B is a conclusion when assigned to a view, but not a conclusion when assigned to a base. *Where does this idea come from and what is it good for, apart from appearing to be a spurious reason to say that views aren't updateable? *Even if I were to accept that views aren't updateable, I'd ask why is CURRENT_USER necessarily a view? (Personally, I would prefer an engine that allows a user to log himself off by means of a simple delete rather than the usual arcane engine plumbing that introduces various environmental commands. *That way, the environment is forced to react to db changes rather than the other way around. *The engine becomes much simpler if this approach is followed and this is important if there's ever to be any progess in the aspects that today's engines slough off.) ... |
|
conclusion when assigned to a base It's kind of an aside to this conversation, but my underlying idea here is that if a business rule differentiates between two parts of a predicate, e.g. "Some people can update this column, but not that column", then the data model should treat them as two separate predicates. *... Well, if you have two predicates and one isn't logically implied by the other, it's pretty much inescapable that you will need two relations even though the null advocates think not. *There is much in a user's predicate that the RM doesn't record, all it records are the variable names and constraints. *These and its chosen logical rules are all an execution engine has to go by. * *I get the feeling that when many people talk about predicates or constraints, they don't bother to first try to write down an algebraic equivalent. *If they don't do that, really they are just throwing words around. |
#45
| |||
| |||
|
|
On Aug 28, 4:32 pm, paul c <toledobythe... (AT) oohay (DOT) ac> wrote: Kevin Kirkpatrick wrote: ... By the way, why assume that CURRENT_USER is not updateable? Great question, cuts to the heart of the matter: It can't be updated because it is a view. It returns an conclusion, and it is not (IMO) valid to assert conclusions. ... So A UNION B is a conclusion when assigned to a view, but not a conclusion when assigned to a base. Where does this idea come from and what is it good for, apart from appearing to be a spurious reason to say that views aren't updateable? Even if I were to accept that views aren't updateable, I'd ask why is CURRENT_USER necessarily a view? (Personally, I would prefer an engine that allows a user to log himself off by means of a simple delete rather than the usual arcane engine plumbing that introduces various environmental commands. That way, the environment is forced to react to db changes rather than the other way around. The engine becomes much simpler if this approach is followed and this is important if there's ever to be any progess in the aspects that today's engines slough off.) ... My point, phrased another way, is: given base relvars A, B, and C with identical headings, this does not make sense: (A UNION B) := (B UNION C) in the exact same way that this does not make sense: int x, y; x+y := 3; |
#46
| |||
| |||
|
|
My point, phrased another way, is: given base relvars A, B, and C with identical headings, this does not make sense: (A UNION B) := (B UNION C) in the exact same way that this does not make sense: int x, y; x+y := 3; ... |
#47
| |||
| |||
|
|
to treat integers this way is one question but as for the relations, show me the logical inconsistency or contradiction, eg., if A AND B is true, so are A AND NOT B and NOT A AND B, what's the problem, really? ... |
#48
| |||
| |||
|
|
Mr. Scott wrote: "paul c" <toledobythesea (AT) oohay (DOT) ac> wrote in message news:WFTlm.41198$Db2.23941 (AT) edtnps83 (DOT) .. Mr. Scott wrote: "paul c" <toledobythesea (AT) oohay (DOT) ac> wrote in message news:eimlm.40861$Db2.21494 (AT) edtnps83 (DOT) .. ... I don't know if the plural 'disjunctions' is a typo'. Do you mean that the resulting value of R stands for "r1 OR r2, etc." is true? I don't seem to be getting through. AND is to INTERSECTION as OR is to UNION. ,,, That's a stretch, it would be more accurate to say that <AND> is to relational intersection as <OR> is to relational union. If what you wrote is what most people think it might help explain why so many want to associate the result of a relational operation with the operations used for form the result, even though the form of the resulting set of tuples offers no way to record the operations that were used to produce it. I think it is kind of phony for people to appeal at all to algebraic operations in this way when the strict use of algebra can use <OR> to produce a relation that is algebraically equal to one produced by <AND>. That's why I sometimes say a union is always a join, even though it does seem to wind people up. The expression used to form a view can be said to persist only if it is recorded as a constraint, which I would say it should be. I give up. Instead of applying plain old ordinary logic, you appear to have strange preconceived notions that are a mystery to me. Without a common frame of reference, there's no point in continuing this discussion. You could look at TTM Appendix A and ask why did D&D distinguish <AND from logical AND. Probably they had several reasons, but the most obvious one would be so that they could avoid circular definitions. |
#49
| |||
| |||
|
|
I don't need to look. <AND> is a relational operator; AND is a logical operator. They are related only because the predicate of the result of AND> is the conjunction of the predicates of its operands. |
#50
| |||
| |||
|
|
paul c wrote: ... Whether I would want an arithmetic system to treat integers this way is one question but as for the relations, show me the logical inconsistency or contradiction, eg., if A AND B is true, so are A AND NOT B and NOT A AND B, what's the problem, really? ... Oops, should have said (A <AND> B) OR (A <AND> <NOT>(B)) OR (<NOT>(A) AND B) is true. Question remains, what's the (logical) problem? |
![]() |
| Thread Tools | |
| Display Modes | |
| |