4.5. Anpassung des Datenmodells

Dieses Kapitel beschreibt die möglichen Anpassungen des Datenmodells.

4.5.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 TWW-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 TWW-Datenmodell ist ein standardisiertes, anpassungsfähiges Modell welches viele ihrer Anforderung bereits abdeckt.

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

4.5.2. Symbologie- und Beschriftungsverhalten ändern

Symbology and labelling behaviour depends on the value lists `` tww_vl.channel_usage_current`` and `` tww_vl.channel_function_hierarchic`` These two value list tables have an additional column tww_symbology_order, which is used to define the hierarchy of the symbology.

Für die Beschriftung kann die Spalte `` tww_vl.channel_function_hierarchic.tww_use_in_labels`` genutzt werden, um zu steuern, welche FunktionHierarchisch beim Generieren des Labels berücksichtigt werden.

4.5.3. 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_tww --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.5.4. Verknüpfung zusätzlicher Tabellen

It is possible to join additional tables to the two main views (vw_tww_wastewater_structure and vw_tww_reach). This is done by using a YAML definition file for each view and defining a list of joined tables. Fields of these tables will be joined as read-only fields as they are discarded in edit triggers. For joining a table to tww_od.wastewater_structure, here is an example:

joins:
  my_extra_join:
    table: tww_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_tww --srid 2056 --tww_wastewater_structure_extra /path_to/extra_ws.yaml

And similarly for vw_tww_reach view, by specifying tww_reach_extra variable to the corresponding YAML file path.

4.5.5. 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.