The flip-side of your claim is equally true: a good relational model is not necessarily a good object model. Too often have I seen inexperienced programmers take their legacy database tables and declare JavaBeans that mimic their table structures in the false hope that this will make things easy, because they will reduce the impedence mismatch between their tables and their objects. The usually find that they still have to do much work to map data from objects to tables anyway, and they make the rest of their system harder to work with than they needed to because they chose a design for their objects that modeled their tables rather than the objects they really needed.
In an ideal world, analysts would construct a conceptual data model first, then build a relational model and an object model that both optimally implement the conceptual model. Ah, if only we all lived in that ideal world!
The flip-side of your claim is equally true: a good relational model is not necessarily a good object model. Too often have I seen inexperienced programmers take their legacy database tables and declare JavaBeans that mimic their table structures in the false hope that this will make things easy, because they will reduce the impedence mismatch between their tables and their objects. The usually find that they still have to do much work to map data from objects to tables anyway, and they make the rest of their system harder to work with than they needed to because they chose a design for their objects that modeled their tables rather than the objects they really needed.
In an ideal world, analysts would construct a conceptual data model first, then build a relational model and an object model that both optimally implement the conceptual model. Ah, if only we all lived in that ideal world!