Modernize Studio
Idioma: Português
Escreva-nos

Caso de estudo: a base de dados Northwind da Microsoft, do Access 97 para SQL e para o browser

A Northwind é a base de dados de exemplo que a Microsoft distribuía com o Access. Usámos uma cópia pública (formato Access 97) para mostrar, num ficheiro que qualquer pessoa pode verificar, como levamos um programa Access para uma base de dados moderna sem perder uma linha nem alterar um valor. Não há nenhum cliente por trás desta página: as empresas e as pessoas da Northwind são fictícias.

A aplicação web Northwind: a encomenda 10250 aberta para edição, com as suas três linhas de produtos, os descontos e os totais atualizados.
A aplicação web construída sobre a base de dados migrada: uma encomenda da base de exemplo Northwind da Microsoft, com os totais recalculados enquanto escreve.

Ponto de partida

  • Um ficheiro Access 97 de 2932 KB: 9 tabelas com 4032 linhas, 22 consultas guardadas (três com parâmetros e uma de tabela de referência cruzada), 13 relatórios e 21 formulários.
  • Imagens guardadas como objetos OLE, que só o Access consegue mostrar.
  • Regras de negócio repartidas entre propriedades dos campos, relações e as consultas por trás dos relatórios.

O que fizemos

  1. Dados. Todas as tabelas e todas as linhas passaram para um novo esquema relacional, entregue como base de dados SQLite e como scripts PostgreSQL, com chaves primárias e estrangeiras, índices, e as regras de validação do Access transformadas em restrições da base de dados. As 17 imagens passaram a ficheiros PNG, píxel a píxel.
  2. Consultas. As 22 consultas guardadas passaram a vistas SQL com os mesmos nomes, nas duas bases de dados, juntamente com os cálculos usados pelos relatórios: totais das encomendas após desconto, valores das faturas, vendas por categoria e por ano.
  3. Prova. Testes automáticos comparam o ficheiro original com as novas bases de dados: número de linhas e uma soma de verificação de cada linha em cada tabela, e o resultado completo de cada consulta, 855 execuções ao todo, verificadas de quatro formas (SQL do Access sobre o ficheiro original, um modelo independente, PostgreSQL e o browser).
  4. Aplicação. Uma aplicação web sobre a base de dados migrada, que corre inteiramente no browser: encomendas com totais em tempo real, clientes, artigos, fornecedores, funcionários, um painel e os relatórios originais, prontos a imprimir.

Resultados da execução

9/9
tabelas idênticas, linha a linha
22/22
consultas com resultados idênticos (855 execuções)
17/17
tentativas de violar uma regra recusadas pela base de dados
1 265 793,02 $
valor das 2155 linhas de encomenda, igual em SQLite, PostgreSQL e no browser

Duas diferenças, ambas intencionais

O Access calcula as linhas de encomenda em vírgula flutuante binária e guarda os descontos como números aproximados (15% fica guardado como 0,15000000596). Em 18 das 2155 linhas de encomenda, cujo valor exato cai em meio cêntimo, isto altera o resultado em um cêntimo. As novas bases de dados guardam percentagens exatas e arredondam da mesma forma em todo o lado; o total geral muda 0,16 $. Todas as linhas afetadas estão listadas no relatório.

148 valores de texto perderam um espaço a mais no fim ou uma quebra de linha à moda antiga. Um deles era o país Suécia, guardado uma vez com um espaço no fim, que de outro modo contaria como um país diferente.

O que os testes encontraram pelo caminho

O UCanAccess, uma ferramenta muito usada para ler ficheiros Access a partir de Java, lê a coluna de desconto deste ficheiro Access 97 como número inteiro: os 838 descontos passam todos a zero. As verificações das tabelas detetaram-no, e o relatório explica como comparámos dados equivalentes. O texto SQL que o Jackcess reconstrói também omite o TOP 10 de uma consulta; lemo-lo nas tabelas de sistema do ficheiro.

A aplicação carrega a base de dados de 1116 KB no seu browser, com SQLite compilado para WebAssembly. As suas alterações ficam no separador e um botão repõe os dados originais.

Contacto

Escolha o canal que mais lhe convier. Respondemos por e‑mail, em português, no prazo de um dia útil.

Por e‑mail

riccardo@modernizestudio.com
Escrever um e‑mail

Se tem uma base de dados Access, ou outro programa antigo, que gostaria de ver passar pelo mesmo processo, envie-nos uma cópia ou uma breve descrição. Respondemos no prazo de um dia útil.

Envie-nos o seu ficheiro

Se o programa for em Access, Excel, VB6, Delphi ou numa versão antiga de .NET, recebe uma análise escrita gratuita no prazo de 48 horas após o envio do ficheiro.

  1. Faça uma cópia do ficheiro, se preferir com dados de teste.
  2. Anexe-a ao formulário ou a um e‑mail, de preferência num arquivo protegido por palavra-passe, enviando a palavra-passe à parte. Se o pedir, assinamos antes um acordo de confidencialidade.
  3. Em 48 horas: a análise e um preço fixo para um módulo piloto.

Trabalhamos a partir de Itália.

Enviar uma mensagem

Opcional. Uma base de dados, um livro do Excel, capturas de ecrã ou um caderno de encargos, até 10 MB. Para ficheiros maiores, indique na mensagem uma ligação para os descarregar.

Escreva-nos

O botão abre o seu programa de e‑mail com a mensagem já preparada. Nada é enviado até carregar em «Enviar» nesse programa.

Escreva-nos