Importmodul II: Aufbau und Überblick


Angebotstabellen

Nachfrage

Beziehungen und Sonstige


Die Importtabellen

Besondere Felder/Spalten

In allen Importtabellen des Datenimportmoduls gibt es die Spalte "Farbe", in den meisten die Felder "Anweisung" und/oder "XId", in den Importtabellen der Datenbank zusätzlich noch die Spalte 'IntId'. Für diese gilt Folgendes:

IntId: Der Primärschlüssel der Datensätze. Er dient ausschließlich der Kommunikation des Programms mit den Importtabellen der Datenbank, wird bei Einfügung eines neuen Datensatzes von der Datenbank automatisch erstellt, hat keinerlei inhaltliche Bedeutung und wird nicht für Objektverweise untereinander verwendet. Es ist insbesondere weder eine interne recotech-ID, die später in den Stamm-, Projekt oder Variantendaten verwendet würde, noch eine externe ID über die eine spätere Identifizierung möglich wäre.

Farbe: Ein String Feld in dem der Datensatz mit einem Farbwert in der recotech-Import-GUI versehen werden kann. Diese Farbgebung kann bei manueller Nachbearbeitung der Importdaten als Orientierungshilfe dienen. Für die inhaltliche Auswertung ist er irrelevant.

XId: Eine ID des referenzierten Objektes in einem fremden System. Sie ist ein frei definierbarer String, der beim Daten Im- und Export für die Identifikation des Objektes verwendet wird. Sie wird in recotech selbst nicht inhaltlich verwendet und kann bei existierenden Objekten mit dem Datenimportmodul nicht geändert werden. Eine nachträgliche Änderung kann nur auf eigene Verantwortung im direkten Zugriff auf die Datenbank erfolgen.
Bei der Kopie der Stammdaten für die Erstellung von Projekten und Varianten wird diese XId übernommen, sodass sie beim Export der Ergebnisse zur Identifikation des Objektes im externen System zur Verfügung steht.
Die Angabe einer externen ID ist optional. Auch Änderungen an bestehenden Daten sind ohne Angabe externe ID möglich. In diesem Fall sind identifizierende Felder anzugeben, die während des Importprozesses dann keinerlei Änderungen unterliegen dürfen, damit die Identifikation erfolgreich ist. Dies geschieht, wie bei den speziellen Strings, je nach Dateneingabemethode über die GUI oder in der Profildatei. Bei der Verwendung der Importtabellen der Datenbank als Datengrundlage müssen externe IDs angegeben oder die entsprechenden Funktionen zur Identifizierung in der GUI manuell aufgerufen werden. In jedem Fall liegt die Verantwortung für die inhaltlich sinnvolle Identitätserhaltung der Objekte über Änderungen hinweg beim Benutzer.
Wird für ein neues Objekt keine externe ID angegeben oder ein Objekt im normalen recotech-Betrieb erstellt, wird eine GUID als externe ID vergeben.

Anweisung: Das Feld gibt an, ob der Datensatz eine Einfügung, Änderung, Löschung oder Einfügung/Änderung ist. Zu diesem Zweck gibt es wiederum spezielle Strings, die in der GUI, dem Profil oder der Konfigurationstabelle definiert werden müssen. Ihre Bedeutung ist wie folgt:

  • Einfügung: Ein entsprechendes recotech-Objekt wird neu angelegt.
  • Änderung: Das referenzierte recotech-Objekt wird entsprechend geändert.
  • Löschung: Das referenzierte recotech-Objekt und alle von ihm abhängigen werden gelöscht.
  • Einfügung/Änderung: Ein entsprechendes recotech-Objekt wird neu angelegt oder ein bestehendes geändert, je nachdem ob ein recotech-Objekt mit der angegebenen XId existiert oder nicht.


Anweisungen haben keine Reihenfolge

Lesern mit IT-Kenntnissen wird die Ähnlichkeit der Anweisungsarten mit den SQL-Befehlen Insert, Update und Delete auffallen. In einen dieser drei SQL-Befehle wird jeder Importdatensatz letztlich übersetzt. Diese SQL-Befehle werden intern auch in einer gewissen Reihenfolge abgearbeitet, die von den Fremdschlüsselbeziehungen der Datenbank bestimmt ist.

Es ist jedoch ein zentrales Anliegen des Importmoduls, den Benutzer mit solchen technischen Feinheiten nicht zu belangen. Auch ein Nutzer ohne IT- oder Datenbankkenntnisse soll das Importmodul bedienen können. Der Benutzer soll sich darauf konzentrieren, wie die neuen Daten aussehen sollen, wie man technisch dahin kommt, ist Aufgabe des Importmoduls.

Das Importmodul beachtet bei allen Prüfungen und Fehleranzeigen diese Reihenfolge und verifiziert bei Bedarf immer alle Voraussetzungen einer Anweisung, d. h. alle anderen Anweisungen, die vorher ausgeführt würden. Somit weiß es zu jeder Anweisung entweder den vollständigen Datenstand, der zum Zeitpunkt ihrer Ausführung bestehen wird, oder es findet die Anweisung, an der die Ausführung scheitern wird; es kennt dann aber eben den vollständigen Datenstand zum Zeitpunkt des Scheiterns und kann dessen Gründe als Fehler anzeigen. Für den Benutzer bedeutet dies:

Im Importmodul sind alle Anweisungen so zu lesen, als würden sie alle gleichzeitig ausgeführt werden.

Wenn ein Datensatz z. B. ein Gebäude umbenennt, gilt der neue Name dieses Gebäudes als der einzige richtige Wert für alle anderen Anweisungen, in denen sich namentlich auf dieses Gebäude bezogen wird.


Redundanz von XId und Anweisung

Die Felder Anweisung und XId sind in gewisser Weise redundant. Wenn von beiden nur die XId angegeben ist (und im Anweisungsfeld der Autowert steht), wird die Anweisung als Änderung oder Einfügung interpretiert, je nachdem ob die XId in den Stammdaten existiert oder nicht. Eine Löschung muss explizit gewünscht sein.

Wenn von beiden nur das Anweisungsfeld gesetzt ist (XId auf Autowert), wird im Falle einer Einfügung eine neue GUID als XId vergeben. Im Falle einer Änderung oder Löschung wird anhand der angegebenen identifizierenden Felder das betreffende recotech-Objekt gesucht und dessen XId gesetzt. Wenn diese Suche nichts findet, gilt das als Fehler, wenn sie mehrere findet als Warnung. In beiden Fällen wird das XId-Feld nicht automatisch gefüllt.

Im letzten und flexibelsten Fall der Anweisung, der Einfügung/Änderung, wird auch zunächst gesucht und ebenfalls gelten mehrere gefundene Objekte als Warnung. Kein Fund führt aber nicht zum Fehler, sondern dazu, dass dieser Datensatz als Einfügung behandelt wird. Bei einem eindeutigen Fund ist der Datensatz eine Änderung.

Anmerkungen zu den Importtabellen

Im folgenden Abschnitt werden die Importtabellen im Einzelnen aufgeführt. Da die Importtabellen der Datenbank und die Tabellen der Importmodul-GUI strukturell sehr ähnlich sind, werden beide gleichzeitig beschrieben. Die Bedeutung der Spalten ist wie folgt:

Name: der Name der Spalte in der grafischen Benutzeroberfläche des Importmoduls

Typ: Der Typ bestimmt die vom Importalgorithmus auf dieses Feld angewandte Prüf- und Vervollständigungslogik. Es gibt die folgenden acht Typen:

    • ID: Der Wert dieses Feldes dient zur eindeutigen Identifikation des Objektes für den Austausch mit anderen Systemen.
    • Wert (String): Der Wert dieses Feldes wird in den Stammdaten in exakter Kopie auf ein String Attribut abgebildet.
    • Wert (Boolean): Der Wert dieses Feldes wird in den Stammdaten auf ein boolesches Attribut abgebildet. Dementsprechend bestehen nur die definierten Sonderstrings für true und false die Syntaxprüfung des Imports. Gegebenenfalls auch noch der Sonderstring für null.
    • Wert (Double): Der Wert dieses Feldes wird in den Stammdaten auf ein Double-Attribut geschrieben. Der String muss dementsprechend das für den Import definierte Zahlformat haben, um die Syntaxprüfung zu bestehen.
    • Wert (Integer): Der Wert dieses Feldes wird in den Stammdaten auf ein integer-Attribut geschrieben. Der String muss dementsprechend das für den Import definierte Zahlformat haben, um die Syntaxprüfung zu bestehen.
    • Referenz: Die XId eines anderen Objektes. Referenzfelder werden inhaltlich als Fremdschlüssel verwendet.
    • Verweis: Der Wert dieses Feldes ist ein Attribut eines anderen Objektes, auf welches referenziert wird, zumeist der Name. Referenzen und Verweise lassen sich auseinander ermitteln, wobei die Bestimmung von Referenzen aus Verweisen von kontextueller Namenseindeutigkeit abhängig ist. Die Möglichkeit, Objektbeziehungen durch diese inhaltlichen Verweise statt durch IDs auszudrücken, dient hauptsächlich dem Datenimport aus manuell bearbeiteten Excel-Tabellen.
    • Anweisung: Gibt an, ob es sich bei diesem Datensatz um eine Einfügung, eine Änderung, eine Löschung oder Einfügung/Änderung handelt. Hier bestehen nur die dafür definierten Strings die Syntaxprüfungen.

Db Name: der Name der Spalte in der entsprechenden Importtabelle der Datenbank

Db Typ: der Datentyp dieser Spalte in der Datenbank. Alle Felder sind zwar vom Typ String, aber ihre Länge variiert. Kursive Schrift bedeutet, dass dieses Feld in der Datenbank null erlaubt. Bei diesen Feldern ist der Standardwert null und nicht der leere String.

E. S.: Die erlaubten Wert-Sonderstrings, hier steht [...] für einen gewollten leeren String, * für eine Wildcard (also keine Änderung), ? für die Aufforderung den Wert automatisch zu ermitteln. Letzteres ist insbesondere bei Referenz- und Verweisfeldern nützlich. geo steht für den Befehl, diesen Wert geometrisch zu ermitteln. zip steht für keinen Wert.
Für die genaue Bedeutung und Verarbeitung dieser Spezialstrings siehe: "Importmodul III: Datenverarbeitung".

Bedeutung: Eine kurze Erklärung der inhaltlichen Bedeutung des Feldes. Für eine ausführliche Erklärung siehe "Importmodul I: Objekte und Daten".

Des Weiteren werden für jeden Datentyp die Löschrestriktionen bzw. Löschweitergaben beschrieben. Für diese gilt generell, dass diese sich nur auf die Stammdaten beschränken. Alle Planungsdaten bleiben von Löschungen sowie von allen Änderungen in den Stammdaten unberührt.

Zuletzt werden für jeden Datentyp die Möglichkeiten der automatischen Vervollständigung von Lücken beschrieben. Wenn im Folgenden davon die Rede ist, dass ein Feld/Wert/Attribut aus einem oder mehreren anderen "ermittelt werden kann", so ist damit gemeint, dass das Importmodul den entsprechenden Algorithmus zum gegebenen Zeitpunkt der Prüfungen und Verarbeitung automatisch ausführt.


Automatische Vervollständigung

Einige Werte können aus anderen Angaben einfach geometrisch berechnet werden.

Die Vervollständigung von Autowerten ist deutlich komplizierter. Im Detail wird sie im Dokument "Importmodul III: Datenverarbeitung" erläutert. Hier genügt es zu wissen, dass alle Schlussregeln so lange durchlaufen werden, bis einer der drei folgenden Fälle eintritt:

  • Alle Autowerte konnten aufgelöst werden.
  • Die angegeben Werte sind inkonsistent, d. h. keiner der theoretisch möglichen Kandidaten passt zu den Angaben.

Keine weitere Reduktion einer der involvierten Kandidatenmengen ist mehr möglich, die Angaben sind unzureichend.


Wie die folgenden Tabellen nicht zu verstehen sind

Die folgenden Tabellen sind nicht als vollständige Liste der notwendigen Daten zu verstehen. Das gilt für ganze Tabellen/Objekttypen und insbesondere auch für die Attribute an diesen Objekten. Viele Angaben sind optional oder redundant und können in der einen oder anderen Form oder gar nicht gemacht werden. Insbesondere bei Änderungen und Löschungen müssen die Informationen nur ausreichen, um das gemeinte Objekt zu finden.

Die Struktur der folgenden Tabellen ist für die Quelldaten nur dann maßgebend, wenn sie direkt in die Importtabellen der recotech-Datenbank geschrieben werden. Dabei können die Daten beliebig strukturiert und gefiltert werden.

Beim Import von Daten aus Dateien gilt: Die Daten müssen nicht so strukturiert sein wie die hier beschriebenen Tabellen. Insbesondere müssen die Spalten weder so heißen, noch in der gleichen Reihenfolge erscheinen. Die Informationen zu einem recotech-Objekttyp müssen sich noch nicht einmal in der gleichen Datei befinden. Das gilt sowohl spalten- als auch zeilenweise.

Dieselbe Quelldatei kann auch mehrere Importtabellen bedienen. Die Informationen zu Nutzungsarten, Geschossen, Gebäuden und Standorten können in den Quelldaten z. B. allesamt nur Spalten in einer Raumliste sein. Dann werden für diese Objekte zwar zuerst zu viele Importobjekte angelegt, diese aber durch die Prüfungen auf das Notwendige reduziert.

Diese Tabellen können ein inhaltliches Verständnis der recotech-Objekte und -Daten weder liefern noch ersetzen. Sie beschreiben nur die Syntax der Importobjekte und sagen über die Semantik der eigentlichen recotech-Daten sehr wenig aus. Dies ist das Anliegen des Dokuments "Importmodul I: Objekte und Daten".