Shop Projekt - Dokumentation

Shop LDM

Teil 04.2: Navigation Views

Dieses Modul enthält Views für eine stabile navUID-Navigation mit Lazy-Loading-Unterstützung.

Die Views ermöglichen eine hierarchische Navigation durch Kategorien, Jahre und Sets, optimiert für dynamisches Laden von Unterknoten.

🗺️ Stufe 0 | 📚 Aktuell | 📟 2026 06 15 | 📍 Datenbank - Navigation Views

  • v_nav_category_root: Alle Level-0 Kategorien als Navigations-Wurzeln.
  • v_nav_category_children: Direkte Kinder einer Kategorie für Lazy-Loading.
  • v_nav_years_by_category: Alle Jahres-Gruppen für eine Kategorie.
  • v_nav_sets_by_year_category: Sets einer bestimmten Kategorie + Jahr.
  • v_nav_count_children: Schnelle Prüfung ob ein Knoten Kinder hat.
  • v_nav_sets_by_category: Alle Sets einer Kategorie (flach, sortiert).

Dieses Modul ist die Grundlage für die dynamische Navigation im Shop-Bereich.

v_nav_category_root View

Zweck: Alle Level-0 Kategorien als Navigations-Wurzeln.

Felder:
    - cat_ID           -- Kategorie-ID
    - cat_key          -- Eindeutiger Kategorie-Schlüssel
    - cat_status       -- Status (A=Active)
    - cat_node_type    -- Knotentyp ('category')
    - cat_type         -- Kategorie-Typ
    - cat_level_actual -- 0 (konstant für Wurzeln)

Quelle:
    - FROM tb_category c
    - WHERE c.cat_level = 0 AND c.cat_status = 'A'

Sortierung: ORDER BY c.cat_tree_num ASC, c.cat_key ASC

Verwendung: Erste Navigationsebene im Shop.

v_nav_category_children View

Zweck: Direkte Kinder einer Kategorie (Level > 0) für Lazy-Loading von Unterkategorien.

Felder:
    - parent_cat_ID    -- Eltern-Kategorie-ID
    - cat_ID           -- Kind-Kategorie-ID
    - cat_key          -- Kategorie-Schlüssel
    - cat_status       -- Status
    - cat_node_type    -- Knotentyp
    - cat_type         -- Kategorie-Typ
    - sort_order       -- Sortierreihenfolge
    - relation_type    -- 'tree' oder 'ref'

Quelle:
    - FROM tb_cat_hierarchy h
    - JOIN tb_category c ON h.child_cat_ID = c.cat_ID
    - WHERE c.cat_status = 'A' AND h.relation_type IN ('tree', 'ref')

Sortierung: ORDER BY h.sort_order ASC, c.cat_key ASC

Verwendung: Dynamisches Laden von Unterkategorien.

v_nav_years_by_category View

Zweck: Alle Jahres-Gruppen für eine Kategorie (aus Set-Release-Daten).

Felder:
    - cat_ID           -- Kategorie-ID
    - release_year     -- Jahr der Veröffentlichung
    - set_count        -- Anzahl Sets in diesem Jahr

Quelle:
    - FROM tb_set s
    - WHERE s.set_status = 'A' AND s.set_year IS NOT NULL
    - GROUP BY s.cat_ID, s.set_year

Sortierung: ORDER BY release_year DESC

Verwendung: Jahr-Knoten in der Navigation.

v_nav_sets_by_year_category View

Zweck: Sets einer bestimmten Kategorie + Jahr.

Felder:
    - cat_ID           -- Kategorie-ID
    - release_year     -- Jahr der Veröffentlichung
    - set_ID           -- Set-ID
    - set_name         -- Set-Name
    - set_code         -- Set-Code
    - set_status       -- Status

Quelle:
    - FROM tb_set s
    - WHERE s.set_status = 'A' AND s.set_year IS NOT NULL

Sortierung: ORDER BY s.set_year DESC, s.set_name ASC

Verwendung: Set-Knoten in der Navigation unterhalb von Jahr-Knoten.

v_nav_count_children View

Zweck: Schnelle Prüfung ob ein Knoten Kinder hat (für has_children Flag).

Felder:
    - parent_id        -- ID des Elternknotens
    - child_count      -- Anzahl der Kindknoten
    - node_type        -- Knotentyp ('category' oder 'year')

Quelle (UNION ALL):
    Teil 1 - Kategorie-Kinder:
        SELECT h.parent_cat_ID, 1 AS child_count, 'category' AS node_type
        FROM tb_cat_hierarchy h
        JOIN tb_category c ON h.child_cat_ID = c.cat_ID
        WHERE h.relation_type IN ('tree', 'ref') AND c.cat_status = 'A'
    Teil 2 - Jahr-Kinder:
        SELECT s.cat_ID, 1 AS child_count, 'year' AS node_type
        FROM tb_set s
        WHERE s.set_status = 'A' AND s.set_year IS NOT NULL
        GROUP BY s.cat_ID, s.set_year

Gruppierung: GROUP BY parent_id, node_type

Verwendung: UI-Flag ob ein Knoten expandierbar ist.

v_nav_sets_by_category View

Zweck: Alle Sets einer Kategorie (flach, sortiert nach Release).

Felder:
    - cat_ID           -- Kategorie-ID
    - set_ID           -- Set-ID
    - set_name         -- Set-Name
    - set_code         -- Set-Code
    - set_status       -- Status
    - first_release    -- Erstes Veröffentlichungsjahr

Quelle:
    - FROM tb_set s
    - WHERE s.set_status = 'A' AND s.set_year IS NOT NULL

Sortierung: ORDER BY first_release DESC, s.set_name ASC

Verwendung: Alternative flache Set-Liste ohne Jahres-Gruppierung.