I use erwin for modeling and sql packager to script new databases and db upgrades. Once we begin development, all objects are scripted and put into our CI process. Every time we do a build, the db and all objects are re-created. The same process is followed for nightly, and QA builds.
for production releases we create a package using sql packager comparing the most recently approved qa database and the current production database.
in my current environment, development teams do not deploy to production servers, only infrastructure can do that.
new development, design, and modeling is done with erwin. when the model has been approved, we script the objects related to the new subject area(s) in question and integrate the new subject areas into the CI process.