claeis / ili2db

interlis import/export to relational databases
30 stars 30 forks source link

Übersetzung der DOMAIN #530

Closed maxcollombin closed 11 months ago

maxcollombin commented 11 months ago

Nach der Dokumentation von ili2db:

Wäre es jedoch nicht besser, TYPE in der Datenbank zu erstellen?

Für das Modell Planungszonen_V1_1, könnte man die DOMAIN

Festlegung_Stufe = (
  Kanton,
  Gemeinde,
  andere
);

übersetzen mit:

CREATE TYPE festlegung_stufe AS ENUM (
  kanton,
  gemeinde,
  andere
);

und in der Tabelle typ_planungszone auf folgende Weise referenzieren:

CREATE TABLE typ_planungszone (
t_id bigint NOT NULL DEFAULT nextval('t_ili2db_seq'::regclass),
...
festlegung_stufe festlegung_stufe NOT NULL,
...
);
claeis commented 11 months ago

Aus zwei Gründen nicht so gut:

1) PostgreSQL spezifisch, d.h. man würde Abbildungen in die DB erhalten, die für andere DBs anders aussehen müssen. Anderen Nutzungen/Applikationen können auch nicht mehr identisch sein (z.B. VIEWs für WMS-Services)

2) In INTERLIS ist es auch möglich den DOMAIN zu erweitern. DOMAIN FestlegungGemeinde EXTENDS Festlegung_Stufe .... Das könnte man dann wieder nicht so abbilden (weil die PostgreSQL ENUM TYPEs nicht erweiterbar sind).

maxcollombin commented 11 months ago

Vielen Dank für diese relevanten Elemente.

Könntest du bitte spezifizieren, was damit gemeint ist?

Auch andere Verwendungen/Anwendungen sind möglicherweise nicht mehr identisch (z. B. VIEWs für WMS-Dienste).

claeis commented 11 months ago

Häufig werden die Daten in der DB nicht nur von einer einzigen Applikation genutzt. z.B. a) interne Erfassungs-Applikation und b) öffentliches Portal