Control_de_versiones
El que quizá sea el paquete más usado es Subversion, aunque en últimos tiempos Git está tomando mucha popularidad. Yo llevo un tiempo utilizando Mercurial que se podría decir está entre los dos sistemas.
Las bases de datos, es cuestión de tus objetivos y de técnica. Lo normal y más simple es hacer un dump de la estructura que utiliza determinada versión y versionarlo como un archivo SQL, aunque hay paquetes especializados en el versionado de Bases de Datos, no tengo experiencia como para comentarte algo (más allá de que existen).
Un saludo