Skip to content

ADR-0048: Layer belong to many groups

  • Status: accepted
  • Datum: 2026-09-02
  • Phase: Web Schema-CMS
  • Bezug: ADR-0045

Kontext

Die Entitätenliste mischte Datensatz, Gruppe und Layer. Layer hingen über parent_code an genau einer Gruppe. Nutzer brauchen eine Tableiste (Datensatz / Gruppe / Layer) und wollen einen Layer mehreren Gruppen zuordnen — Suche, Chips, unter der Gruppe ausgegraut.

Entscheidung

  1. Tableiste auf der Entitätenliste filtert nach entity_type. + legt eine Entität des aktuellen Tabs an.
  2. group_codes TEXT[] auf entity_kinds (und Checkout-Kopie). Nur Blatt-Layer (kein Elternteil mit Kindern) und nur Blatt-Gruppen (kein Ordner mit Untergruppen). Reihenfolge in der API ist frei; die UI sortiert nach Bezeichnung. Ein Layer, der ein Kind bekommt, verliert die Gruppenzuordnung.
  3. parent_code bleibt Vererbung (Layer→Layer, Datensatz→Datensatz) und Gruppen-Nesting (Gruppe→Gruppe). Group→Layer über parent_code entfällt; bestehende Kanten wandern in group_codes.
  4. Gruppe-Tab: zugewiesene Layer stehen ausgegraut unter der Gruppe. Klick öffnet nur den Entitätsdialog (Gruppen hinzufügen/entfernen). Kein Zu den Feldern, kein / × auf der Kopie.
  5. Layer-Tab: der Layer bleibt die Stammzeile (Felder, Kind anlegen, ✎ / ×).
Gate Recommendation Why it fits here Rejected alternative and why
Speichern TEXT[] auf der Kind-Zeile Katalog ist klein; Checkout kopiert die Zeile Junction-Tabelle — zweite Overlay-Tabelle und Apply-Merge für Dutzende Zeilen
Kante group_codes, nicht parent_code Mehrere Gruppen; Vererbung bleibt ein Elternteil Zweites group_code — immer noch 1:1
UI Tabs + Chips mit Suche QGIS-Legende und Schema-Liste bleiben getrennt Eine gemischte Liste — Layer und Ordner konkurrieren

Begründung (für dieses Setup)

QGIS zeigt einen Layer in der Legende unter Gruppen; der Layer selbst ist eine Ebene mit Feldern. Mehrfachzuordnung ist Tagging, keine zweite Vererbung. Ein Array an der Kind-Zeile skaliert mit der Kataloggröße, nicht mit GIS-Features.

Verworfene Alternativen

Alternative Warum verworfen
Ein parent_code (ADR-0045) Plus und mehrere Chips brauchen n Gruppen
Junction kind_group_memberships Korrekt normalisiert, aber Checkout-Overlay und Apply verdoppeln sich ohne Mengenproblem
Layer nur im Gruppe-Tab anlegen Felder und Vererbung gehören zum Layer-Tab

Folgen

  • Alembic public 0025 / tenant 0013.
  • API: group_codes auf POST/PUT /entity-kinds. Nur Blatt-Layer in Blatt-Gruppen; fremde Codes, Eltern-Layer oder Eltern-Gruppen → 400. Kind anlegen leert group_codes am Eltern-Layer.
  • ADR-0045 Punkt 2: Group→Layer liegt in group_codes.