Boa tarde pessoal.
Estou desenvolvendo um novo sistema que conterá vários módulos. Cada um desses módulos possuem rotinas totalmente diferentes dous outros módulo. Sendo assim decidi criar um Banco de Dados separado para cada módulo. Pois se eu utilizasse apenas um banco para todo o sistema, este banco ficaria muito grande e de difícil manutenção, pois conteria muitas Tabelas.
Suponhamos que eu tivesse os três módulos a seguir: Contabilidade, Folha de Pagamentos, Contas a Pagar e Receber.
Bem na minha opinião o melhor seria criar os bancos: Cont.mdb, Folha.mdb e CPR.mdb
Na opinião de vocês seria este o melhor caminho, ou vocês acham que eu deveria criar um banco de dados único com todas as tabelas do sistema?
Mas a minha dúvida principal é a seguinte. Considerando que eu esteje utilizando os três bancos distintos (Cont, Folha e CPF) quando seria o melhor momento para abrirmos estes banco de dados?
1 - Na abertura do form principal. As variáveis de BD estariam declaradas num módulo, e todos os forms do sistema poderiam acessar os bancos. Desta forma, assim que o sistema fosse aberto, todos os bancos de dados estariam disponíveis para uso.
Vantagens: Não seria necessário ficar abrindo e fechando tabelas e banco de dados toda hora. Pois todas elas seriam abertas no início do programa, e fechadas no término do programa.
Desvantagens: Tenho dúvidas com relação à performance. Todas as tabelas estarão abertas, e muitas vezes o usuário irá utilizar apenas um módulo do sistema, sendo assim desnecessário a abertura de todos os bancos.
2 - Abrir os bancos e tabelas a medida que for necessário. Ex: Usuário entra no módulo Folha de Pagamentos e acessa o cadastro de funcionários (neste momento eu criaria uma variável do tipo database e abriria o banco, logo após criaria uma variável do tipo recordset e abriria a Tabela de funcionários. Quando o usuário saisse do cadastro o banco seria fechado.
Vantagens: Estariamos abrindo apenas as tabelas e bancos que o usuário estivesse realmente precisando. Podendo assim aumentar a performance?!?
Desvantagens: O Sistema se tornará super complexo, em praticamente todos os forms eu teria que abrir e fechar bancos e tabelas. Vale lembrar que este sistema trabalha com form MDI, sendo assim, haverá situações na qual o usuário poderá abrir 3 janelas de uma vez, oque implicaria em 3 variáveis de banco de dados e "n" variáveis de Tabelas. Enfim acho que ficaria um sistema de difícil manutenção.
Bem estou precisando tomar uma decisão, e espero conseguir algum auxílio aqui junto a vocês.
Resumindo minhas principais dúvidas são:
1 - Devo criar um BD único, ou um BD para cada módulo?
2 - Quando devo abrir os bancos e as tabelas?
PS: Utilizando DAO, tendo duas variáveis declaradas:
dim BD as database
dim TB as recordset
Após abrir o banco e a tabela, para fechar este banco e esta tabela o comando que devo utilizar é apenas este?
set BD = nothing
set TB = nothing
Obrigado!