Re: Modeling question...

From: paul c <>
Date: Fri, 14 Nov 2008 16:24:17 GMT
Message-ID: <RChTk.294$jr4.161_at_edtnps82>

David BL wrote:
> ...
> I'm not sure what you mean when you say that pointers imply
> alternatives. For example, given
> age(bill,n).
> value(n,10).
> we can deduce that bill is 10. Assuming N is a key in value(N,V), we
> know that a variable named n only holds one value at a given time (as
> it should, by definition of a variable).
> ...

Here, 'n' is a value, not a pointer (as far as the RM is concerned), so I'd call this example a straw-man. I could choose to think of n as a programming variable that stands for one value at a time but as a logic variable it is a stand-in for some of all the possible values.

>> The fundamental
>> algebra doesn't have a resolution (nor indirection) operator that allows
>> a variable to point to another variable (I presume the same goes for the
>> calculus given that it has been shown to logically equivalent).

> Yes the RA has no indirection operator. However an indirection can be
> expressed with a join.
> ...

I would say indirection is under-exploited in practice (even though Fabian Pascal once told me I was wrong to think of it as an option in logical dbms design). One could invent an "abstract identifer" for each department and assign employees to that instead of to the actual department names. To find out the actual department name for an employee would take more logical and physical work but the re-assignment of all employees in a department to a different department would need only the replacement of a single tuple in a table akin to your "value" table above and no change to the employees "table". I had the impression that Fabian P felt that the indirection was logically unnecessary whereas I felt that "unnecessary" doesn't imply "illogical"!

   So maybe we were at cross-purposes. I just mention that for a simple example, but I remember some large-scale billing and transport apps where "what-if" scenarios or last-minute changes to cargo assignments needed to be done as rapidly as possible. Sometimes I wonder if indirection is just an old assembly programmer's version of today's johnny-come-lately, re-invented wheels pet programming protocols, on the other hand, as we all learned in grade-school algebra, sometimes we need to add to an expression in order to simplify it. (Not saying I favour the witless use of generated keys that some books advocate.) Received on Fri Nov 14 2008 - 17:24:17 CET

Original text of this message