From my background reading on object databases:
"A relational database represents data relationships by having matching primary key-foreign key data. There are no data structures within the database that form links between the tables; the relationships are used as needed by joining tables. In direct contrast, a pure object-oriented database 'hard codes' its relationships by including object identifiers within an object to indicate other objects to which it is related." (Object-Oriented Database Design, Jan L Harrington, Chapter 3)
I've pored over the Magma documentation and mailing list, but couldn't find any explicit discussion of object identifiers in this context. I understand that Chris is loth to use OIDs (http://lists.squeakfoundation.org/pipermail/magma/2005-August/000027.html), so what's the alternative? What is the Magma analog of 'joining' tables using primary/foreign keys?
Amir
Hi Amir, with Magma, every object responds to #magmaOid (It's an ugly name, but I prefer to be considerate of namespace, in case someone else wants to use #oid). It is an integral identifier unique to that repository.
However, in an object system, you usually don't need to do "logical" joins between objects via id, instead, just reference them directly. That is what is meant when your book mentions that ODBMS's "hard-code" the relationships. They're not actually coded, they just "pre-exist" in teh db, rather than needing to be "looked up" over and over again..
Hope this help, Chris
On Wed, Mar 17, 2010 at 2:33 AM, Amir Ansari fractallyte@csi.com wrote:
From my background reading on object databases:
"A relational database represents data relationships by having matching primary key-foreign key data. There are no data structures within the database that form links between the tables; the relationships are used as needed by joining tables. In direct contrast, a pure object-oriented database 'hard codes' its relationships by including object identifiers within an object to indicate other objects to which it is related." (Object-Oriented Database Design, Jan L Harrington, Chapter 3)
I've pored over the Magma documentation and mailing list, but couldn't find any explicit discussion of object identifiers in this context. I understand that Chris is loth to use OIDs (http://lists.squeakfoundation.org/pipermail/magma/2005-August/000027.html), so what's the alternative? What is the Magma analog of 'joining' tables using primary/foreign keys?
Amir _______________________________________________ Magma mailing list Magma@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/magma
Thanks Chris, that makes things clearer!
Amir
On Wed, 17 Mar 2010 11:23:13 -0500 Chris Muller asqueaker@gmail.com wrote:
Hi Amir, with Magma, every object responds to #magmaOid (It's an ugly name, but I prefer to be considerate of namespace, in case someone else wants to use #oid). It is an integral identifier unique to that repository.
However, in an object system, you usually don't need to do "logical" joins between objects via id, instead, just reference them directly. That is what is meant when your book mentions that ODBMS's "hard-code" the relationships. They're not actually coded, they just "pre-exist" in teh db, rather than needing to be "looked up" over and over again..
Hope this help, Chris
magma@lists.squeakfoundation.org