Einfach Auswerten – Denormalisieren

Die meisten ERP Systeme, unter anderem auch Microsoft Dynamics NAV (Früher bekannt als Navision), verwenden „normalisierte“ Datenbanken. Diese Datenbanken sind für die Dateneingabe optimiert. Aus technischen Gründen enthalten solche Datenbanken sehr viele verschiedene Tabellen. Das spart viel Platz auf den Festplatten, weil die Daten nicht doppelt gespeichert werden müssen (Redundanzen vermeiden). So kann der Anwender seine Daten möglichst schnell und einfach eingeben. Zur Auswertung fügt man die aufgeteilten Daten wieder zusammen, indem mehrere Tabellen miteinander verknüpft.

Ein Beispiel: Wenn Sie einen Auftrag eingeben, dann wählen Sie einen Debitor nur aus. Sie müssen nicht jedes Mal die Adresse und die Telefonnummer neu erfassen. Diese Werte sind in der Debitorentabelle einmalig hinterlegt und werden automatisch in Ihren Auftrag übernommen.

Debitor Lookup

Die Zahlungsbedingung wählen Sie dann wieder aus einer anderen Tabelle, ebenso wie Lieferanschrift und Lieferbedingungen. Wäre Ihre Datenbank nicht normalisiert, hätten Sie bis hierher schon viel Arbeit gehabt, diese Daten erneut einzugeben.

Danach erfassen Sie die Artikel in den Auftragszeilen. Auch hier gibt es wieder eine Tabelle, aus der Sie die gewünschten Zeilen auswählen können: Die Artikeltabelle. Preise und Rabatte werden automatisch aus zwei weiteren Tabellen geholt: Tabelle Verkaufspreise und Verkaufsrabatte. Sie merken, ein ERP System wie Dynamics NAV ist für die Dateneingabe optimiert und beinhaltet sehr viele eigenständige Tabellen.

EinfachAuswerten - Artikel Lookup

 

Der Vorteil bei der Dateneingabe ist ein leider ein Nachteil beim Auswerten. Zum Auswerten muss man die Struktur der Daten gut kennen. Zudem muss man wissen, wie man mehrere Tabellen miteinander verknüpfen kann. Das überfordert das Fachwissen mancher Anwender deutlich.

Ein Beispiel aus dem Dynamics NAV:

Wollten Sie schon einmal alle offenen Auftragszeilen mit Artikeln der Artikelkategorie „Geschirr“ und Verkäufer „Meier“ sehen? Wie haben Sie dies gelöst?

Die Auftragszeilen in NAV stehen in der Tabelle Verkaufszeile. Die Artikelnummer und die Restliefermenge sind dort als Information vorhanden. Der Verkäufercode steht allerdings in der Tabelle Verkaufskopf. Verkaufskopf und Verkaufszeile sind über die Belegnummer verknüpft.

Sie müssten also bei den Verkaufsköpfen mit Verkäufercode gleich „Meier“ beginnen. Doch wie kommt man dann an die Zeilen? Merkt man sich die Belegnummern und filtert dann ggf.? Das geht sicherlich, wenn Sie wenige Aufträge im System haben. Aber merken Sie sich mal mehr als 10 Belegnummern und fügen Sie diese zu einem Filter zusammen. So könnten wir das Problem lösen. Es ist allerdings nur wenig komfortabel.

Eine Alternative ist, dass Sie sich von Ihrem NAV Betreuer im System ein neues Feld in der Verkaufszeile anlegen lassen: den Verkäufercode. Das kostet Sie aber einiges:

  • Geld, denn ein ERP Entwickler muss es für Sie durchführen. Jedes Feld verändert zu dem den Standard des ERP-Systems. Es kostet also bei jedem Upgrade wieder Geld.
  • Performance, denn zusätzliche Felder müssen automatisch vom ERP Programm gefüllt werden.
  • Übersicht, denn viele Hilfsfelder in einer Tabelle lenken von den wesentlichen Daten ab.
  • Speicherplatz, denn die zusätzliche Felder für Auswertungen werden statt einmalig in Stammdaten in allen Detaildatensätzen eingetragen.

Wenn Sie weitere Felder, wie die Lieferbedingung auf den Zeilen auswerten wollen, dann muss dann auch das Feld Lieferbedingung auf den Zeilen hinzugefügt werden. Gleiches mit dem Feld Zahlungsbedingung und und und… Irgendwann ist Ihre Tabelle Verkaufszeilen überladen mit Informationen. Dies wäre also die zweite Lösung, die uns aber immer noch nicht gefällt.

Zudem möchte Sie ja auch noch einen Filter auf die Artikelkategorie „Geschirr“ setzen. Sollen Sie sich jetzt hier alle Artikelnummern der Kategorie merken und als Filter setzen? Nein! Und die Artikelkategorie wiederum als Feld im NAV in der Tabelle Verkaufszeile anlegen lassen? Nein!

EinfachAuswerten - ERD ERP

 

Die Lösung hier ist ein sogenanntes Data Warehouse (Datenlager). Eingangs erwähnt sind ERP Systeme zum Eingeben der Daten optimiert. Ein Data Warehouse ist für das Auswerten optimiert. Sie werden eben nicht normalisiert, sondern man ergänzt die Tabellen „einfach“ um die Felder, die man zum Auswerten benötigt. Auch berechnete Felder oder das Nachtragen von Daten ist kein Problem.

Dieses Data Warehouse ist eine eigene Datenbank, welche mit den Daten aus Ihrem ERP System gefüllt wird. Der große Vorteil: Sie ändern nichts an Ihrem ERP System, weder an den Daten noch an der Programmierung. Sie verlieren im ERP System keine Performance.

Das Data Warehouse wird mit den Daten aus dem ERP System gefüllt – automatisiert nachts, oder zu jedem anderen Zeitpunkt, wenn Sie aktuelle Daten benötigen. Formeln sind möglich und werden vorberechnet, sodass Sie auch hier beim Auswerten keinen Performance Verlust haben.

Beim Abholen der Daten erweitern Sie die Tabellen im Datawarehouse und erstellen in der Tabelle Verkaufslieferzeilen einfach die eben genannten neuen Felder: Die Artikelkategorie holen Sie aus der Artikeltabelle und speichern dieses Feld als echten Wert. Gleiches mit den Verkäufercode: der wird aus dem Verkaufskopf geholt und gespeichert. Sie erhalten dadurch eine Datenbank, die nicht mehr normalisiert und Eingabeoptimiert ist. Und das ist hier völlig in Ordnung, denn hier wollen Sie ja keine Daten eingeben, Sie möchten optimal auswerten.

EinfachAuswerten - Business Intelligence ERP

Also können Sie schließlich auf dieser Tabelle einen Filter auf Verkäufer = „Meier“ und Artikelkategorie = „Geschirr“ setzen. Und schon sehen Sie die gewünschten Werte.

Mit dem BI-Tool Jet Enterprise ist das Denormalisieren von Datenbanken simpel zu erreichen. Für Dynamics NAV und AX sowie für das CRM Online werden sogar fertige BI Projekte mitgeliefert. Wir haben für unsere Kunden bereits eine Vielzahl von weiteren Datenbanken zur Auswertung optimiert. Fragen Sie uns gern nach Ihrem System.

Andreas Koblischke
datenkultur GmbH