DIVISAO DE BANCO DE DADOS EM DIRETORIOS

PRESTO 21/05/2010 14:39:38
#342413
Olá pessoal. Estou com uma dúvida, será que vocês podem me ajudar? Bom, eu tenho um sistema que utiliza como base o vb6 e o banco de dados Access. O sistema possui o cadastro de mais ou menos 300 empresas, cada um com muitos dados. O que eu quero fazer é descentralizar o banco, ou seja, dividi-lo em vários pedaços. Seria assim, teria um diretório chamado [ô]empresas[ô], e dentro pastas com os bancos de cada empresa. Cada empresa teria seu próprio diretório, empresa 1, pasta/diretório 1. Empresa 2, dir. 2, e assim por diante. Mas o que eu gostaria de fazer seria o seguinte: Em vez de criar um banco para cada empresa, afinal são 300, criar apenas um banco central e dividir as tabelas entre os diretórios de cada empresa. Sei que não é possível separar uma tabela de um banco (ou dá?) no Access, mas seria possível fazer isso com outro tipo de banco? Pensei em utilizar o mysql, acho ele mais completo. A finalidade seria para organizar e agilizar o acesso do sistema aos dados, porque cada empresa acessaria somente os dados referentes a ela mesma, e não carregaria todo o banco com informações de todas as empresas. Vi isso em um programa que utiliza o VisualFoxPro, e seus acessos e gravações são bem rápidos, e gostaria de fazer o mesmo, mas não sei nada de foxpro. Alguém tem alguma sugestão?
MSMJUDAS 21/05/2010 17:20:43
#342436
Não há necessidade de criar pastas para tal finalidade, iria ficar meio estranho.

O que você pode fazer é [Ô]distrinchar[Ô] a sua tabela de clientes, ou seja, dividir em outras tabelas, tipo, o tabela EMPRESAS seria a tabela principal e [Ô]EMPRESAS_01[Ô] seria seu [Ô]filho[Ô].

Quantos campos possui essa tabela onde vc cadastra as empresas? Que tipos de informações possui nesse cadastro?



PS: Já ví banco feito em Access com mais de 120 campos em uma tabela só
EDERMIR 21/05/2010 18:58:48
#342457
Se seu sistema vai trabalhar INDIVIDUALMENTE para cada empresa, então crie um banco para cada e dentro deste banco as tabelas.
XXXANGELSXXX 21/05/2010 23:35:11
#342489
amigo, veja so.. dividir bdados não e uma boa ideia, como voce esta querendo fazer.. quer alguns motivos? voce vai ter 400 bancos de dados na maquina.. por ai ja começa.. eu aconselharia começar a mecher com mysql que acaba com essa pindura ai.. ok? veja so.. se 1 banco acess não e tao dificil corromper, imagina 400.. ok?
ROBIU 22/05/2010 07:28:38
#342493
Como o Banco já existe e possui muitos dados, vai ser um trabalho bem complicado. Também é preciso saber a estrutura do seu banco. Os dados de todas as empresas ficam na mesma tabela ou há tabela para cada empresa, como você seleciona as empresas, etc.
1 - Cria apenas uma pasta Chanada [txt-color=#0000f0]Dados[/txt-color]
2 - Dentro da pasta Dados, Cria outra pasta chamada [txt-color=#0000f0]Sys[/txt-color] (Pasta com os arquivos gerais).
3 - Na pasta Sys você coloca o Banco do Sistema e um Banco Empresa.
4 - O Banco Empresa, é para acessar as empresas na tela inicial. Neste banco vai ter a tabela empresas. Esta tabela vai ter apenas os campos parâmetros para acessar a empresa. Codigo, Nome, Cnpj, ano etc
5 - Ao selecionar uma empresa, o sistema copia o Banco da pasta Sys para a pasta Dados e renomeia o arquivo para um nome que identifique a empresa. Tipo: Codigo-NomeEmpresa.mdb ou CodigoCnpj-Nome.mdb, etc
6 - quando selecionar a empresa, o sistema vai localizar o arquivo cujo nome tenha o código ou cnpj da empresa selecionada. Se for trabalhar com matriz/Filial, deve ter o cnpj no nome do arquivo.
Essa regra vale para o sistema zerado. No seu caso, o sistema vai criar os bancos com a identificação das empresas, mas tudo sem registros. Aí você terá que puxar os registros do seu banco antigo. Neste esquema, ainda é possível criar um banco para cada ano.(Caso seja necessário recuperar dados de anos diferentes em uma consulta, isso não é recomendado.)
Ex.: CnpjEmpresa1-2010.mdb, CnpjEmpresa1-2011.mdb
PRESTO 24/05/2010 08:33:11
#342591
Olá. Muito obrigado a todos os membros do fórum que responderam à minha pergunta. Suas idéias foram bem esclarecedoras. Realmente eu estava imaginando que ia dar um trabalhão, mas não pensei que poderia ocorrer problemas como corrompimento dos bancos. De qualquer forma, vou migrar os dados para o mysql, e verificar se o desempenho melhora, ou ver alguma forma de fazer um acesso mais rápido, filtrando mais os dados. De qualquer forma, procurarei aumentar o desempenho entre estações/servidor. eu não comentei, mas vocês devem ter pecebido que é cliente/servidor. Até a próxima!!!
Tópico encerrado , respostas não são mais permitidas