Zum Inhalt springen

DDM_ENUM_SET / DDM_ENUM_VALUE

Status: Entwurf · Spec-Kandidat: ja

Zweck

Wiederverwendbare, konfigurierbare Codelisten für Attribute mit data_type IN ('enum','multi_enum'). Trennt Bedeutung (label) und Sortierung von der fachlichen Identität (key).

DDM_ENUM_SET

FeldTypPflichtHinweise
iduuidjaPK
keytextjaglobal eindeutig, Format ^[a-z][a-z0-9_]*$
nametextja
descriptiontextnein
is_activebooleanjadefault true
metadatajsonbjadefault '{}'
created_at / updated_at / created_by / updated_byStandardfelder

Constraints: enum_set_key_format_chk, enum_set_metadata_is_object_chk, Unique key.

DDM_ENUM_VALUE

FeldTypPflichtHinweise
iduuidjaPK
enum_set_iduuidjaFK → DDM_ENUM_SET (RESTRICT)
keytextjaFormat ^[a-z][a-z0-9_]*$, eindeutig je enum_set_id
labeltextjaAnzeigename
descriptiontextnein
sort_orderintegerjadefault 100
is_activebooleanjadefault true
metadatajsonbjadefault '{}'
created_at / updated_at / created_by / updated_byStandardfelder

Constraints: enum_value_key_format_chk, enum_value_metadata_is_object_chk, enum_value_unique_per_set_uk (enum_set_id, key).

Verhalten

  • Speicherung in DDM_ENTITY.attributes: ein Enum-Wert wird als String mit dem DDM_ENUM_VALUE.key abgelegt; multi_enum als JSON-Array von keys.
  • Service-Layer prüft beim Schreiben, dass alle übergebenen keys im zugehörigen Enum-Set existieren und is_active = true sind.
  • is_active = false darf bestehende Werte nicht invalidieren (historische Daten bleiben gültig), neuer Eintrag mit deaktiviertem key wird abgelehnt.
  • Reporting-Views können label über JOIN auf DDM_ENUM_VALUE ergänzen.

Offen

  • Locale: aktuell nur ein label. Mehrsprachigkeit muss separat spezifiziert werden (z. B. metadata.labels).
  • Migration bei Umbenennung eines DDM_ENUM_VALUE.key: derzeit ist key nicht read-only. Auswirkung auf bestehende DDM_ENTITY.attributes-Werte ist nicht spezifiziert.

Verwandte Dokumente