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.

Before going further, we strongly recommend to ask the community if you have any doubts about how to store any information in the database. TWW complies with SIA 405 Waste Water and VSA-DSS datamodel.

If TWW data model is not able yet to hold some data, please let us know what kind and how it should be handled. TWW data model is a standard proof adaptative model and could follow your needs.

If a customization is still required, the following explanations and rules explain how to adapt TWW data model to your specific needs.

4.5.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_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.3. 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.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.