relational database questions

Josh Davenport josh.davenport at verizon.net
Wed Apr 30 18:39:44 PDT 2008


Ok Robert.

Please name a relational database.

Not 4D.
Seldom is anything more than 3rd degree normal in real world systems,  
and at that level or normality, orphaned junk pops up all over the  
place, or you have to add a bunch of holding tables... or... or.

Anyway, I just read the link you provided (not that I haven't studied  
relational theory, because I have, though its been a while). It gave  
basically the same caveats you do... about virtually everything,  
including SQL... which apparently isn't relational. And you know,  
they're right, its not, but then neither is filemaker.

Panorama is a relation database in the sense that most products  
marketed as RDMS designed for application at the workgroup level are  
relational. It sure as heck is as relational IN PRACTICE FOR CUSTOM  
SOLUTIONS as 4D, which is always an awful hack. You're perpetually  
creating arrays and jumping through hoops in that thing. Yeah, they  
allow you to draw little lines between fields. But try drawing a line  
from a Contact table to TWO different foreign (that's the word I was  
trying to remember) key fields in a table in 4D. You're screwed. Yet  
its a perfectly valid relational construct.  Or you skip the little  
lines and turn the relations on and off in code to get it to do what  
you want. Also, you always cheat to get the speed you need... hmmm.

Try building a Parts make Parts relation... ouch. And also perfectly  
valid.

Try turning on triggers and using transaction rollback, but not  
loosing an Invoice # after a failed invoice row insert, where the  
invoice# is (or was, at least) required by law to not contain a gap  
in the sequence.

The question is not whether Panorama has a JOIN statement. The  
question is whether, when you are programming a real world data  
structure, which humans have to use in an efficient manner, is it  
easier to butcher your nice neat relationships laid out in a more  
strict RDBMS, or create and maintain them in Panorama. I think often  
the answer is the later.

Would I like Panorama to support a few more things? Heck yeah.  
Cluster locking in particular. I think that's a serious limitation.  
But in my experience, for the audience for which I design, its more  
effort to work around the data integrity code in 4D than to create  
the data integrity code in Panorama.

Regards,

Josh


On Apr 30, 2008, at 6:57 PM, Robert Ameeti wrote:

> At 9:07 PM -0400, 4/29/08, Josh Davenport wrote:
>
>> 1) Panorama is a relational database,
>
> Not by any stretch of the imagination.
>
> See <http://en.wikipedia.org/wiki/Relational_database> and more  
> specifically <http://en.wikipedia.org/wiki/Relational_model> for  
> all of the reasons why Panorama is not a relational database.
>
> In short, a relational database would would follow the relational  
> model and would have "... aims that included avoiding, without loss  
> of completeness, the need to write computer programs to express  
> database queries and enforce database integrity constraints."
>
> As you well know, Panorama has no automatic, built in, method for  
> enforcing database integrity between tables. All of this is on the  
> shoulders of the programmer to create, integrate, & enforce.
> -- 
>
> <><><><><><><><><><><><><><><><><><>
> Robert Ameeti
>
> He played the king as if afraid someone else would play the ace.
>            -- John Mason Brown, drama critic
> <><><><><><><><><><><><><><><><><><>
> _______________________________________________
> Qna mailing list
> Qna at provue.com
> http://provue.com/mailman/listinfo/qna

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://provue.com/pipermail/qna/attachments/20080430/1d9c17f2/attachment.html 


More information about the Qna mailing list