Como o slhck sugere, eu usaria um sistema de controle de revisão para registrar as alterações, sempre que você fizer o check-in de uma alteração, você terá a oportunidade de digitar uma mensagem indicando o motivo da alteração.
Para mudanças na estrutura do banco de dados eu uso um sistema de controle de revisão para gerenciar um conjunto de comandos SQL DDL "create table ...; create index ..." que eu edito sempre que faço uma mudança (mesmo que eu faça isso normalmente) "alter table" etc). Isso preserva um histórico de alterações na estrutura do banco de dados. Eu uso comentários de final de linha no DDL para registrar o propósito dos campos.
Se isso for insuficiente para você, considere editar sua pergunta para esclarecer o que você precisa.