2.3. Initialisierung der Datenbank

Für die Konfiguration der Datenbank können sie pgAdmin verwenden.

Bemerkung

Mit diesem Link können sie lernen wie man Installation von pgAdmin benutzt.

2.3.1. Vorgehen

In pgAdmin4

  • Verbinden Sie sich mit dem Datenbankserver

  • Create a new database with UTF8 encoding

E.g. tww_demo, avoid spaces, dots, uppercases and special characters As proposed in https://stackoverflow.com/questions/2878248/postgresql-naming-conventions

2.3.1.1. Rollen und Zugriffsrechte erstellen

TWW roles are defined in the + 12_0_roles.sql (per cluster) + 12_1_roles.sql (per database)

12_0_roles.sql has to be run before restoring the demodata database. 12_1_roles.sql has to be run if you initialize your module with with the commandline.

An evolution of the roles management is in progress and will be available soon.

It is highly recommended to use these when using TWW in a production environment.

Copy paste and run the .sql files content in the query editor of pgAdmin (Tools > Query Tool).

2.3.1.2. Restore data model with demodata

Warnung

Demodata only available as an INTERLIS file The undeling procedure is now providing an empty datamodel with value lists.

The demodata is now only available in INTERLIS format but can be easily imported with the plugin IMPORT tool.

Das aktuelle Datenbank-Schema mit dem Demodatensatz einrichten

Weiter in pgAdmin:

  • Right click the tww_demo database

    • ‚Restore‘ wählen

    • Load your download of tww_vx.y.z_structure_and_demo_data.backup

    ../_images/demodata-restore.jpg
    • Klicken Sie den Restore Option-Tab und überprüfen Sie die folgenden Optionen

    ../_images/demodata-restore_options.jpg
    • ‚Restore‘ wählen

    • Kontrollieren sie im Fenster Restoring backup on the server, ob der Abschluss erfolgreich war.

Bemerkung

Wenn die Wiederherstellung nicht funktioniert und unter more details etwas steht wie „pg_restore: [archiver] unsupported version (1.13) in file header“ resp. in Deutsch „pg_restore: [Archivierer] nicht unterstützte Version (1.13) im Dateikopf“ updaten sie PostgreSQL, vgl. https://stackoverflow.com/questions/49064209/getting-archiver-unsupported-version-1-13-in-file-header-when-running-pg-r

Bemerkung

If the Restore failed and the detail reads something like „pg_restore: error: could not execute query: FEHLER: role »tww_viewer« does not exist then you have not created the minimal roles (see above)

  • Schliessen sie das Wiederherstellungsfenster

  • Recktsklick auf die Datenbank und ‚Refresh‘ wählen

../_images/demodata-refresh.jpg
  • Vermutlich wollen sie die Datenbank jetzt umbenennen: Rechtsklick auf die Datenbank, klick auf Eigenschaften… und geben sie einen neuen Namen ein.

There are now 6 schemas in the database

  • public

  • tww_app

  • tww_cfg

  • tww_od

  • tww_sys

  • tww_vl

2.3.1.3. Leeres Datenbank-Schema

Es ist auch möglich, ein leeres Datenbank-Schema zu erstellen (ohne Demodatensatz).

Bemerkung

Wenn dieses SQL in einem SQL Abfrage Fenster gestartet wird, gibt es einen Fehler. Es muss ein BAT-File benutzt werden.

  • Benutze eine BAT-Datei wie folgt, um die Datenbank, die Erweiterungen und die Schemata mit Wertelisten zu erzeugen (ersetzen sie x.y.z mit ihrer Versionnummer):

    @echo off
    
    set filename="tww_vx.y.z_structure_with_value_lists.sql"
    
    if not exist %filename% (
       echo "File %filename% does not exist. Please download the latest datamodel from https://github.com/TWW/datamodel/releases (structure_with_value_lists.sql) and adjust filename in this batch file."
       PAUSE
       exit -1
    )
    
    set /p db="Please enter the database name? (e.g. tww_community) "
    set /p password="Please enter the password for user postgres? "
    
    set port=5432
    set PATH=%PATH%;C:\Program Files\PostgreSQL\15\bin
    set PGPASSWORD=%password%
    
    createdb -U postgres -p %port% %db%
    
    psql -U postgres -h localhost -p %port% -d %db% -f %filename%
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA public TO ""tww"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA tww_vl TO ""tww"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA tww_od TO ""tww"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA tww_import TO ""tww"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA tww_swmm TO ""tww"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA tww_sys TO ""tww"""
    
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA tww_od TO ""tww""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA tww_swmm TO ""tww""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA tww_import TO ""tww""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT ON ALL TABLES IN SCHEMA tww_vl TO ""tww""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT ON ALL TABLES IN SCHEMA tww_sys TO ""tww""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO ""tww"""
    
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON ALL SEQUENCES IN SCHEMA tww_od TO ""tww"""
    
    psql -U postgres -h localhost -p %port% -d %db% -c "REFRESH MATERIALIZED VIEW tww_od.vw_network_node"
    psql -U postgres -h localhost -p %port% -d %db% -c "REFRESH MATERIALIZED VIEW tww_od.vw_network_segment"
    
    PAUSE
    

Bemerkung

Es kann irgendein Datenbankname verwendet werden.

  • Update privileges for the tww_od, tww_sys, tww_vl, tww_network, tww_import, tww_swmm schema as described in the chapter Create minimal roles and access.

2.3.1.4. Erzeugen des Datenmodells unter Linux

Es ist auch unter LINUX möglich das Datenmodell zu erzeugen

  • Download des Datenmodells

    git clone https://github.com/TWW/datamodel
    cd datamodel
    
  • Setup the pg_service.conf file and add the pg_tww service as in the Linux/macOS pg_service section.

  • Erzeugen der Datenbank

    psql -U postgres -c 'CREATE DATABASE tww;'
    
  • Starten Sie das Skript:

    ./scripts/db_setup.sh
    

Wenn Sie eine andere SRID verwenden möchten, dann benutzen Sie die -s option. Zum Beispiel ./scripts/dbsetup.sh -s 2056 für SRID 2056.

Wenn Sie schon ein Datenmodell haben und dieses erneut erzeugen möchten, dann nutzen Sie die -f` Option: ./scripts/db_setup.sh -f.

You can use the -r option to add roles (tww_viewer, tww_user, tww_manager, tww_sysadmin).

  • Viewer: Kann Tabellen und Views anschauen.

  • User: Kann Daten editieren.

  • Manager: Kann Daten und Wertebereiche bearbeiten.

  • Admin: Datenbank Administrator.