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.
- Faça um backup.
- Faça outro backup em um dispositivo diferente.
- Crie novas tabelas com comandos do tipo "select into newtable from oldtable...". Você precisará fazer algumas junções para combinar tabelas anteriormente distintas.
- Retire as tabelas antigas.
- 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.