Se você precisar mover o aplicativo, independentemente do banco de dados do usuário, precisará de um banco de dados separado para o aplicativo (em qualquer formato), para que o banco de dados possa viajar com o aplicativo, deixando os dados do usuário intactos em sua localização original.
Portanto, se o banco de dados do aplicativo for atualizado periodicamente do fornecedor (você), ele deverá ser mantido separado do banco de dados do usuário, para que você possa distribuir as alterações no banco de dados do aplicativo sem afetar o banco de dados do usuário. .
Agora, se você precisar adicionar campos ou tabelas ao banco de dados do usuário, essa é uma história diferente. Para isso, você precisa de um módulo que possa aceitar como entrada uma tabela de mudanças do banco de dados do aplicativo, para ser aplicada ao banco de dados do usuário. Alguns programas fazem isso "convertendo" o banco de dados do usuário para o novo formato.
A conversão de dados pode ser feita usando o SQL DDL para aplicar as atualizações de campo e tabela ao banco de dados do usuário, de forma que não afete negativamente os dados do usuário. Em alguns cenários avançados, as transformações de dados podem realmente ocorrer; normalização ou desnormalização, por exemplo.
Se você precisar fornecer aos usuários a capacidade de fazer uma transferência de dados, use outro mecanismo, como um canal de comunicação ou um arquivo de importação / exportação contendo os dados a serem transferidos (talvez em XML).