We design relational databases using entity-relationship models (ER), based on object models of the application if present. We use a modelling tool that can output ER diagrams for the database, as well as generate schema scripts to build the database.
All scripts, models and diagrams are maintained in a version control repository, making it possible to easily compare schemas and make impact analyses when changes are made to the database or application.
We can also reverse-engineer an existing legacy database into an ER model for documentation purposes, producing useful diagrams and a data dictionary. If the database is to be migrated to another product, or alterations need to be made, the model can form the basis for this operation too.