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.
- 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.