Modernize Studio
Sprache: DE
E‑Mail schreiben

Fallstudie: Microsofts Northwind-Datenbank, von Access 97 zu SQL und in den Browser

Northwind ist die Beispieldatenbank, die Microsoft mit Access ausgeliefert hat. Anhand einer öffentlichen Kopie (Access-97-Format) zeigen wir an einer Datei, die jeder prüfen kann, wie wir ein Access-Programm auf eine moderne Datenbank umstellen, ohne eine Zeile zu verlieren oder eine Zahl zu verändern. Hinter dieser Seite steht kein Kunde: Die Firmen und Personen in Northwind sind erfunden.

Die Northwind-Webanwendung: Auftrag 10250 in Bearbeitung, mit drei Artikelpositionen, Rabatten und laufend berechneten Summen.
Die Webanwendung auf der migrierten Datenbank: ein Auftrag aus Microsofts Northwind-Beispiel, die Summen werden bei der Eingabe neu berechnet.

Ausgangslage

  • Eine Access-97-Datei mit 2.932 KB: 9 Tabellen mit 4.032 Zeilen, 22 gespeicherte Abfragen (drei mit Parametern, eine Kreuztabelle), 13 Berichte und 21 Formulare.
  • Bilder als OLE-Objekte, die nur Access anzeigen kann.
  • Geschäftsregeln verteilt auf Feldeigenschaften, Beziehungen und die Abfragen hinter den Berichten.

Was wir gemacht haben

  1. Daten. Alle Tabellen und alle Zeilen wurden in ein neues relationales Schema übernommen, geliefert als SQLite-Datenbank und als PostgreSQL-Skripte, mit Primär- und Fremdschlüsseln, Indizes und den Gültigkeitsregeln aus Access als Constraints der Datenbank. Die 17 Bilder wurden pixelgenau zu PNG-Dateien.
  2. Abfragen. Die 22 gespeicherten Abfragen wurden zu SQL-Views mit demselben Namen, in beiden Datenbanken, zusammen mit den Berechnungen hinter den Berichten: Auftragssummen nach Rabatt, Rechnungsbeträge, Umsatz nach Kategorie und nach Jahr.
  3. Nachweis. Automatische Tests vergleichen die Originaldatei mit den neuen Datenbanken: Zeilenzahl und Prüfsumme jeder Zeile für jede Tabelle sowie das vollständige Ergebnis jeder Abfrage, insgesamt 855 Ausführungen, auf vier Wegen geprüft (Access-SQL auf der Originaldatei, ein unabhängiges Modell, PostgreSQL und der Browser).
  4. Anwendung. Eine Webanwendung auf der migrierten Datenbank, die vollständig im Browser läuft: Aufträge mit laufend berechneten Summen, Kunden, Artikel, Lieferanten, Mitarbeiter, ein Dashboard und die ursprünglichen Berichte, druckfertig.

Ergebnisse des Testlaufs

9/9
Tabellen identisch, Zeile für Zeile
22/22
Abfragen mit identischem Ergebnis (855 Ausführungen)
17/17
Versuche, eine Regel zu verletzen, von der Datenbank abgewiesen
1.265.793,02 $
Wert der 2.155 Auftragspositionen, gleich in SQLite, PostgreSQL und im Browser

Zwei Abweichungen, beide beabsichtigt

Access rechnet Auftragspositionen in binärer Gleitkommaarithmetik und speichert Rabatte als Näherungswerte (15 % werden als 0,15000000596 abgelegt). Bei 18 von 2.155 Positionen, deren exakter Betrag genau auf einem halben Cent liegt, verschiebt das das Ergebnis um einen Cent. Die neuen Datenbanken speichern exakte Prozentsätze und runden überall gleich; die Gesamtsumme ändert sich um 0,16 $. Jede betroffene Position ist im Bericht aufgeführt.

148 Textwerte haben ein überzähliges Leerzeichen am Ende oder einen alten Zeilenumbruch verloren. Einer davon war das Land Sweden, einmal mit Leerzeichen am Ende erfasst, das sonst als eigenes Land gezählt würde.

Was die Tests unterwegs gefunden haben

UCanAccess, ein verbreitetes Werkzeug zum Lesen von Access-Dateien aus Java, liest die Rabattspalte dieser Access-97-Datei als ganze Zahl: Alle 838 Rabatte werden zu null. Die Tabellenprüfungen haben das erkannt, und der Bericht erklärt, wie wir unter gleichen Bedingungen verglichen haben. Außerdem lässt der von Jackcess rekonstruierte SQL-Text das TOP 10 einer Abfrage weg; wir haben es aus den Systemtabellen der Datei gelesen.

Die Anwendung lädt die 1.116 KB große Datenbank mit SQLite als WebAssembly in Ihren Browser. Ihre Änderungen bleiben im Tab, und eine Schaltfläche stellt die Originaldaten wieder her. Anwendung und Bericht sind auf Englisch.

Kontakt

Per E‑Mail:

riccardo@modernizestudio.com
E‑Mail schreiben

Wenn Sie eine Access-Datenbank oder ein anderes älteres Programm haben, das denselben Weg gehen soll, schicken Sie uns eine Kopie oder eine kurze Beschreibung. Wir antworten innerhalb eines Werktags.

Wir arbeiten von Italien aus.

E‑Mail schreiben