Crie scripts sob controle de versão e integração contínua para verificá-los
Uma abordagem que funcionou para mim foi fazer com que cada desenvolvedor trabalhasse com seu próprio esquema, com o qual eles pudessem fazer o que quisessem. O esquema deles era destrutível e preenchido com dados de teste extraídos de um conjunto de scripts controlado por versão para o qual todos os desenvolvedores contribuíram.
A construção de integração contínua noturna pegou a versão mais recente de todos os scripts e tentou criar um banco de dados de teste coeso a partir deles. O aplicativo então executou uma série de testes funcionais e de integração para verificar se o esquema atual estava alinhado com o candidato a release atual.
Antes de começar esse caminho, havia um design de banco de dados bastante sólido e um DBA estava sempre de olho nas coisas para impedir que os desenvolvedores enlouquecessem com a desnormalização e outros horrores.
O controle de versão ajudou imensamente aqui porque as alterações nos scripts foram imediatamente óbvias. Também fizemos uso de um banco de dadosVERSION
tabela de para identificar o estado geral do banco de dados. Essa era uma sequência inteira simples e não estava vinculada a nenhum aplicativo específico.
No geral, funcionou bem e significou que os desenvolvedores deixaram de ter medo de alterar as camadas de persistência, porque sempre podiam reverter seus próprios esquemas sem impactar os outros.