4.4. Anpassung des Datenmodells

Dieses Kapitel beschreibt die möglichen Anpassungen des Datenmodells.

4.4.1. Einleitung

Das Datenmodell ist versioniert und Aktualisierungen werden mit dem Postgres Updates Manager (auch bekannt als PUM) durchgeführt. Die zur Bearbeitung der Daten erforderlichen Ansichten werden automatisch mit der Bibliothek „Pirogue <https://github.com/opengisch/pirogue>“ erzeugt.

Die Kombination von beidem ermöglicht kleine Anpassungen des Datenmodells, wie das Hinzufügen von Feldern zu bestehenden Basistabellen oder die Erweiterung von Ansichten durch das Verbinden zusätzlicher Tabellen.

Bevor Sie fortfahren, empfehlen wir Ihnen dringend, die Community zu fragen, wenn Sie irgendwelche Fragen haben, wie Sie Informationen in der Datenbank speichern können. QGEP erfüllt die Anforderungen der SIA 405 <http://www.sia.ch/405>`_ Abwasser und des VSA-DSS <http://dss.vsa.ch>`_ Datenmodells.

Wenn das QGEP-Datenmodell noch nicht in der Lage ist, bestimmte Daten zu speichern, teilen Sie uns bitte mit, um welche Art von Daten es sich handelt und wie sie behandelt werden sollen. Das QGEP-Datenmodell ist ein standardisiertes, anpassungsfähiges Modell welches viele ihrer Anforderung schon abdeckt.

Sollte dennoch eine Anpassung erforderlich sein, erklären die folgenden Erläuterungen und Regeln, wie Sie das QGEP-Datenmodell an Ihre spezifischen Bedürfnisse anpassen können.

4.4.2. Zusätzliche Felder

Es ist erlaubt, zusätzliche Felder zu Tabellen hinzuzufügen, indem man sie als usr_... benennt.

Wenn sie in Basistabellen hinzugefügt werden, werden diese zusätzlichen Felder automatisch zu den Ansichten hinzugefügt, da es sich um ein bearbeitbares Feld handelt. Die Ansichten können jederzeit mit dem folgenden Befehl neu generiert werden:

./view/create_views.py --pg_service pg_qgep --srid 2056

Bemerkung

Wenn Datenmodell-Upgrades unter Verwendung von PUM durchgeführt werden, ist es erforderlich, die zusätzliche Option --exclude-field-pattern 'usr_%' zu verwenden.

4.4.3. Verknüpfung zusätzlicher Tabellen

Es ist möglich, zusätzliche Tabellen mit den beiden Hauptansichten (vw_qgep_Abwasserbauwerk und vw_qgep_Haltung) zu verbinden. Dazu wird für jeden View eine YAML-Definitionsdatei verwendet, in der eine Liste von verbundenen Tabellen definiert wird. Felder dieser Tabellen werden als schreibgeschützte Felder verknüpft, da sie in Edit-Triggern verworfen werden. Für das Verknüpfen einer Tabelle zu qgep_od.wastewater_structure, hier ein Beispiel:

joins:
  my_extra_join:
    table: qgep_od.my_table
    alias: mt
    prefix: mt_
    skip_columns:
      - field_1
      - field_2
    remap_columns:
      field_3: my_renamed_field
    join_on: mt.fk_ws = ws.obj_id

table und join_on sind Pflichtschlüssel, alle anderen sind optional.

Diese YAML-Datei sollte beim Ausführen des Skripts als Dateipfad angegeben werden:

./view/create_views.py --pg_service pg_qgep --srid 2056 --qgep_wastewater_structure_extra /path_to/extra_ws.yaml

Ähnliches gilt für die View vw_qgep_reach, indem Sie die Variable qgep_reach_extra auf den entsprechenden YAML-Dateipfad setzen.

4.4.4. Eigene views erstellen

Es sit möglich, eigene views zu erstellen und sie zum Datenmodell zu hinzuzufügen.

Um Upgrades des Datenmodells zu ermöglichen, sollte man ein Skript bereitstellen, um sie zu erstellen, und eines, um sie zu löschen. Diese Skripte (SQL oder Python) sollten in einem bestimmten Pfad abgelegt und als pre-all.{py,sql} und post-all.{py,sql} bezeichnet werden. Dieser Pfad muss als Variable an PUM übergeben werden, wenn das Datenmodell als Delta-Verzeichnis aktualisiert wird (siehe PUM-Dokumentation).

If one wants to have these views automatically updated when fields are added the data model, Pirogue can be used to dynamically generate the views. You can take example of the creation of the views in the data model.