Pergunta

Estou arquitetando um novo aplicativo no momento, com uma alta de leitura:escrever a relação.No meu atual empregador temos muitos denormalised de dados em nossas mesas por motivos de desempenho.É melhor prática para ter totalmente 3NF tabelas e, em seguida, use os modos de exibição indexados para fazer todas as denormalisation?Devo executar consultas a tabelas ou modos de exibição?

Um exemplo de algumas das coisas que eu estou interessado são agregados de colunas de tabelas filho (e.g.tendo usuário post a contar armazenados em algum lugar).

Foi útil?

Solução

Em geral, é uma boa idéia ter desordenado vistas se você precisa de acesso através de várias tabelas normalizadas muito frequentemente.Na maioria dos casos, será um aumento significativo de desempenho através de uma associação e consultar diretamente as tabelas, e geralmente não é menos passível de manutenção, desde que a sua visão ou de associação pode ser escrito para ser agnóstico sobre alterações em partes as tabelas que ele não usa.

Se todos as tabelas devem estar na terceira forma normal é uma outra questão.Na maioria dos aplicativos que eu tenho trabalhado com a resposta é mais as tabelas devem ser normalizado desta forma, mas há exceções.Seja para fazer uma exceção tem a ver com a forma como os dados são usados, e se você pode ser muito confiante sobre o que usar e não mudar no futuro.

Ter que voltar atrás e re-normalizar mais tarde, porque você fez algo de errado forma, pode ser caro, mas a normalização de dados que deve ser simples de usar e entender pode tornar as coisas mais complicadas e difíceis de manter do que precisam ser.Sua milhagem pode variar.

Outras dicas

Se você quiser usar as visualizações para apresentar dados desnormalizados ao usuário (e estiver usando o SQL Server), verifique a cláusula de esquemas. Se uma visualização for esquema, você poderá indexá -la e o índice será atualizado quando as tabelas subjacentes forem atualizadas. Dessa forma, se os índices forem bem configurados, as pessoas que procuram dados podem realmente selecionar do índice, para que não precisará reconstruir a visão complexa de cada consulta, mas os usuários ainda estarão atualizados data em que as tabelas subjacentes mudarem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top