Kinds of Models
Software developers use a wide variety of models in practice, including the following:
Structural modelsmodels of data structures and relationships.
State-transition modelsmodels of stimuli that occur and a system's response to them (time-related behavior).
Functional modelsmodels of the computation to be performed.
Of the various kinds of models, structural models are the most helpful for database applications, and hence the only kind of model I discuss. From now on, the term model will denote a structural model.
I have seen some people model the functionality of an application and then try to devise a database. A functional approach can be helpful for programming applications, but it is poorly suited for designing databases. You cannot discover deep issues of structure and relationships by merely thinking about process. A database application revolves about a database; so, too, should your model. Once you have a structural model in place, it is of course helpful and appropriate to test the model by thinking about functionality.