Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Devo normalizar meu banco de dados ou não?


Uma resposta filosófica:bancos de dados (relacionais) abaixo do ideal estão repletos de anomalias de inserção, atualização e exclusão. Tudo isso leva a dados inconsistentes, resultando em baixa qualidade dos dados. Se você não pode confiar na precisão de seus dados, de que adianta? Pergunte a si mesmo:você quer as respostas certas mais devagar ou quer as respostas erradas mais rápido?

Como uma questão prática:acerte antes de chegar rápido. Nós, humanos, somos muito ruins em prever onde ocorrerão gargalos. Torne o banco de dados excelente, meça o desempenho durante um período de tempo razoável e decida se você precisa torná-lo mais rápido. Antes de desnormalizar e sacrificar a precisão, tente outras técnicas:você pode obter um servidor, conexão, driver de banco de dados mais rápido, etc? Os procedimentos armazenados podem acelerar as coisas? Como estão os índices e seus fatores de preenchimento? Se essas e outras técnicas de desempenho e ajuste não funcionarem, só então considere a desnormalização. Em seguida, meça o desempenho para verificar se você obteve o aumento de velocidade pelo qual "pagou". Certifique-se de que você está realizando a otimização, não a pessimização.

[editar]

R:Claro.
  1. Faça um backup.
  2. Faça outro backup em um dispositivo diferente.
  3. Crie novas tabelas com comandos do tipo "select into newtable from oldtable...". Você precisará fazer algumas junções para combinar tabelas anteriormente distintas.
  4. Retire as tabelas antigas.
  5. Renomeie as novas tabelas.

MAS ... considere uma abordagem mais robusta:

Crie algumas visualizações em suas tabelas totalmente normalizadas agora. Essas visualizações (tabelas virtuais, "janelas" nos dados... pergunte se você quer saber mais sobre este tópico) teriam a mesma consulta de definição do passo três acima. Quando você escreve seu aplicativo ou lógica de camada de banco de dados, use as visualizações (pelo menos para acesso de leitura; visualizações atualizáveis ​​são... bem, interessantes). Então, se você desnormalizar mais tarde, crie uma nova tabela como acima, elimine a visão, renomeie a nova tabela base seja qual for a visão. Seu aplicativo/camada de banco de dados não saberá a diferença.

Na verdade, há mais do que isso na prática, mas isso deve ajudar você a começar.