Re: Is a RDBMS needed?
Date: Mon, 18 Jul 2011 10:27:13 +0300
Message-ID: <OFB7DBCAA6.B8F43709-ONC22578D1.002505E2-C22578D1.0028F209_at_seb.lt>
>Stephane Faroul
>When Codd designed the relational model, it was partly to get rid of the
pointer-based navigation that was plaguing the so called
"Codasyl" (network)
model. There was a legendary debate back in 1974 between Codd and Bachman
(the
Codasyl champion) - you may be interested by this (long) interview of
Bachman,
he refers to the OO "model" page 105/106:
http://portal.acm.org/citation.cfm?id=1141882 - which he still seems to
favor
First, many thanks Stephan for providing a link to Bachman's interview. A very enlightening reading really. When he talks 1974 - 1974 I was just born :)
Secondly, he does provide (in a few short paragraphs actually !) in which areas network database wins.
Funny enough, the best database modellers I met favoured what I see now as a network database model but implemented in RDBMS. Every entity had a surrogate key. Every foreign key pointed to surrogate primary key. Why? Because of:
- performance - compound indexes are quite slow ( but not fat or covering indexes - only that space was too expensive for us at that time )
- clarity - joins are simple. If foreign keys are in place (and in those Oracle CASE Designer days they were in place) - the database model is readable any time. Even with data model documentation lost or ill maintained.
- You said "Pointers are fine as long as you don't need to change things and maintain the application." I agree as far as physical storage is concerned. If a pointer points to disk track A, sector B, offset C then yes, that's an issue. But when nowdays we have several virtualizations until we get into disk ... I am not that sure. But pointers (i.e. surrogate keys) are just fine and save the day when primary key changes.
What I want to say is that it is possible to achieve in RDBMS most of good things a network model has. But (there is a but) - given a proper data model. How many good database modellers do you have theese days, see Bachman - "Essentially the average skill of people doing programming system design in 1964 I would characterize as being higher than the average skills in 1974, simply because there’s a much bigger population going into the field."
Finally, after I discussed this thing with my wife she said (and she used to program with Oracle Reports) - "yes, that's a good thing to have pointers in DDL just like network model has. It would save so many hours trying to figure out how to write the SQL joins for a particular report given only a vague database documentation" In such things I listen to my wife :) She objectively has more experience than I in trying to fetch data from rdbms.
Brgds, Laimis N
Please consider the environment before printing this e-mail
-- http://www.freelists.org/webpage/oracle-lReceived on Mon Jul 18 2011 - 02:27:13 CDT