modeling
Data modeling stands for us at the beginning of the design and development process. Creating a data model in the last phase of a project - e.g., by reverse engineering - and using it solely for documentation purposes bears two main inconveniences. On the one hand, such a data model becomes obsolete after a short time; on the other hand, it makes no use of powerful Computer Aided Software Engineering mechanisms.

A data model should rather be created in the first project phase and used as a basis for the entire development process. This paradigm enables on the one hand a simplified description and a better understanding of complex realities and interdependencies. On the other hand, it supports the maintenance, changeability, and enhance ability of existing database structures considerably.

Whenever possible, the data model should be used for code generation, which can encompass, beside "classic" object types, such as tables and views, also procedural objects - procedures, packages, or triggers - as well as synonyms, sequences, types, etc. Ideally, the complete database structure could be generated from the data model.

Being the first step in the development chain, the data model should be the master: each change and each enhancement should be done first in the data model, then the code should be generated there from, and be implemented eventually in the database. A straightforward process with clear roles - the data model is the master, the database is the slave - leads to simplifying development and avoiding collisions and inconsistencies.

The following example shows an excerpt of a data model built with CA-ERwin. The code generated from this data model - including further objects, generated by macros - is shown, also.