Shop Projekt - Dokumentation
Shop LDM
Teil 02: Benutzer und Rechte
Dieses Modul bildet das Benutzer- und Rechte-Management des Shops ab.
Es unterscheidet zwischen Privat- und Geschäftskunden sowie internen Rollen (z. B. Admin, Support, Moderator).
Zusätzlich enthält es ein Audit- und Validierungssystem, um Änderungen im Shop nachvollziehbar zu machen und Freiwilligen ein Belohnungssystem bereitzustellen.
- User_role: Rollen der Benutzer das mit Rechten verknüpft sind.
- User_status: Status der Benutzer im System.
- Benutzer: Der konkrete Benutzer im System.
- User_attribut: Attribute der Benutzer im System.
- Adresse: Adressen der Benutzer im System.
- Target: Visiert eine Ziel Tabelle an für eine action eines Benutzers.
- Action: Definiert die Aktion die ein Benutzer auf eine Target Tabelle ausführt.
- Manager_rights: Verknüpft einen Benutzer mit einem Target und einer Action und definiert die Rechte.
- Manager_log: Logt alle Änderungen eines Benutzers an einem Target mit einer Action.
- Review: Ermöglicht die Bewertung von Änderungen durch andere Benutzer.
- Validation: Validiert die Änderungen durch Reviews und gibt Feedback an den Benutzer zurück.
- Reward_log: Logt alle Belohnungen für einen Benutzer basierend auf seinen Aktionen und deren Bewertungen.
Damit bietet dieses Modul die Grundlage für Sicherheit, Moderation und Community-Management. Es stellt sicher, dass alle Änderungen im System nachvollziehbar sind und gleichzeitig positive Anreize für Mitarbeit geschaffen werden.
User_role (Benutzer Rollen)
Zweck: Definiert die verschiedenen Rollen im System.
Felder:
- rol_ID (PK)
- rol_key CHAR(1) UNIQUE -- Rollenabkürzung (z.B. 'A' für Admin)
- rol_name VARCHAR(50) UNIQUE -- Rollenname (für Entwickler)
Hinweis: Die Anzeige wird an Hand des Keys übersetzt.User_status (Benutzer Status)
Zweck: Verwaltung des Benutzerstatus (inkl. Löschstatus).
Felder:
- ust_ID (PK)
- ust_key CHAR(1) UNIQUE -- Statusabkürzung
-- A = Activ
-- N = Nicht bestätigt)
-- D = Gelöscht
-- R = Passwort erneuern
- ust_name VARCHAR(100) UNIQUE -- Statusname (für Entwickler)User (Benutzer)
Zweck: Zentrale Verwaltung der Benutzer mit allen Kerninformationen.
Felder:
- u_ID (PK)
- rol_ID (FK → user_role.rol_ID) DEFAULT 6 -- Rolle (Standard: User)
- ust_ID (FK → user_status.ust_ID) DEFAULT 2 -- Status (Standard: Nicht bestätigt)
- u_name VARCHAR(50) UNIQUE -- Benutzername (eindeutig)
- u_avatar VARCHAR(255) -- Profilbild (Dateiname mit Endung)
- u_fname VARCHAR(50) -- Vorname
- u_lname VARCHAR(50) -- Nachname
- u_mail VARCHAR(100) NOT NULL -- E-Mail
- u_phone VARCHAR(20) -- Telefonnummer
- u_password VARCHAR(255) NOT NULL -- Passwort (gehasht)
- u_trust_level INT DEFAULT 0 -- Vertrauensstufe (für Mitwirkende)
- u_open_fees DECIMAL(10,2) DEFAULT 0.00 -- Noch offene Gebühren
- u_reward_point INT DEFAULT 0 -- Belohnungspunkte für Freiwillige
- u_trigger_freq INT DEFAULT 10 -- Maximale Trigger pro Runde
Indexe:
- idx_user_status (ust_ID)
- idx_user_role (rol_ID)
- idx_user_role_status (rol_ID, ust_ID)
Hinweis: Privat- und Geschäftskunden werden durch die Rolle unterschieden.User_attribut (Benutzer Attribute)
Zweck: Erweiterbare Tabelle für zusätzliche Attribute wie temporäre Tokens oder weitere Informationen.
Felder:
- uat_ID (PK)
- u_ID (FK → user.u_ID)
- uat_key VARCHAR(100) -- Attribut-Schlüssel (info, token, firmname, preferences...)
- uat_value TEXT -- es können auch mehre werte mit einem Separator gespeichert werden
- UNIQUE (u_ID, uat_key)
Hinweis: Kann später mit einer Lookup-Tabelle attribute_type verbessert werden.Adress (Adressen)
Zweck: Speicherung der Adressinformationen der Benutzer.
Felder:
- adr_ID (PK)
- cun_ID (FK → country.cun_ID) -- Wird in shipping_tb verknüpft
- u_ID (FK → user.u_ID)
- adr_name VARCHAR(100) -- Adress-Name (z.B. 'Zuhause', 'Büro')
- adr_line_option VARCHAR(255) -- Zusatzzeile
- adr_street VARCHAR(255) NOT NULL -- Straße
- adr_hous_num VARCHAR(10) NOT NULL -- Hausnummer
- adr_zipcode VARCHAR(10) NOT NULL -- PLZ
- adr_locality VARCHAR(255) NOT NULL -- Ort
- adr_type CHAR(1) NOT NULL -- M = Hauptadresse, B = Rechnungsadresse, D = LieferadresseTarget (Zieltabellen)
Zweck: Definiert, auf welche Entität (Tabelle) ein Benutzer zugreifen darf.
Felder:
- tar_ID (PK)
- tar_tb_name VARCHAR(50) -- Tabellenname (z.B. 'tb_category', 'tb_product')Action (Aktionen)
Zweck: Definiert, welche Aktion ein Benutzer ausführen darf.
Felder:
- act_ID (PK)
- act_name VARCHAR(50) -- Aktionsname (z.B. 'create', 'update', 'delete')
- act_reward_value INT DEFAULT 0 -- Belohnungspunkte für diese AktionManager_rights (Rechteverwaltung)
Zweck: Verwalten die Rechte der Benutzer auf Eintrags- oder Tabellenebene mit zeitlicher Gültigkeit.
Felder:
- mgr_ID (PK)
- u_ID (FK → user.u_ID)
- tar_ID (FK → target.tar_ID) -- Bereich
- tar_tb_ID INT NULL -- Konkrete Eintrags-ID (optional)
- mgr_right_level INT NOT NULL -- 0=Viewer, 1=Editor, 2=Moderator, 3=Admin
- mgr_trust_level INT DEFAULT 0 -- Dynamisch berechnet
- mgr_valid_from DATETIME NOT NULL -- Gültig ab
- mgr_valid_to DATETIME DEFAULT NULL -- Gültig bis (NULL = unbegrenzt, noch nicht definiert)Manager_log (Änderungsprotokoll)
Zweck: Lückenlose Protokollierung von Änderungen inkl. Vorher/Nachher-Werten.
Felder:
- mgl_ID (PK)
- u_ID (FK → user.u_ID) -- wer hat die Aktion gemacht
- tar_ID (FK → target.tar_ID) -- Auf welches Ziel
- tar_tb_ID INT NULL -- Optionale konkrete Eintrags-ID
- act_ID (FK → action.act_ID) -- Welche Aktion
- old_value TEXT -- Vorheriger Zustand (optional)
- new_value TEXT -- Neuer Zustand (optional)
- mgl_details TEXT -- JSON mit Zusatzinfos (z.B. Metadaten)
- mgl_timestamp DATETIME DEFAULT CURRENT_TIMESTAMPReview (Bewertungen)
Zweck: Bewertungen von Änderungen zur Qualitätssicherung.
Felder:
- rev_ID (PK)
- mgl_ID (FK → manager_log.mgl_ID) -- zu welchem Log-Eintrag
- u_ID (FK → user.u_ID) -- Wer bewertet
- rev_point INT -- Bewertungspunktzahl z. B. 1–10
- rev_comment TEXT -- Optionale Begründung
Hinweis: Bewertungen dürfen nicht belohnt werden, das gibt falsche Anreize.Validierung (Änderungen)
Zweck: Validierungsstatus von Änderungen.
Felder:
- val_ID (PK)
- rev_ID (FK → review.rev_ID) -- Welche Review hat beeinflusst
- u_ID (FK → user.u_ID) -- Wer validiert
- mgl_ID (FK → manager_log.mgl_ID) -- Welche Aktion wird validiert
- val_status CHAR(1) -- O=Open, P=Pending, V=Validated, E=Exam, R=Rejected
- val_timestamp DATETIME DEFAULT CURRENT_TIMESTAMPReward_log (Nachvollziehbarkeit)
Zweck: Belohnungssystem für Freiwillige, die valide und erfolgreiche Beiträge leisten.
Felder:
- rel_ID (PK)
- mgl_ID (FK → tb_manager_log) -- Welche Aktion wird belohnt
- u_ID (FK → tb_user) -- Wer wird belohnt
- val_ID (FK → tb_validation) -- Welche Validierung beeinflusst die Belohnung
- act_ID (FK → tb_action) -- Welche Aktion wird belohnt
Hinweis: Es werden nur die belohnt, die etwas erfolgreich beigetragen haben.