Index: trunk/import/sichten.sql
===================================================================
--- trunk/import/sichten.sql	(revision 328)
+++ trunk/import/sichten.sql	(revision 330)
@@ -3,4 +3,6 @@
 -- =====
 
+--  PostNAS 0.8
+
 --  -----------------------------------------
 --  Sichten fÃŒr Fehlersuche und Daten-Analyse
@@ -9,6 +11,4 @@
 --  Dieses SQL braucht nur bei Bedarf in einer PostNAS-DB verarbeitet werden.
 --  Es werden zusÃ€tzliche Views eingerichtet, die nur bei Fehlersuche und Analyse (vom Entwickler) benÃ¶tigt werden.
-
---  PostNAS 0.7
 
 --  2012-04-17 flstnr_ohne_position
@@ -30,4 +30,6 @@
 --  2014-01-31 Kommentar
 --  2014-02-06 nachmigration_aehnliche_anschriften
+--  2014-09-02 Die Tabelle "alkis_beziehungen" ÃŒberflÃŒssig machen.
+--             Relationen nun direkt ÃŒber neue Spalten in den Objekttabellen. 
 
 -- Bausteine fÃŒr andere Views:
@@ -47,25 +49,23 @@
 
 --           DROP VIEW public.doppelverbindung;
+
 CREATE OR REPLACE VIEW public.doppelverbindung
 AS
-  SELECT v1.beziehung_von AS fsgml,       -- gml_id auf FlurstÃŒck - Seite
-         v1.beziehung_zu  AS bsgml,       -- gml_id auf Buchungs  - Seite
-      --'direkt' AS fall,
-         0 AS ba_dien
-    FROM alkis_beziehungen v1
-   WHERE v1.beziehungsart = 'istGebucht'  -- FS --> Buchung
+  -- FS >istGebucht> Buchungstelle
+  SELECT f1.gml_id             AS fsgml,    -- gml_id FlurstÃŒck
+         b1.gml_id             AS bsgml,    -- gml_id Buchungs
+         0                     AS ba_dien
+    FROM ax_flurstueck f1
+    JOIN ax_buchungsstelle b1   ON f1.istgebucht = b1.gml_id
  UNION
-  -- Buchungstelle  >an>  Buchungstelle  >istBestandteilVon>  BLATT 
-  SELECT v2.beziehung_von AS fsgml,        -- gml_id auf FlurstÃŒck - Seite
-         an.beziehung_von AS bsgml,        -- gml_id auf Buchungs  - Seite (herrschendes GB)
-      --'Recht an' AS fall,
-         dien.buchungsart AS ba_dien       -- Ein Feld aus der Zwischen-Buchung zur Fall-Unterscheidung
-    FROM alkis_beziehungen v2
-    JOIN ax_buchungsstelle dien
-      ON  v2.beziehung_zu = dien.gml_id
-    JOIN alkis_beziehungen an
-      ON dien.gml_id = an.beziehung_zu
-   WHERE v2.beziehungsart = 'istGebucht'   -- FS --> Buchung
-     AND an.beziehungsart = 'an';
+  -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle
+  SELECT f2.gml_id              AS fsgml,   -- gml_id FlurstÃŒck
+         b2.gml_id              AS bsgml,   -- gml_id Buchung - (herrschendes GB)
+         dien.buchungsart       AS ba_dien  -- Ein Feld aus der Zwischen-Buchung zur Fall-Unterscheidung
+    FROM ax_flurstueck f2
+    JOIN ax_buchungsstelle dien ON f2.istGebucht = dien.gml_id
+    JOIN ax_buchungsstelle b2   ON dien.gml_id = ANY (b2.an)
+    WHERE dien.endet IS NULL;  -- FÃŒr das zusÃ€tzliche Verbindungselement die Historie hier ausschlieÃen, 
+                               -- FÃŒr andere Tabellen muss dies in dem View erfolgen, der dies verwendet.
 
 COMMENT ON VIEW public.doppelverbindung 
@@ -80,39 +80,29 @@
 -- Dies kann als "MittelstÃŒck" in den anderen Views eingefÃŒgt werden.
 
---   FlurstÃŒck  >weistAuf> ax_lagebezeichnungmithausnummer  <JOIN> ax_lagebezeichnungkatalogeintrag
---   FlurstÃŒck  >zeigtAuf> ax_lagebezeichnungohnehausnummer <JOIN> ax_lagebezeichnungkatalogeintrag
-
 --           DROP VIEW public.flst_an_strasse;
+
 CREATE OR REPLACE VIEW public.flst_an_strasse
 AS
-  SELECT vm.beziehung_von AS fsgml,          -- Join auf "gml_id" aus "ax_flurstÃŒck"
+  -- FlurstÃŒck >weistAuf> ax_lagebezeichnungMIThausnummer <JOIN> ax_lagebezeichnungkatalogeintrag
+  SELECT fm.gml_id AS fsgml,
          sm.gml_id AS stgml,                 -- Filter: gml_id der StraÃe
-      -- sm.gemeinde, sm.lage,               -- Gemeinde- und StraÃenschluessel als Filter?
          'm' AS fall                         -- SÃ€tze unterschieden: Mit HsNr
-    FROM alkis_beziehungen vm                -- Verbindung Mit
+    FROM ax_flurstueck fm                    -- FlurstÃŒck Mit
     JOIN ax_lagebezeichnungmithausnummer lm  -- Lage MIT
-      ON lm.gml_id=vm.beziehung_zu
-     AND vm.beziehungsart= 'weistAuf' 
-    JOIN ax_lagebezeichnungkatalogeintrag sm -- Ausnahmsweise mal direkt und nicht ÃŒber die "alkis_beziehungen"
-      ON lm.land=sm.land 
-     AND lm.regierungsbezirk=sm.regierungsbezirk 
-     AND lm.kreis=sm.kreis 
-     AND lm.gemeinde=sm.gemeinde 
-     AND lm.lage=sm.lage 
+      ON lm.gml_id = ANY (fm.weistauf)  
+    JOIN ax_lagebezeichnungkatalogeintrag sm
+      ON lm.land=sm.land AND lm.regierungsbezirk=sm.regierungsbezirk AND lm.kreis=sm.kreis  AND lm.gemeinde=sm.gemeinde AND lm.lage=sm.lage 
+   WHERE lm.endet IS NULL                    -- Verbinder nicht Historisch
  UNION
-  SELECT vo.beziehung_von AS fsgml,          -- Join auf gml_id aus ax_flurstÃŒck
+  -- FlurstÃŒck >zeigtAuf> ax_lagebezeichnungOHNEhausnummer <JOIN> ax_lagebezeichnungkatalogeintrag
+  SELECT fo.gml_id AS fsgml,
          so.gml_id AS stgml,                 -- Filter: gml_id der StraÃe
-      -- so.gemeinde, so.lage                -- Gemeinde- und StraÃenschluessel als Filter?
          'o' AS fall                         -- SÃ€tze unterschieden: Ohne HsNr
-    FROM alkis_beziehungen vo                -- Verbindung OHNE
+    FROM ax_flurstueck fo                    -- FlurstÃŒck OHNE
     JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE
-      ON lo.gml_id=vo.beziehung_zu
-     AND vo.beziehungsart= 'zeigtAuf' 
+      ON lo.gml_id = ANY (fo.zeigtauf)  
     JOIN ax_lagebezeichnungkatalogeintrag so -- StraÃe OHNE
-      ON lo.land=so.land 
-     AND lo.regierungsbezirk=so.regierungsbezirk 
-     AND lo.kreis=so.kreis 
-     AND lo.gemeinde=so.gemeinde 
-     AND lo.lage=so.lage;
+      ON lo.land=so.land AND lo.regierungsbezirk=so.regierungsbezirk AND lo.kreis=so.kreis AND lo.gemeinde=so.gemeinde AND lo.lage=so.lage
+   WHERE lo.endet IS NULL;                   -- Verbinder nicht Historisch
 
 COMMENT ON VIEW public.flst_an_strasse 
@@ -143,6 +133,6 @@
 -- Anwendungs-Beispiel: Abrechnung von AnliegerbeitrÃ€gen.
 
--- 2014-01-21: "Rechtsgemeinschaft" in den Datensatz aller anderen Namen
 --           DROP VIEW exp_csv;
+
 CREATE OR REPLACE VIEW exp_csv
 AS
@@ -164,5 +154,5 @@
   -- Buchungsstelle (GrundstÃŒck)
     s.laufendenummer                     AS bu_lfd,      -- BVNR
-    --s.zaehler, s.nenner,                                -- Anteil des GB am FS, einzelne Felder
+  --s.zaehler, s.nenner,                                 -- Anteil des GB am FS, einzelne Felder
     '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an')
     s.buchungsart,                                       -- verschlÃŒsselt
@@ -195,52 +185,33 @@
   JOIN doppelverbindung d               -- beide FÃ€lle ÃŒber Union-View: direkt und ÃŒber Recht von Buchung an Buchung
     ON d.fsgml = f.gml_id 
-
   JOIN ax_gemarkung g                   -- entschlÃŒsseln
     ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
-
   JOIN ax_buchungsstelle s              -- Buchungs-Stelle
     ON d.bsgml = s.gml_id 
   JOIN ax_buchungsstelle_buchungsart b  -- EnstschlÃŒsselung der Buchungsart
     ON s.buchungsart = b.wert 
-
-  JOIN alkis_beziehungen v3             -- Buchung --> Grundbuchblatt
-    ON s.gml_id = v3.beziehung_von AND v3.beziehungsart = 'istBestandteilVon'
-  JOIN ax_buchungsblatt  gb 
-    ON v3.beziehung_zu = gb.gml_id 
-
+  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
+    ON gb.gml_id = s.istbestandteilvon
   JOIN ax_buchungsblattbezirk z 
     ON gb.land=z.land AND gb.bezirk=z.bezirk 
-
-  JOIN alkis_beziehungen v4             -- Blatt  --> NamNum
-    ON v4.beziehung_zu = gb.gml_id AND v4.beziehungsart = 'istBestandteilVon'  
-  JOIN ax_namensnummer nn 
-    ON v4.beziehung_von = nn.gml_id
-
-  JOIN alkis_beziehungen v5             -- NamNum --> Person 
-   -- 2014-01-20: Mit LEFT ab hier werden auch NumNum-Zeilen mit "Beschreibung der Rechtsgemeinschaft" geliefert (ohne Person)
-    ON v5.beziehung_von = nn.gml_id AND v5.beziehungsart = 'benennt'
-  JOIN ax_person p
-    ON v5.beziehung_zu = p.gml_id
-
-  LEFT JOIN alkis_beziehungen v6        -- Person --> Anschrift
-    ON v6.beziehung_von = p.gml_id AND v6.beziehungsart = 'hat' 
+  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
+    ON gb.gml_id = nn.istbestandteilvon
+  JOIN ax_person p                      -- NamNum >benennt> Person 
+    ON p.gml_id = nn.benennt
   LEFT JOIN ax_anschrift a 
-    ON v6.beziehung_zu = a.gml_id
-
-  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery:
-
+    ON a.gml_id = ANY (p.hat)
+
+  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen:
   -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft".
   -- Kommt max. 1 mal je GB vor und hat keine Relation auf Person.
   LEFT JOIN
-   ( SELECT v7.beziehung_zu,
-            rg.artderrechtsgemeinschaft, 
-            rg.beschriebderrechtsgemeinschaft 
-       FROM ax_namensnummer rg 
-       JOIN alkis_beziehungen v7              -- Blatt  --> NamNum (Rechtsgemeinschaft) 
-         ON v7.beziehung_von = rg.gml_id
-      WHERE v7.beziehungsart = 'istBestandteilVon'
-        AND NOT rg.artderrechtsgemeinschaft IS NULL
-   ) AS rg                         -- Rechtsgemeinschaft
-   ON rg.beziehung_zu = gb.gml_id  -- zum GB
+   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft 
+       FROM ax_namensnummer r 
+       JOIN ax_buchungsblatt gr
+         ON r.istbestandteilvon = gr.gml_id  -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 
+      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
+   ON rg.gml_id = gb.gml_id  -- zum GB
+
+  WHERE f.endet IS NULL AND s.endet IS NULL and gb.endet IS NULL and nn.endet IS NULL AND p.endet IS NULL
 
   ORDER BY f.flurstueckskennzeichen, 
@@ -250,7 +221,4 @@
 COMMENT ON VIEW exp_csv 
  IS 'View fÃŒr einen CSV-Export aus der Buchauskunft mit alkisexport.php. Generelle Struktur. FÃŒr eine bestimmte gml_id noch den Filter setzen.';
-
-  GRANT SELECT ON TABLE exp_csv TO mb27;       -- User fÃŒr Auskunfts-Programme
---GRANT SELECT ON TABLE exp_csv TO alkisbuch;  -- User fÃŒr Auskunfts-Programme RLP-Demo
 
 
@@ -259,9 +227,12 @@
 -- Der Filter "WHERE stgml= " auf die "gml_id" von "ax_lagebezeichnungkatalogeintrag" sollte gesetzt werden
 -- um alle FlurstÃŒcke zu bekommen, die an einer StraÃe liegen.
+
 -- DROP           VIEW exp_csv_str;
+
 CREATE OR REPLACE VIEW exp_csv_str
 AS
  SELECT
-    l.stgml,                                             -- Filter: StraÃen-GML-ID
+    l.stgml,                                             -- Filter: gml_id aus "ax_lagebezeichnungkatalogeintrag"
+                                                         -- UNTERSCHIED zu exp_csv)
 
   -- FlurstÃŒck
@@ -281,5 +252,5 @@
   -- Buchungsstelle (GrundstÃŒck)
     s.laufendenummer                     AS bu_lfd,      -- BVNR
-    --s.zaehler, s.nenner,                                -- Anteil des GB am FS, einzelne Felder
+  --s.zaehler, s.nenner,                                 -- Anteil des GB am FS, einzelne Felder
     '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an')
     s.buchungsart,                                       -- verschlÃŒsselt
@@ -310,58 +281,37 @@
 
   FROM ax_flurstueck    f               -- FlurstÃŒck
-
   JOIN flst_an_strasse  l               -- Lage (hier zusÃ€tzlicher JOIN gegenÃŒber Version "exp_csv") 
 	ON l.fsgml = f.gml_id 
-
   JOIN doppelverbindung d               -- beide FÃ€lle ÃŒber Union-View: direkt und ÃŒber Recht von Buchung an Buchung
     ON d.fsgml = f.gml_id 
-
   JOIN ax_gemarkung g                   -- entschlÃŒsseln
     ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
-
   JOIN ax_buchungsstelle s              -- Buchungs-Stelle
     ON d.bsgml = s.gml_id 
   JOIN ax_buchungsstelle_buchungsart b  -- EnstschlÃŒsselung der Buchungsart
     ON s.buchungsart = b.wert 
-
-  JOIN alkis_beziehungen v3             -- Buchung --> Grundbuchblatt
-    ON s.gml_id = v3.beziehung_von AND v3.beziehungsart = 'istBestandteilVon'
-  JOIN ax_buchungsblatt  gb 
-    ON v3.beziehung_zu = gb.gml_id 
-
+  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
+    ON gb.gml_id = s.istbestandteilvon
   JOIN ax_buchungsblattbezirk z 
     ON gb.land=z.land AND gb.bezirk=z.bezirk 
-
-  JOIN alkis_beziehungen v4             -- Blatt  --> NamNum
-    ON v4.beziehung_zu = gb.gml_id AND v4.beziehungsart = 'istBestandteilVon'  
-  JOIN ax_namensnummer nn 
-    ON v4.beziehung_von = nn.gml_id
-
-  JOIN alkis_beziehungen v5             -- NamNum --> Person 
-   -- 2014-01-20: Mit LEFT ab hier werden auch NumNum-Zeilen mit "Beschreibung der Rechtsgemeinschaft" geliefert (ohne Person)
-    ON v5.beziehung_von = nn.gml_id AND v5.beziehungsart = 'benennt'
-  JOIN ax_person p
-    ON v5.beziehung_zu = p.gml_id
-
-  LEFT JOIN alkis_beziehungen v6        -- Person --> Anschrift
-    ON v6.beziehung_von = p.gml_id AND v6.beziehungsart = 'hat' 
+  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
+    ON gb.gml_id = nn.istbestandteilvon
+  JOIN ax_person p                      -- NamNum >benennt> Person 
+    ON p.gml_id = nn.benennt
   LEFT JOIN ax_anschrift a 
-    ON v6.beziehung_zu = a.gml_id
-
-  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery:
-
+    ON a.gml_id = ANY (p.hat)
+
+  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen:
   -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft".
   -- Kommt max. 1 mal je GB vor und hat keine Relation auf Person.
   LEFT JOIN
-   ( SELECT v7.beziehung_zu,
-            rg.artderrechtsgemeinschaft, 
-            rg.beschriebderrechtsgemeinschaft 
-       FROM ax_namensnummer rg 
-       JOIN alkis_beziehungen v7              -- Blatt  --> NamNum (Rechtsgemeinschaft) 
-         ON v7.beziehung_von = rg.gml_id
-      WHERE v7.beziehungsart = 'istBestandteilVon'
-        AND NOT rg.artderrechtsgemeinschaft IS NULL
-   ) AS rg                         -- Rechtsgemeinschaft
-   ON rg.beziehung_zu = gb.gml_id  -- zum GB
+   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft 
+       FROM ax_namensnummer r 
+       JOIN ax_buchungsblatt gr
+         ON r.istbestandteilvon = gr.gml_id  -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 
+      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
+   ON rg.gml_id = gb.gml_id  -- zum GB
+
+  WHERE f.endet IS NULL AND s.endet IS NULL and gb.endet IS NULL and nn.endet IS NULL AND p.endet IS NULL
 
   ORDER BY f.flurstueckskennzeichen, 
@@ -372,31 +322,31 @@
  IS 'View fÃŒr einen CSV-Export aus der Buchauskunft mit alkisexport.php. Liefert nur FlurstÃŒcke, die eine Lagebezeichnung MIT/OHNE Hausnummer haben. Dazu noch den Filter auf GML-ID der StraÃentabelle setzen.';
 
-  GRANT SELECT ON TABLE exp_csv_str TO mb27;       -- User fÃŒr Auskunfts-Programme
---GRANT SELECT ON TABLE exp_csv_str TO alkisbuch;  -- User fÃŒr Auskunfts-Programme RLP-Demo
-
-
--- Test-Ausgabe:
---   SELECT * FROM exp_csv_str WHERE stgml='DENW18AL000004Fl' LIMIT 40;
+-- Test: SELECT * FROM exp_csv_str WHERE stgml = 'DENW15AL100000Q8'; -- VeilchenstraÃe in LÃ¶hne
 
 
 -- Analyse: Kann es mehr als 1 "Rechtsgemeinschaft" zu einem GB-Blatt geben? 
 -- (Diese Frage stellte sich beim Design des View "exp_csv".)
--- Schritt 1: alle vorhandenen
+
+-- In umgekehrter Reihenfolge lÃ¶schen (AbhÃ€ngigkeiten).
+DROP VIEW IF EXISTS rechtsgemeinschaften_mehrfachzeilen;
+DROP VIEW IF EXISTS rechtsgemeinschaften_zaehlen;
+DROP VIEW IF EXISTS rechtsgemeinschaften_zum_grundbuch;
+
+-- Schritt 1: alle vorhandenen Rechtsgemeinschaften
+
 CREATE OR REPLACE VIEW rechtsgemeinschaften_zum_grundbuch
 AS
  SELECT
-     gb.gml_id,
+     gb.gml_id AS gb_gml,
      gb.bezirk,
      gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt,
-     nn.artderrechtsgemeinschaft,
+     nn.gml_id AS nn_gml, nn.beginnt, nn.laufendenummernachdin1421, 
+     nn.artderrechtsgemeinschaft AS adr,
      nn.beschriebderrechtsgemeinschaft
-  FROM ax_buchungsblatt  gb 
-  JOIN alkis_beziehungen v
-    ON v.beziehung_zu = gb.gml_id AND v.beziehungsart = 'istBestandteilVon'  
-  JOIN ax_namensnummer nn 
-    ON v.beziehung_von = nn.gml_id
+  FROM ax_buchungsblatt gb 
+  JOIN ax_namensnummer  nn  ON gb.gml_id = nn.istbestandteilvon
   WHERE NOT nn.artderrechtsgemeinschaft IS NULL
-  ORDER BY gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung,
-           nn.laufendenummernachdin1421;
+    AND gb.endet IS NULL AND nn.endet IS NULL -- Historie weglassen
+  ORDER BY gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, nn.laufendenummernachdin1421;
 
 COMMENT ON VIEW rechtsgemeinschaften_zum_grundbuch 
@@ -404,15 +354,16 @@
 
 -- Schritt 2: Wo gibt es mehrere zu einem GB-Blatt
+
 CREATE OR REPLACE VIEW rechtsgemeinschaften_zaehlen
 AS
- SELECT gml_id, bezirk, gb_blatt, count(artderrechtsgemeinschaft) AS anzahl
+ SELECT gb_gml, bezirk, gb_blatt, count(adr) AS anzahl
    FROM rechtsgemeinschaften_zum_grundbuch
-   GROUP BY gml_id, bezirk, gb_blatt
-   HAVING count(artderrechtsgemeinschaft) > 1
+   GROUP BY gb_gml, bezirk, gb_blatt
+   HAVING count(adr) > 1
    ORDER BY bezirk, gb_blatt;
 
 COMMENT ON VIEW rechtsgemeinschaften_zaehlen 
- IS 'Rechtsgemeinschaften zum Grundbuchblatt zaehlen. Anzeigen, wenn es mehrere gibt.';
--- Ja, kann es geben
+ IS 'Rechtsgemeinschaften zum Grundbuchblatt zÃ€hlen. Nur Anzeigen, wenn es mehrere gibt.';
+-- Ergebnis: Ja, kann es geben
 
 -- Schritt 3: alle vorhandenen Zeilen anzeigen zu den GB-BlÃ€ttern, bei denen es mehrere gibt.
@@ -421,13 +372,13 @@
  SELECT * 
    FROM rechtsgemeinschaften_zum_grundbuch
-  WHERE gml_id IN (SELECT gml_id FROM rechtsgemeinschaften_zaehlen);
+  WHERE gb_gml IN (SELECT gb_gml FROM rechtsgemeinschaften_zaehlen);
 
 COMMENT ON VIEW rechtsgemeinschaften_mehrfachzeilen 
  IS 'GrundbuchblÃ€tter mit mehr als einer Zeile Rechtsgemeinschaft.';
+
 -- Fazit:
 -- Man findet einige wenige identische oder Ã€hnlich aussehende Zeilen zu einem Grundbuch.
 -- Das sieht also eher nach einem PostNAS-FortfÃŒhrungsproblem aus, als nach unabhÃ€ngigen Zeilen.
 -- Wurde hier eine Relation nicht sauber gelÃ¶scht?
-
 
 -- Welche Karten-Typen ?
@@ -437,4 +388,5 @@
    FROM ap_pto p 
    WHERE p.art = 'HNR';
+
 COMMENT ON VIEW kartentypen_der_texte_fuer_hnr 
   IS 'Datenanalyse: Kartentypen in Tabelle ap_pto fÃŒr Hausnummern.';
@@ -460,4 +412,5 @@
      AND p.endet IS NULL
      AND p.art IN ('AOG_AUG','PNR');
+
 COMMENT ON VIEW ap_pto_muell 
  IS 'Datenanalyse: Beschriftungen aus "ap_pto", die NICHT dargestellt werden sollen.';
@@ -475,17 +428,31 @@
 -- fÃŒr die FlurstÃŒcke, die ohne eine manuelle Position kommen.
 
--- Diese FÃ€lle identifizieren
-CREATE OR REPLACE VIEW flstnr_ohne_position
+-- Diese FÃ€lle identifizieren und unterscheiden:
+
+CREATE OR REPLACE VIEW flstnr_mit_manueller_position
 AS 
  SELECT f.gml_id, 
         f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS such -- Suchstring fÃŒr ALKIS-Navigation nach FS-Kennzeichen
- FROM        ax_flurstueck     f 
-   LEFT JOIN alkis_beziehungen v  ON v.beziehung_zu = f.gml_id
- --LEFT JOIN ap_pto            p  ON p.gml_id       = v.beziehung_von
-  WHERE v.beziehungsart is NULL
-    AND f.endet IS NULL
---ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler
-  ;
-COMMENT ON VIEW flstnr_ohne_position IS 'Sicht fÃŒr Datenanalyse: FlurstÃŒcke ohne manuell gesetzte Position fÃŒr die PrÃ€sentation der FS-Nr';
+   FROM ax_flurstueck f 
+   JOIN ap_pto p ON f.gml_id = ANY( p.dientzurdarstellungvon) 
+  WHERE f.endet IS NULL;
+-- TIPP: mit zusÃ€tzlichem LIMIT auftrufen!
+
+COMMENT ON VIEW flstnr_mit_manueller_position 
+  IS 'Sicht fÃŒr Datenanalyse: FlurstÃŒcke MIT manuell gesetzter Position fÃŒr die PrÃ€sentation der FS-Nr';
+
+CREATE OR REPLACE VIEW flstnr_ohne_manuelle_position
+AS 
+ SELECT f.gml_id, 
+        f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS such -- Suchstring fÃŒr ALKIS-Navigation nach FS-Kennzeichen
+ FROM   ax_flurstueck f 
+   LEFT JOIN ap_pto p ON f.gml_id = ANY( p.dientzurdarstellungvon) 
+  WHERE p.gml_id IS NULL
+    AND f.endet IS NULL;
+-- TIPP: mit zusÃ€tzlichem LIMIT auftrufen!
+
+COMMENT ON VIEW flstnr_ohne_manuelle_position 
+  IS 'Sicht fÃŒr Datenanalyse: FlurstÃŒcke OHNE manuell gesetzte Position fÃŒr die PrÃ€sentation der FS-Nr';
+
 
 -- Umbruch im Label? z.B. "Schwimm-/nbecken"
@@ -495,6 +462,6 @@
  SELECT ogc_fid, schriftinhalt, art
    FROM ap_pto 
-  WHERE not schriftinhalt is null
-    AND schriftinhalt like '%/n%';
+  WHERE NOT schriftinhalt IS NULL AND schriftinhalt LIKE '%/n%';
+
 COMMENT ON VIEW texte_mit_umbruch 
  IS 'Sicht fÃŒr Datenanalyse: Vorkommen eines Umbruchs im Label-Text.';
@@ -508,4 +475,5 @@
    FROM ax_flurstueck f
    WHERE f.endet IS NULL;
+
 COMMENT ON VIEW flurstuecks_minmax 
  IS 'Sicht fÃŒr Datenanalyse: Maximale Ausdehnung von ax_flurstueck fuer EXTENT-Angabe im Mapfile.';
@@ -517,5 +485,5 @@
          r.wkb_geometry, 
          r.gml_id, 
-         r.artderfestlegung as adfkey, -- Art der Festlegung - Key 
+         r.artderfestlegung AS adfkey, -- Art der Festlegung - Key 
          r."name",                     -- Eigenname des Gebietes
          r.stelle,                     -- Stelle Key
@@ -528,7 +496,7 @@
       ON r.artderfestlegung = a.wert
     LEFT JOIN ax_dienststelle d
-      ON r.land   = d.land 
-     AND r.stelle = d.stelle 
+      ON r.land   = d.land  AND r.stelle = d.stelle 
   WHERE r.endet IS NULL AND d.endet IS NULL ;
+
 COMMENT ON VIEW baurecht 
  IS 'Datenanalyse: EnstschlÃŒsselte Felder zu einer FlÃ€che des Baurechts.';
@@ -542,6 +510,7 @@
   WHERE           endet IS NULL
   ORDER BY        land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer;
+
 COMMENT ON VIEW gemarkung_in_gemeinde 
- IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒck.';
+ IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒcken ermitteln.';
 
 
@@ -554,4 +523,5 @@
  WHERE    endet IS NULL
  GROUP BY st_geometrytype(wkb_geometry);
+
 COMMENT ON VIEW arten_von_flurstuecksgeometrie IS 'Datenanalyse: vorkommende Geometry-Typen in Tabelle ax_flurstueck.';
 
@@ -559,6 +529,6 @@
 -- A d r e s s e n 
 
--- Verschluesselte Lagebezeichnung (Strasse und Hausnummer) fuer eine Gemeinde
--- Schluessel der Gemeinde nach Bedarf anpassen!
+-- Verschluesselte Lagebezeichnung (Strasse und Hausnummer) fÃŒr eine Gemeinde
+-- SchlÃŒssel der Gemeinde im Filter (WHERE) nach Bedarf anpassen!
 CREATE OR REPLACE VIEW adressen_hausnummern
 AS
@@ -566,22 +536,16 @@
         s.bezeichnung AS strassenname, 
         g.bezeichnung AS gemeindename, 
-        l.land, 
-        l.regierungsbezirk, 
-        l.kreis, 
-        l.gemeinde, 
-        l.lage        AS strassenschluessel, 
-        l.hausnummer 
-    FROM   ax_lagebezeichnungmithausnummer l  
-    JOIN   ax_gemeinde g 
-      ON l.kreis=g.kreis 
-     AND l.gemeinde=g.gemeinde 
-    JOIN   ax_lagebezeichnungkatalogeintrag s 
-      ON l.kreis=s.kreis 
-     AND l.gemeinde=s.gemeinde 
-     AND l.lage = s.lage
-    WHERE l.gemeinde = 40;  -- "40" = Stadt Lage
+        l.land, l.regierungsbezirk, l.kreis, l.gemeinde, 
+        l.lage        AS strassenschluessel, l.hausnummer 
+    FROM ax_lagebezeichnungmithausnummer l  
+    JOIN ax_gemeinde g 
+      ON l.kreis=g.kreis AND l.gemeinde=g.gemeinde 
+    JOIN ax_lagebezeichnungkatalogeintrag s 
+      ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage = s.lage
+    WHERE l.gemeinde = '40';  -- '40' = Stadt Lage
+
 COMMENT ON VIEW adressen_hausnummern IS 'Datenanalyse: VerschlÃŒsselte Lagebezeichnung (StraÃe und Hausnummer) fÃŒr eine Gemeinde. SchlÃŒssel der Gemeinde nach Bedarf anpassen.';
 
--- Zuordnung dieser Adressen zu Flurstuecken
+-- Zuordnung Adressen zu Flurstuecken
 -- Schluessel der Gemeinde nach Bedarf anpassen!
 CREATE OR REPLACE VIEW adressen_zum_flurstueck
@@ -597,18 +561,10 @@
            l.hausnummer 
       FROM   ax_flurstueck f 
-      JOIN   alkis_beziehungen v 
-        ON f.gml_id=v.beziehung_von
-      JOIN   ax_lagebezeichnungmithausnummer l  
-        ON l.gml_id=v.beziehung_zu
-      JOIN   ax_gemeinde g 
-        ON l.kreis=g.kreis 
-       AND l.gemeinde=g.gemeinde 
-      JOIN   ax_lagebezeichnungkatalogeintrag s 
-        ON l.kreis=s.kreis 
-       AND l.gemeinde=s.gemeinde 
-       AND l.lage = s.lage
-     WHERE v.beziehungsart='weistAuf'
-       AND l.gemeinde = 40  -- "40" = Stadt Lage
+      JOIN   ax_lagebezeichnungmithausnummer l   ON  l.gml_id = ANY (f.weistauf)
+      JOIN   ax_gemeinde g   ON l.kreis=g.kreis  AND l.gemeinde=g.gemeinde 
+      JOIN   ax_lagebezeichnungkatalogeintrag s  ON  l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage = s.lage
+ --  WHERE l.gemeinde = '40'  -- ggf. Anpassen
      ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;
+
 COMMENT ON VIEW adressen_zum_flurstueck IS 'Datenanalyse: Zuordnung von Adressen zu Flurstuecken. SchlÃŒssel der Gemeinde nach Bedarf anpassen.';
 
@@ -620,40 +576,7 @@
     FROM ap_pto 
    WHERE not schriftinhalt is null 
-  ORDER BY art;
+   ORDER BY art;
+
 COMMENT ON VIEW beschriftung_was_kommt_vor IS 'Analyse der vorkommenden Kombinationen in ap_pto (Beschriftung)';
-
--- Ergebnis:
--- 2013: PostNAS 0.7  (aus 150,260,340)
--- ------------------
---	"AOG_AUG"				"zentrisch";"Basis"  - Schriftinhalkt immer nur "I" ?
---	"BWF"					"zentrisch";"Basis"/"zentrisch";"Mitte"
---	"BWF_ZUS"				"zentrisch";"Basis"
---	"FKT"					"zentrisch";"Basis"/"linksbÃŒndig";"Basis"/"zentrisch";"Mitte"
---	"FKT_TEXT"				"zentrisch";"Mitte"
---	"FreierText"			"zentrisch";"Basis"/"zentrisch";"Mitte"/"linksbÃŒndig";"Basis"
---	"FreierTextHHO"			"zentrisch";"Mitte"
---	"Friedhof"				"zentrisch";"Basis"
---	"Gewanne"				"zentrisch";"Basis"/"zentrisch";"Mitte"
---	"GFK"					"zentrisch";"Basis"/"zentrisch";"Mitte"
---	"HNR"					"zentrisch";"Basis"/"linksbÃŒndig";"Basis"/"zentrisch";"Mitte"  --> Hausnummer, group gebaeude
---	"HHO"					"zentrisch";"Mitte"  -- HHO = objekthoehe zu ax_gebaeude?
---	"NAM"					"zentrisch";"Basis"/"zentrisch";"Mitte"/"linksbÃŒndig";"Basis"
---	"SPO"					"zentrisch";"Basis"/
---	"Vorratsbehaelter"		"zentrisch";"Basis"
---	"WeitereHoehe"			"zentrisch";"Mitte"
---	"ZAE_NEN"				"zentrisch";"Basis"
---	"ZNM"					"zentrisch";"Basis"/"linksbÃŒndig";"Basis"
-
---* Layer "ap_pto_stra"
---                          hor ; ver / hor ; ver 
---	"BezKlassifizierungStrasse" "zent.";"Basis"	/ "linksbÃŒndig";"Basis"
---	"Platz"					"zentrisch";"Basis" / "zentrisch";"Mitte"
---	"Strasse"				"zentrisch";"Basis" / "zentrisch";"Mitte" / "linksbÃŒndig";"Basis"
---	"Weg"					"zentrisch";"Basis" / "zentrisch";"Mitte" / "linksbÃŒndig";"Basis"
-
---* geplanter layer "ap_pto_wasser"
---	"StehendesGewaesser"	"zentrisch";"Basis"
---	"Fliessgewaesser"		"zentrisch";"Basis"/"linksbÃŒndig";"Basis"
-
 
 -- FlurstÃŒcke eines EigentÃŒmers
@@ -662,11 +585,11 @@
 -- Dieser View liefert nur die (einfache) Buchungsart "GrundstÃŒck"
 -- Solche FÃ€lle wie "Erbbaurecht an GrundstÃŒck" oder "Wohnungs-/Teileigentum an aufgeteiltes GrundstÃŒck"
--- oder "Miteigentum an aufteteiltes GrundstÃŒck" fehlen in deisere Auswertung.
+-- oder "Miteigentum an aufgeteiltes GrundstÃŒck" fehlen in dieser Auswertung.
 -- Dazu siehe: "rechte_eines_eigentuemers".
 
--- Das Ergbenis ist gedacht fÃŒr den Export als CSV und Weiterverarbeitung mit einer Tabellenkalkulation
+-- Das Ergebnis ist gedacht fÃŒr den Export als CSV und Weiterverarbeitung mit einer Tabellenkalkulation
 -- oder einer einfachen Datenbank.
 
--- Auch ein Export als Shape ist moeglich (dafuer: geom hinzugefuegt, Feldnamen gekuerzt)
+-- Auch ein Export als Shape ist moeglich (dafÃŒr: geom hinzugefÃŒgt, Feldnamen gekÃŒrzt)
 -- Kommando:
 --  pgsql2shp -h localhost -p 5432 -f "/data/.../alkis_fs_gemeinde.shp"  [db-name]  public.flurstuecke_eines_eigentuemers
@@ -676,6 +599,4 @@
 -- Person <benennt< NamNum. >istBestandteilVon> Blatt <istBestandteilVon< Stelle >istGebucht> Flurstueck
 --                                              *-> Bezirk                *-> Buchungsart     *-> Gemarkung
-
--- Wobei ">xxx>" = JOIN ÃŒber die Verbindungs-Tabelle "alkis_beziehungen" mit der Beziehungsart "xxx".
 
 CREATE OR REPLACE VIEW flurstuecke_eines_eigentuemers 
@@ -700,25 +621,26 @@
       p.nachnameoderfirma          AS nachname --, 
    -- p.vorname 
-   FROM       ax_person              p
-        JOIN  alkis_beziehungen      bpn  ON bpn.beziehung_zu  = p.gml_id 
-        JOIN  ax_namensnummer        n    ON bpn.beziehung_von =n.gml_id 
-        JOIN  alkis_beziehungen      bng  ON n.gml_id = bng.beziehung_von 
-        JOIN  ax_buchungsblatt       g    ON bng.beziehung_zu = g.gml_id 
-        JOIN  ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk 
-        JOIN  alkis_beziehungen      bgs  ON bgs.beziehung_zu = g.gml_id 
-        JOIN  ax_buchungsstelle      s    ON s.gml_id = bgs.beziehung_von 
-        JOIN  ax_buchungsstelle_buchungsart art ON s.buchungsart = art.wert 
-        JOIN  alkis_beziehungen      bsf  ON bsf.beziehung_zu = s.gml_id
-        JOIN  ax_flurstueck          f    ON f.gml_id = bsf.beziehung_von 
-        JOIN  ax_gemarkung           k    ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer 
-   WHERE p.nachnameoderfirma LIKE 'Gemeinde %'   -- ** Bei Bedarf anpassen!
-     AND bpn.beziehungsart = 'benennt'           -- Namennummer     >> Person
-     AND bng.beziehungsart = 'istBestandteilVon' -- Namensnummer    >> Grundbuch
-     AND bgs.beziehungsart = 'istBestandteilVon' -- Buchungs-Stelle >> Grundbuch
-     AND bsf.beziehungsart = 'istGebucht'        -- Flurstueck      >> Buchungs-Stelle
+   FROM   ax_person              p
+     JOIN ax_namensnummer        n   -- Namennummer >benennt> Person
+       ON p.gml_id = n.benennt
+     JOIN ax_buchungsblatt       g   -- Namensnummer >istBestandteilVon> Grundbuch
+       ON n.istbestandteilvon = g.gml_id
+     JOIN ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk 
+     JOIN ax_buchungsstelle      s   -- Buchungs-Stelle >istBestandteilVon> Grundbuch
+       ON s.istbestandteilvon = g.gml_id
+     JOIN ax_buchungsstelle_buchungsart art 
+       ON s.buchungsart = art.wert 
+     JOIN ax_flurstueck          f  -- Flurstueck >istGebucht> Buchungs-Stelle
+       ON f.istgebucht = s.gml_id
+     JOIN ax_gemarkung           k    
+       ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer 
+   WHERE p.nachnameoderfirma LIKE 'Stadt %'   -- ** Bei Bedarf anpassen!
      AND p.endet IS NULL AND n.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL
      AND s.endet IS NULL AND f.endet IS NULL AND k.endet IS NULL
    ORDER BY k.bezeichnung, f.flurnummer, f.zaehler, f.nenner, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer;
-COMMENT ON VIEW flurstuecke_eines_eigentuemers IS 'Muster fÃŒr Export: Suchkriteriumnach Bedarf anpassen.';
+
+COMMENT ON VIEW flurstuecke_eines_eigentuemers 
+  IS 'Nur einfache Buchungsart "GrundstÃŒck". Muster fÃŒr Export: Suchkriterium nach Bedarf anpassen.';
+
 
 -- Rechte eines EigentÃŒmers
@@ -736,4 +658,5 @@
 -- Wobei ">xxx>" = JOIN ÃŒber die Verbindungs-Tabelle "alkis_beziehungen" mit der Beziehungsart "xxx".
 
+-- DROP VIEW rechte_eines_eigentuemers;
 CREATE OR REPLACE VIEW rechte_eines_eigentuemers 
 AS
@@ -753,5 +676,4 @@
       sh.zaehler || '/' || sh.nenner AS buchg_anteil_herr, 
       arth.bezeichner              AS buchgsa_herr, 
-      bss.beziehungsart            AS bez_art,
       artd.bezeichner              AS buchgsa_dien, 
       sd.laufendenummer            AS bvnr_dien, 
@@ -761,93 +683,29 @@
       p.nachnameoderfirma          AS nachname --,  
    -- p.vorname 
-   FROM       ax_person              p
-        JOIN  alkis_beziehungen      bpn  ON bpn.beziehung_zu  = p.gml_id 
-        JOIN  ax_namensnummer        n    ON bpn.beziehung_von =n.gml_id 
-        JOIN  alkis_beziehungen      bng  ON n.gml_id = bng.beziehung_von 
-        JOIN  ax_buchungsblatt       g    ON bng.beziehung_zu = g.gml_id 
-        JOIN  ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk 
-        JOIN  alkis_beziehungen      bgs  ON bgs.beziehung_zu = g.gml_id 
-        JOIN  ax_buchungsstelle      sh   ON sh.gml_id = bgs.beziehung_von  -- herrschende Buchung
-        JOIN  ax_buchungsstelle_buchungsart arth ON sh.buchungsart = arth.wert 
-        JOIN  alkis_beziehungen      bss  ON sh.gml_id = bss.beziehung_von
-        JOIN  ax_buchungsstelle      sd   ON sd.gml_id = bss.beziehung_zu   -- dienende Buchung
-        JOIN  ax_buchungsstelle_buchungsart artd ON sd.buchungsart = artd.wert 
-        JOIN  alkis_beziehungen      bsf  ON bsf.beziehung_zu = sd.gml_id
-        JOIN  ax_flurstueck          f    ON f.gml_id = bsf.beziehung_von 
-        JOIN  ax_gemarkung           k    ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer 
-   WHERE p.nachnameoderfirma LIKE 'Stadt %'   -- ** Bei Bedarf anpassen!
-     AND bpn.beziehungsart = 'benennt'           -- Namennummer     >> Person
-     AND bng.beziehungsart = 'istBestandteilVon' -- Namensnummer    >> Grundbuch
-     AND bgs.beziehungsart = 'istBestandteilVon' -- B-Stelle herr   >> Grundbuch
-     AND bss.beziehungsart in ('an','zu')        -- B-Stelle herr.  >> B-Stelle dien.
-     AND bsf.beziehungsart = 'istGebucht'        -- Flurstueck      >> B-Stelle dien
+   FROM   ax_person              p
+     JOIN ax_namensnummer        n    -- Namennummer >benennt> Person
+       ON p.gml_id = n.benennt
+     JOIN ax_buchungsblatt       g    -- Namensnummer >istBestandteilVon> Grundbuch
+       ON n.istBestandteilVon = g.gml_id
+     JOIN ax_buchungsblattbezirk b    
+       ON g.land = b.land AND g.bezirk = b.bezirk 
+     JOIN ax_buchungsstelle      sh  -- B-Stelle herr >istBestandteilVon> Grundbuch
+       ON sh.istbestandteilvon = g.gml_id  -- herrschende Buchung
+     JOIN ax_buchungsstelle_buchungsart arth 
+       ON sh.buchungsart = arth.wert 
+     JOIN ax_buchungsstelle      sd   -- B-Stelle herr.  >an/zu> B-Stelle dien.
+       ON (sd.gml_id =ANY(sh.an) OR sd.gml_id = ANY(sh.zu) )
+     JOIN ax_buchungsstelle_buchungsart artd 
+       ON sd.buchungsart = artd.wert
+     JOIN ax_flurstueck          f    -- Flurstueck  >istGebucht> B-Stelle dien     
+       ON f.istgebucht = sd.gml_id
+     JOIN ax_gemarkung           k    
+       ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer 
+   WHERE p.nachnameoderfirma LIKE 'Stadt %'   -- ** Bei Bedarf anpassen!    
      AND p.endet IS NULL AND n.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL
      AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND k.endet IS NULL
    ORDER BY k.bezeichnung, f.flurnummer, f.zaehler, f.nenner, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung, sh.laufendenummer;
+
 COMMENT ON VIEW rechte_eines_eigentuemers IS 'Muster fÃŒr Export: Suchkriteriumnach Bedarf anpassen. Dies ergÃ€nzt "flurstuecke_eines_eigentuemers" um die FÃ€lle mit besonderen Buchungen.';
-
--- Die 2 Views nur fuer Entwicklung: 
-
--- 	CREATE OR REPLACE VIEW beziehungen_redundant 
--- 	AS
--- 	 SELECT *
--- 	   FROM alkis_beziehungen AS bezalt
--- 	   WHERE EXISTS
--- 		   (SELECT ogc_fid
--- 			 FROM alkis_beziehungen AS bezneu
--- 			WHERE bezalt.beziehung_von = bezneu.beziehung_von
--- 			  AND bezalt.beziehung_zu  = bezneu.beziehung_zu
--- 			  AND bezalt.beziehungsart = bezneu.beziehungsart
--- 			  AND bezalt.ogc_fid       < bezneu.ogc_fid
--- 			);
--- 	COMMENT ON VIEW beziehungen_redundant IS 'Datenanalyse: alkis_beziehungen zu denen es eine identische neue Version gibt. Fehlersuche bei PostNAS-Trigger fÃŒr Replace.';
---
--- 	CREATE OR REPLACE VIEW beziehungen_redundant_in_delete
--- 	AS
--- 	SELECT *
--- 	 FROM alkis_beziehungen AS bezalt
--- 	 WHERE EXISTS
--- 		   (SELECT ogc_fid
--- 			 FROM alkis_beziehungen AS bezneu
--- 			WHERE bezalt.beziehung_von = bezneu.beziehung_von
--- 			  AND bezalt.beziehung_zu  = bezneu.beziehung_zu
--- 			  AND bezalt.beziehungsart = bezneu.beziehungsart
--- 			  AND bezalt.ogc_fid       < bezneu.ogc_fid
--- 			)
--- 		 -- mit dem Zusatz nur die Faelle aus dem letzten Durchlauf,
--- 		 -- die aktuell noch in der Delete-Tabelle stehen
--- 		 AND EXISTS
--- 			(SELECT ogc_fid
--- 			 FROM delete
--- 			 WHERE bezalt.beziehung_von = substr(featureid, 1, 16)
--- 				OR bezalt.beziehung_zu  = substr(featureid, 1, 16)
--- 			);
--- 	COMMENT ON VIEW beziehungen_redundant_in_delete IS 'Datenanalyse: alkis_beziehungen zu denen es eine identische neue Version gibt und wo das Objekt noch in der delete-Tabelle vorkommt. Fehlersuche bei PostNAS-Trigger fÃŒr Replace.';
-
-
--- Suche nach Fehler durch "Replace"
--- Wenn ax_flurstueck ÃŒber "replace" ausgetauscht wird und dabei gleichzeitig eine andere 
--- Buchungsstelle bekommt, dann bleibt die alte Buchungsstelle in den alkis_beziehungen.
--- Mail PostNAS Mailingliste von 2013-02-20
-CREATE OR REPLACE VIEW mehrfache_buchung_zu_fs
-AS
-  SELECT f.gml_id, count(b.ogc_fid) AS anzahl
-    FROM ax_flurstueck f
-    JOIN alkis_beziehungen b
-      ON f.gml_id = b.beziehung_von 
-  WHERE b.beziehungsart = 'istGebucht'
-  GROUP BY f.gml_id
-  HAVING count(b.ogc_fid) > 1;
-
--- Noch einfacher? - Auch ohne JOIN wird das selbe Ergebnis geliefert.
--- Doppelte Verweise zÃ€hlen ohne zu prÃŒfen, ob die gml_id in ax_flurstueck existiert.
---   SELECT b.beziehung_von, count(b.ogc_fid) AS anzahl
---     FROM alkis_beziehungen b
---    WHERE b.beziehungsart = 'istGebucht'
---   GROUP BY b.beziehung_von
---   HAVING count(b.ogc_fid) > 1;
-
-COMMENT ON VIEW mehrfache_buchung_zu_fs 
- IS 'Fehler: Nach replace von ax_flurtstueck mit einer neuen ax_buchungsstelle bleibt die alte Verbindung in alkis_beziehungen';
 
 
@@ -863,31 +721,25 @@
  SELECT l.gml_id, l.gemeinde, l.lage, l.hausnummer 
    FROM ax_gebaeude g
-   JOIN alkis_beziehungen b ON b.beziehung_von = g.gml_id
-   JOIN ax_lagebezeichnungmithausnummer l ON b.beziehung_zu = l.gml_id
-  WHERE b.beziehungsart = 'zeigtAuf'
+   JOIN ax_lagebezeichnungmithausnummer l  
+     ON l.gml_id = ANY(g.zeigtauf) 
   GROUP BY l.gml_id, l.gemeinde, l.lage, l.hausnummer
   HAVING count(g.gml_id) > 1;
 
 COMMENT ON VIEW fehler_hausnummer_mehrfach_verwendet
- IS 'Fehler: Nach replace von ax_lagebezeichnungmithausnummer mit einem neuen ax_gebaeude bleibt die alte Verbindung in alkis_beziehungen';
-
-
--- Der umgekehrt Fall ist erlaubt.
--- GebÃ€ude hat mehrere Nummern.
-
+ IS 'Fehlersuche: Nach replace von ax_lagebezeichnungmithausnummer mit einem neuen ax_gebaeude bleibt die alte Verbindung?';
+
+-- Ein GebÃ€ude hat mehrere Nummern.
 CREATE OR REPLACE VIEW adressen_zu_gebauede_mit_mehreren_hausnummern
 AS
- SELECT l.gml_id, l.gemeinde, l.lage, l.hausnummer -- Anzeige der Adressfelder
- FROM ax_gebaeude g1
-   JOIN alkis_beziehungen b ON b.beziehung_von = g1.gml_id
-   JOIN ax_lagebezeichnungmithausnummer l ON b.beziehung_zu = l.gml_id
-  WHERE b.beziehungsart = 'zeigtAuf' AND g1.gml_id IN -- Subquery sucht GebÃ€ude mit meherern Hausnummen
+ SELECT g1.gml_id, l1.gemeinde, l1.lage, l1.hausnummer -- Anzeige der Adressfelder
+   FROM ax_gebaeude g1
+   JOIN ax_lagebezeichnungmithausnummer l1 ON l1.gml_id = ANY(g1.zeigtauf)
+  WHERE g1.gml_id IN -- Subquery sucht GebÃ€ude mit meherern Hausnummen
    (SELECT g2.gml_id 
-    FROM ax_gebaeude g2
-    JOIN alkis_beziehungen b ON b.beziehung_von = g2.gml_id
-    JOIN ax_lagebezeichnungmithausnummer l ON b.beziehung_zu = l.gml_id
-   WHERE b.beziehungsart = 'zeigtAuf'
-   GROUP BY g2.gml_id 
-   HAVING count(l.gml_id) > 1);
+      FROM ax_gebaeude g2
+      JOIN ax_lagebezeichnungmithausnummer l2 ON l2.gml_id = ANY(g2.zeigtauf)
+     GROUP BY g2.gml_id 
+   HAVING count(l2.gml_id) > 1)
+   ORDER BY l1.gemeinde, l1.lage, l1.hausnummer;
 
 COMMENT ON VIEW adressen_zu_gebauede_mit_mehreren_hausnummern
@@ -911,43 +763,25 @@
 -- Analyse: FÃ€lle mit Erbbaurecht
 -- Benutzt den Baustein-View "doppelverbindung"
+
+--   +++ BESSER: analog doppelverbindung direkt codieren
+
 CREATE OR REPLACE VIEW erbbaurechte_suchen
 AS
-  SELECT f.gml_id, 
-  --f.flurstueckskennzeichen,
-    f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler AS fssuch, f.nenner
+  SELECT f.gml_id, f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler AS fssuch, f.nenner
    FROM ax_flurstueck    f 
    JOIN doppelverbindung d     -- beide FÃ€lle ÃŒber Union-View: direkt und ÃŒber Recht von BS an BS
      ON d.fsgml = f.gml_id 
+
+
+
    JOIN ax_buchungsstelle s    -- Buchungs-Stelle
      ON d.bsgml = s.gml_id 
    WHERE s.buchungsart = 2101;
 
+
+
+
 COMMENT ON VIEW erbbaurechte_suchen
  IS 'Suche nach FÃ€llen mit Buchungsrt 2101=Erbbaurecht';
-
-
--- Probleme mit der Trigger-Function "update_fields_beziehungen()"
--- Manchmal kann zu einer gml_id in "alkis_beziehungen" die zustÃ€ndige Tabelle nicht gefunden werden.
--- Nach Ãnderung der Trigger-Function am 10.12.2013 wird die Beziehung trotzdem eingetragen,
--- nur die Felder "von_typename" und "beginnt" bleiben leer.
--- 2014-01-31: Dieser Trigger wird nicht mehr verwendet.
-
-     -- Diese FÃ€lle anzeigen:
---     CREATE OR REPLACE VIEW beziehungsproblem_faelle
---    AS
---       SELECT *
---        FROM alkis_beziehungen
---        WHERE beginnt IS NULL;
---     COMMENT ON VIEW beziehungsproblem_faelle
---      IS 'Fehlersuche: Im Trigger "update_fields_beziehungen()" wurde das Objekt in seiner Tabelle nicht gefunden, darum kein "beginnt" in "alkis_beziehungen" eingetragen.';
-
-     -- Wie viele sind das?
---     CREATE OR REPLACE VIEW beziehungsproblem_zaehler
---     AS
---       SELECT count(ogc_fid) AS anzahl
---         FROM alkis_beziehungen
---        WHERE beginnt IS NULL;
---     COMMENT ON VIEW beziehungsproblem_faelle
---      IS 'Fehlersuche: Wie oft fehlt das beginnt-Feld in alkis_beziehungen?';
 
 
@@ -955,24 +789,22 @@
 -- Diese FÃ€lle fÃŒhren mÃ¶glicherweise zu unvollstÃ€ndiger Ausgabe beim Export "alle FlurstÃŒcke an einer StraÃe"
 -- weil nur Lagebezeichnung MIT und OHNE Hausnummer gesucht wird, aber keine gleich lautende Gewanne.
+
+-- DROP VIEW strasse_als_gewanne;
 CREATE OR REPLACE VIEW strasse_als_gewanne
 AS
   SELECT k.gemeinde, k.lage AS strassenschluessel,
-      -- k.bezeichnung      AS strassenname,
-         o.unverschluesselt AS gewanne,
-         count(fo.gml_id) AS anzahl_fs_gewanne
+         o.unverschluesselt AS gewanne_und_strasse, -- = k.bezeichnung = StraÃenname
+         count(f.gml_id) AS anzahl_fs_gewanne
   FROM ax_lagebezeichnungkatalogeintrag k   -- StraÃentabelle
   JOIN ax_lagebezeichnungohnehausnummer o   -- Gewanne
     ON k.bezeichnung = o.unverschluesselt   -- Gleiche Namen
-  -- Join Gewanne auf FlurstÃŒcke um nur solche FÃ€lle anzuzeigen, die verwendet werden 
+  -- Join Gewanne auf FlurstÃŒcke um nur solche FÃ€lle anzuzeigen, die hier verwendet werden.
   -- UND die auch in der gleichen Gemeinde liegen.
   -- Sonst kÃ¶nnte zufÃ€llige Namensgleichheiten aus verschiedenen Gemeinden geben. 
-  JOIN alkis_beziehungen vo
-    ON o.gml_id=vo.beziehung_zu AND vo.beziehungsart= 'zeigtAuf' 
-  JOIN ax_flurstueck fo
-    ON fo.gml_id=vo.beziehung_von
- WHERE fo.gemeinde = k.gemeinde  -- Gewanne wird fÃŒr ein Flst. in gleicher Gemeinde verwendet, wie der StraÃenschlÃŒssel
-  GROUP BY k.gemeinde, k.lage, o.unverschluesselt --, k.bezeichnung
-  ORDER BY k.gemeinde, k.lage, o.unverschluesselt --, k.bezeichnung
-  ;
+  JOIN ax_flurstueck f               --  Flurst. >zeigtAuf>  Lage
+    ON o.gml_id = ANY(f.zeigtauf)  
+ WHERE f.gemeinde = k.gemeinde  -- Gewanne wird fÃŒr ein Flst. in gleicher Gemeinde verwendet, wie der StraÃenschlÃŒssel
+  GROUP BY k.gemeinde, k.lage, o.unverschluesselt
+  ORDER BY k.gemeinde, k.lage, o.unverschluesselt;
 
 COMMENT ON VIEW strasse_als_gewanne
@@ -982,19 +814,16 @@
 -- Wie zuvor, aber die FlurstÃŒcke werden hier nicht nur gezÃ€hlt sondern auch aufgelistet.
 -- das Format des FlusrtÃŒckskennzeichens kann in die Mapbender-Navigation eingegeben werden.
+
 CREATE OR REPLACE VIEW strasse_als_gewanne_flst
 AS
-  SELECT -- fo.gml_id, 
-         fo.gemarkungsnummer || '-' || fo.flurnummer || '-' || fo.zaehler::text || COALESCE ('/' || fo.nenner::text, '') AS flstkennz,
+  SELECT fo.gemarkungsnummer || '-' || fo.flurnummer || '-' || fo.zaehler::text || COALESCE ('/' || fo.nenner::text, '') AS flstkennz,
          k.gemeinde, 
          o.unverschluesselt AS gewanne,
-      -- k.bezeichnung AS strassenname,
          k.lage        -- AS strassen_schluessel
   FROM ax_lagebezeichnungkatalogeintrag k   -- StraÃentabelle
   JOIN ax_lagebezeichnungohnehausnummer o   -- Gewanne
     ON k.bezeichnung = o.unverschluesselt   -- Gleiche Namen 
-  JOIN alkis_beziehungen vo
-    ON o.gml_id=vo.beziehung_zu AND vo.beziehungsart= 'zeigtAuf' 
-  JOIN ax_flurstueck fo
-    ON fo.gml_id=vo.beziehung_von
+   JOIN ax_flurstueck fo                    --  Flurst. >zeigtAuf>  Lage
+    ON o.gml_id = ANY(fo.zeigtauf)  
  WHERE fo.gemeinde = k.gemeinde  -- Gewanne wird fÃŒr ein Flst. in gleicher Gemeinde verwendet, wie der StraÃenschlÃŒssel
   ORDER BY fo.gemarkungsnummer, fo.flurnummer, fo.zaehler, k.gemeinde, k.bezeichnung;
@@ -1004,5 +833,4 @@
 
 
-
 -- Suche nach Fehlern in den Daten, die moeglicherweise aus der Migration stammen und
 -- im Rahmen der Nachmigration noch korrigiert werden muessen.
@@ -1011,21 +839,175 @@
 AS
   SELECT DISTINCT p.gml_id, p.nachnameoderfirma, p.vorname, 
-        a1.ort_post, a1.strasse AS strasse1, a2.strasse AS strasse2, a1.hausnummer
-     -- , b1.import_id AS import1, b2.import_id AS import2
-    FROM ax_person         p
-    JOIN alkis_beziehungen b1 ON b1.beziehung_von=p.gml_id
-    JOIN ax_anschrift      a1 ON a1.gml_id=b1.beziehung_zu
-    JOIN alkis_beziehungen b2 ON b2.beziehung_von=p.gml_id
-    JOIN ax_anschrift      a2 ON a2.gml_id=b2.beziehung_zu
-    WHERE b1.beziehungsart='hat' 
-      AND b2.beziehungsart='hat'
-      AND a1.gml_id    <>  a2.gml_id
-      AND a1.ort_post   =  a2.ort_post
-      AND a1.strasse    like trim(a2.strasse, '.') || '%'
-      AND a1.hausnummer =  a2.hausnummer
+         a1.ort_post, a1.strasse AS strasse1, a2.strasse AS strasse2, a1.hausnummer
+    FROM ax_person    p
+    JOIN ax_anschrift a1 ON a1.gml_id = ANY(p.hat)
+    JOIN ax_anschrift a2 ON a2.gml_id = ANY(p.hat)
+   WHERE a1.gml_id <> a2.gml_id
+      AND a1.ort_post =  a2.ort_post
+      AND a1.strasse like trim(a2.strasse, '.') || '%'
+      AND a1.hausnummer = a2.hausnummer
+      AND p.endet IS NULL AND a1.endet IS NULL and a2.endet IS NULL
     ORDER BY p.nachnameoderfirma, p.vorname;
 
 COMMENT ON VIEW nachmigration_aehnliche_anschriften
- IS 'Zu einer Person gibt es mehrere Anschriften, die in Ort und Hausnummer identisch sind und beim StraÃennemen entweder auch identisch sind oder eine AbkÃŒrzung mit Punkt enthalten.';
+ IS 'Nachmigration? Zu einer Person gibt es mehrere Anschriften, die in Ort und Hausnummer identisch sind und beim StraÃennemen entweder auch identisch sind oder eine AbkÃŒrzung mit Punkt enthalten.';
+
+
+-- Bevor alle inversen Relationen im Schema auskommentiert werden,
+-- noch mal in die Datenbank schauen, ob nicht doch eine davon gefÃŒllt ist.
+-- Nach dem Entfernen dieser Spalten wird der View nicht mehr funktionieren 
+-- und wird darum ebenfalls auskommentiert.
+
+/*
+CREATE OR REPLACE VIEW nicht_gefuellte_inverse_relationen_spalten
+AS
+  SELECT 'ax_flurstueck' AS tabelle, 'beziehtsichaufflurstueck' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_flurstueck WHERE NOT beziehtsichaufflurstueck IS NULL
+UNION
+  SELECT 'ax_flurstueck' AS tabelle, 'gehoertanteiligzu' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_flurstueck WHERE NOT gehoertanteiligzu IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungohnehausnummer' AS tabelle, 'beschreibt' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungohnehausnummer WHERE NOT beschreibt IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungohnehausnummer' AS tabelle, 'gehoertzu' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungohnehausnummer WHERE NOT gehoertzu IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'hat' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungmithausnummer WHERE NOT hat IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'beziehtsichauf' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungmithausnummer WHERE NOT beziehtsichauf IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'beziehtsichauchauf' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungmithausnummer WHERE NOT beziehtsichauchauf IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'gehoertzu' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungmithausnummer WHERE NOT gehoertzu IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'weistzum' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungmithausnummer WHERE NOT weistzum IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungmitpseudonummer' AS tabelle, 'gehoertzu' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungmitpseudonummer WHERE NOT gehoertzu IS NULL
+--UNION
+--  -- ist gefÃŒllt!
+--  SELECT 'ax_georeferenziertegebaeudeadresse' AS tabelle, 'hatauch' AS spalte, 
+--     count(gml_id) AS anzahl_eintraege
+--  FROM ax_georeferenziertegebaeudeadresse WHERE NOT hatauch IS NULL
+UNION
+  SELECT 'ax_sicherungspunkt' AS tabelle, 'beziehtsichauf' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_sicherungspunkt WHERE NOT beziehtsichauf IS NULL
+UNION
+  SELECT 'ax_sicherungspunkt' AS tabelle, 'gehoertzu' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_sicherungspunkt WHERE NOT gehoertzu IS NULL
+-- Punktort: ist gefÃŒllt (nicht invers)
+--UNION
+--  SELECT 'ax_punktortag' AS tabelle, 'istteilvon' AS spalte, 
+--     count(gml_id) AS anzahl_eintraege
+--  FROM ax_punktortag WHERE NOT istteilvon IS NULL
+--UNION
+--  SELECT 'ax_punktortau' AS tabelle, 'istteilvon' AS spalte, 
+--     count(gml_id) AS anzahl_eintraege
+--  FROM ax_punktortau WHERE NOT istteilvon IS NULL
+--UNION
+--  SELECT 'ax_punktortta' AS tabelle, 'istteilvon' AS spalte, 
+--     count(gml_id) AS anzahl_eintraege
+--  FROM ax_punktortta WHERE NOT istteilvon IS NULL
+UNION
+  SELECT 'ax_person' AS tabelle, 'weistauf' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_person WHERE NOT weistauf IS NULL
+UNION
+  SELECT 'ax_person' AS tabelle, 'uebtaus' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_person WHERE NOT uebtaus IS NULL
+UNION
+  SELECT 'ax_person' AS tabelle, 'besitzt' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_person WHERE NOT besitzt IS NULL
+UNION
+  SELECT 'ax_person' AS tabelle, 'zeigtauf' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_person WHERE NOT zeigtauf IS NULL
+UNION
+  SELECT 'ax_person' AS tabelle, 'benennt' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_person WHERE NOT benennt IS NULL
+UNION
+  SELECT 'ax_anschrift' AS tabelle, 'beziehtsichauf' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_anschrift WHERE NOT beziehtsichauf IS NULL
+UNION
+  SELECT 'ax_anschrift' AS tabelle, 'gehoertzu' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_anschrift WHERE NOT gehoertzu IS NULL
+UNION
+  SELECT 'ax_verwaltung' AS tabelle, 'beziehtsichauf' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_verwaltung WHERE NOT beziehtsichauf IS NULL
+UNION
+  SELECT 'ax_vertretung' AS tabelle, 'vertritt' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_vertretung WHERE NOT vertritt IS NULL
+UNION
+  SELECT 'ax_buchungsblatt' AS tabelle, 'bestehtaus' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_buchungsblatt WHERE NOT bestehtaus IS NULL
+UNION
+  SELECT 'ax_buchungsstelle' AS tabelle, 'grundstueckbestehtaus' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_buchungsstelle WHERE NOT grundstueckbestehtaus IS NULL
+UNION
+  SELECT 'ax_gebaeude' AS tabelle, 'haengtzusammenmit' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_gebaeude WHERE NOT haengtzusammenmit IS NULL
+;
+
+COMMENT ON VIEW nicht_gefuellte_relationen_spalten
+ IS 'ÃberprÃŒfung auf nicht gefÃŒllte Inverse Relationen. 
+Funktioniert nur, solange diese nicht entfernt wurden.';
+
+*/
+
+-- Daraus resultiert der folgende Patch fÃŒr bereits angelegte Datenbanken:
+/*
+	ALTER TABLE ax_flurstueck                    DROP COLUMN beziehtsichaufflurstueck;
+	ALTER TABLE ax_flurstueck                    DROP COLUMN gehoertanteiligzu;
+	ALTER TABLE ax_lagebezeichnungohnehausnummer DROP COLUMN beschreibt;
+	ALTER TABLE ax_lagebezeichnungohnehausnummer DROP COLUMN gehoertzu;
+	ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN hat;
+	ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN beziehtsichauf;
+	ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN beziehtsichauchauf;
+	ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN gehoertzu;
+	ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN weistzum;
+	ALTER TABLE ax_lagebezeichnungmitpseudonummer DROP COLUMN gehoertzu;
+	ALTER TABLE ax_sicherungspunkt               DROP COLUMN beziehtsichauf;
+	ALTER TABLE ax_sicherungspunkt               DROP COLUMN gehoertzu;
+	ALTER TABLE ax_person                        DROP COLUMN weistauf;
+	ALTER TABLE ax_person                        DROP COLUMN uebtaus;
+	ALTER TABLE ax_person                        DROP COLUMN besitzt;
+	ALTER TABLE ax_person                        DROP COLUMN zeigtauf;
+	ALTER TABLE ax_person                        DROP COLUMN benennt;
+	ALTER TABLE ax_anschrift                     DROP COLUMN beziehtsichauf;
+	ALTER TABLE ax_anschrift                     DROP COLUMN gehoertzu;
+	ALTER TABLE ax_verwaltung                    DROP COLUMN beziehtsichauf;
+	ALTER TABLE ax_vertretung                    DROP COLUMN vertritt;
+	ALTER TABLE ax_buchungsblatt                 DROP COLUMN bestehtaus;
+	ALTER TABLE ax_buchungsstelle                DROP COLUMN grundstueckbestehtaus;
+	ALTER TABLE ax_gebaeude                      DROP COLUMN haengtzusammenmit;
+*/
 
 
