Re: Modeling question...
From: Bob Badour <bbadour_at_pei.sympatico.ca>
Date: Fri, 14 Nov 2008 13:49:18 -0400
Message-ID: <491dba23$0$5458$9a566e8b_at_news.aliant.net>
>
> 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.
>
>
> 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"!
Date: Fri, 14 Nov 2008 13:49:18 -0400
Message-ID: <491dba23$0$5458$9a566e8b_at_news.aliant.net>
>> ... >> 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"!
All you have done is introduce a physical artifact into the logical domain where it must now be maintained and manipulated by users instead of maintained and manipulated automatically by the dbms. A physical pointer unseen at the logical level would accomplish the very same physical performance characteristics (perhaps even better performance) without polluting the logical design. Received on Fri Nov 14 2008 - 18:49:18 CET
