MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


3 participantes

    Desempenho - O que é melhor: Criar uma tabela genérica ou diversas tabelas específicas?

    avatar
    miguel.serra
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 50
    Registrado : 20/01/2011

    Desempenho - O que é melhor: Criar uma tabela genérica ou diversas tabelas específicas? Empty Desempenho - O que é melhor: Criar uma tabela genérica ou diversas tabelas específicas?

    Mensagem  miguel.serra 19/6/2013, 02:08

    Olá, pessoal!  Gostaria da opinião de vocês para as boas práticas de modo a melhorar o desempenho do BD trabalhando com as Tabelas.

    Por exemplo, o que seria melhor indicado para registrar os documentos relacionados a uma tabela de imóveis:

    1 - Criar uma única tabela para todo tipo de documento, contendo o campo de nome do documento, os poucos campos comuns a todos os tipos de documentos (ex: Número, validade) e mais os diversos campos específicos de cada documento (ex: Área, Número de Funcionários, processo, endereço, proprietários, hipoteca, valor venal, etc), que variam de documento pra documento,

    OU

    2 - Criar diversas tabelas, uma para cada tipo de documento, contendo seus campos específicos. Ex: Para a tabela de Impostos, cria-se os campos de número do imposto, validade, área do terreno, área da construção, valor do imposto, valor venal, etc. Para tabela de Registro dos Imóveis em Cartório, cria-se os campos de número do registro, área, endereço, proprietários, hipoteca, etc. Para a tabela de Licença de Construção, cria-se os campos de número da licença, processo, validade, descrição, órgão emissor, etc.

    Na solução 1, existe uma única tabela, mas que fica pesada, com muitos campos inúteis a diversos tipos de documentos, que ficarão em branco. Porém, é mais prático criar consultas que busquem todos os documentos de um determinado imóvel

    Na solução 2, ficaremos com inúmeras tabelas, pois são muitos os tipos de documentos. Ficam mais leves. Mas a questão das consultas fica um pouquinho mais burocrática, pois teremos que fazer diversas consultas se quisermos listar todos os documentos pertencentes a um imóvel.

    Este é só um exemplo, mas me deparo com o mesmo tipo de dúvida em diversos tipos de aplicação.
    A experiência de cada um pode dar um "norte" para a criação de bancos de dados mais eficientes.

    E aí, o que acham?
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    Desempenho - O que é melhor: Criar uma tabela genérica ou diversas tabelas específicas? Empty Re: Desempenho - O que é melhor: Criar uma tabela genérica ou diversas tabelas específicas?

    Mensagem  Leandro 19/6/2013, 12:31

    Bom dia!

    Na minha humilde opinião você deve ter várias tabelas, como você mesmo citou, ter apenas uma tabela, que na verdade será um "tabelão", não será o melhor, serão muitos dados que serão movimentados para que as vezes só seja necessário pouca coisa.

    E você com certeza deve usar índices nas suas tabelas, eles não diminuirão o tamanho, mas o desempenho será otimizado, veja esse artigo.

    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    Desempenho - O que é melhor: Criar uma tabela genérica ou diversas tabelas específicas? Empty Re: Desempenho - O que é melhor: Criar uma tabela genérica ou diversas tabelas específicas?

    Mensagem  Cláudio Más 19/6/2013, 14:39

    Olá,

    Uma alternativa pode ser uma tabela com os campos em comum a todos os tipos de documentos, e outra a ser relacionada de um para vários, com os campos:

    chave primária,
    chave estrangeira,
    [tipo de documento] (ex.: "Impostos"),
    [atributo] (ex.: "Validade"),
    [valor atributo] (ex.: "19/06/2013")
    avatar
    miguel.serra
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 50
    Registrado : 20/01/2011

    Desempenho - O que é melhor: Criar uma tabela genérica ou diversas tabelas específicas? Empty Re: Desempenho - O que é melhor: Criar uma tabela genérica ou diversas tabelas específicas?

    Mensagem  miguel.serra 29/6/2013, 01:05

    Amigos, gostei de "ouví-los" pois acredito que esta é uma questão que precisa mesmo ser debatida

    Pois é, Leandro, ao utilizarmos muitas tabelas, embora hajam muito mais programação e SQL, tem sido nossa alternativa com melhor desempenho atualmente... Legal a dica da indexação, pois nunca havia me debruçado para entendê-la e agora vi como ela é importante!

    Gostei da ideia do Cláudio e andei refletindo sobre ela. A "Tabela 2" que contém o "tipo de documento", "atributo" e "valor do atributo" me pareceu uma alternativa excelente e resolvi testar... Daí me deparei com o problema de que nem todos os atributos são iguais. Ainda com esperanças, pois a ideia realmente é muito boa, resolvi, então, criar uma coluna para cada tipo de atributo: texto, memorando, data, valor, número, etc. Quase funcionou!!! Surgiu novo problema de que nem todos os parâmetros dos atributos são iguais (aiaiaiai!!), por exemplo, existem campos que precisamos de 4 letras, tem campos que precisamos de 50, outros 250... Poderíamos, então, deixa-los com os valores máximos suportados por cada tipo de atributo. Ocorre que, assim, ficamos com dois "mecanismos" que criamos, mas que tiram o desempenho do BD:

    1. A existência de vários campos, um para cada atributo, que ficarão em sua maioria vazios, remetendo ao antigo problema do "tabelão"...
    2. Campos com capacidade muito além da necessária


    Se pudermos continuar discutindo alternativas, acredito que seja útil para todos nós!

    Ahh, desculpem a demora pra responder... Pensei que haviam apagado o tópico, que estava em "Tabelas" e foi movido pra "Off Tópics"!!!

    Pois é, Leandro, imaginava isto mesmo
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    Desempenho - O que é melhor: Criar uma tabela genérica ou diversas tabelas específicas? Empty Re: Desempenho - O que é melhor: Criar uma tabela genérica ou diversas tabelas específicas?

    Mensagem  Cláudio Más 29/6/2013, 15:57

    Não posso afirmar, mas acredito que o SO gerencie alocação de memória de forma dinâmica.
    Então se vc tem um campo texto de tamanho 250 e utiliza 50 em um determinado registro, somente o espaço referente a esses 50 será alocado, em tempo de execução.

    Conteúdo patrocinado


    Desempenho - O que é melhor: Criar uma tabela genérica ou diversas tabelas específicas? Empty Re: Desempenho - O que é melhor: Criar uma tabela genérica ou diversas tabelas específicas?

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/12/2024, 10:06