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
- Tableiste auf der Entitätenliste filtert nach
entity_type. + legt eine Entität des aktuellen Tabs an. group_codes TEXT[]aufentity_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.parent_codebleibt Vererbung (Layer→Layer, Datensatz→Datensatz) und Gruppen-Nesting (Gruppe→Gruppe). Group→Layer überparent_codeentfällt; bestehende Kanten wandern ingroup_codes.- 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.
- 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/ tenant0013. - API:
group_codesaufPOST/PUT/entity-kinds. Nur Blatt-Layer in Blatt-Gruppen; fremde Codes, Eltern-Layer oder Eltern-Gruppen → 400. Kind anlegen leertgroup_codesam Eltern-Layer. - ADR-0045 Punkt 2: Group→Layer liegt in
group_codes.