Relational Has No Object Identity

The point that this page is trying to make is that RelationalHasNoObjectIdentity on purpose. Or, to put it another way, it's a feature not a bug. Or maybe more succinctly, RelationalHasNoObjectIdentity just like most OO programming languages do not have GOTO.

This is one of the great insights DrCodd came up with. It was later validated also by the research into foundations of OO databases, semi-structured data.

Object designers should learn not to rely on object identity the way it is typically understood from systems like SmallTalk or object databases like GemStone; they'll get a better object model in return. But the other way around the notion of candidate key is not a first class concept of OO systems and especially not of many OO databases, and that's just too bad. The notion that applies to object models have been denoted as the identifiability property or the identification problem. OO designers should better see to it that their domain models have the desirable property that objects are "value-identifiable".


Discussions raged on several topics, where parties tried to prove that there are instances where support for object identity in the data model [is useful? essential?]. The raw material is preserved in ObjectIdentityDiscussion.

One path followed was ObjectIdentityExamples. Can we find a convincing class of practical domains where ObjectIdentity can be usefully deployed in modeling the domain in question, whereas modeling it strictly with value based identifiers (as prescribed by the relational model) would create significant hardships for either the database modeler or the application writer? The theory of both relational databases, and of object databases posits that using value-based identifiers for objects provides significant value to a model, removing a class of problems that appear in models that don't follow value-identifiability (see chapter 2 of FundamentalsOfObjectOrientedDatabases). In order to make their point, defenders of ObjectIdentity should be able to identify practical examples where such problems do not arise, whereas problems with value-based models are significant.


The lack of object identity means that there is no meaning to the term "garbage collection" in the context of a relational system. The fact that a key can be created from a value at any juncture means that there is no way to trace active uses of any tuple. This of course is not really an issue in the current typical use case of the relational model -- offline permanent storage.

Various implementations of the relational model certainly provide garbage collection, but this is based on mechanisms invisible to the user, such as tuples that have an internal object (or tuple) identifier.

See also: ObjectIdentity, FundamentalsOfObjectOrientedDatabases, ObjectRelationalImpedanceMismatch, BundleSubstanceMismatch, ObjectsAreFromMarsTablesAreFromVenus


EditText of this page (last edited February 25, 2010) or FindPage with title or text search