File: //opt/kw-schueler.bak.21032025/create_gamification_tables.sql
-- Tabelle für Schülerprofile
CREATE TABLE IF NOT EXISTS student_profiles (
id INT AUTO_INCREMENT PRIMARY KEY,
student_name VARCHAR(255),
xp_points INT DEFAULT 0,
current_level INT DEFAULT 1,
current_streak INT DEFAULT 0,
last_submission_date DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Tabelle für erworbene Badges
CREATE TABLE IF NOT EXISTS student_badges (
id INT AUTO_INCREMENT PRIMARY KEY,
student_profile_id INT,
badge_type VARCHAR(50),
badge_name VARCHAR(100),
badge_description TEXT,
badge_icon VARCHAR(255),
awarded_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (student_profile_id) REFERENCES student_profiles(id)
);
-- Tabelle für Kompetenzradar-Daten
CREATE TABLE IF NOT EXISTS competency_ratings (
id INT AUTO_INCREMENT PRIMARY KEY,
student_profile_id INT,
language_rating INT DEFAULT 0,
argumentation_rating INT DEFAULT 0,
content_rating INT DEFAULT 0,
structure_rating INT DEFAULT 0,
creativity_rating INT DEFAULT 0,
submission_id INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (student_profile_id) REFERENCES student_profiles(id),
FOREIGN KEY (submission_id) REFERENCES student_solutions(id)
);
-- Tabelle mit vorgefertigten Badge-Definitionen
CREATE TABLE IF NOT EXISTS badge_definitions (
id INT AUTO_INCREMENT PRIMARY KEY,
badge_type VARCHAR(50) NOT NULL,
badge_name VARCHAR(100) NOT NULL,
badge_description TEXT,
badge_icon VARCHAR(255),
xp_reward INT DEFAULT 0,
keywords TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Einfügen einiger vorgefertigter Badges
INSERT INTO badge_definitions (badge_type, badge_name, badge_description, badge_icon, xp_reward, keywords)
VALUES
('feedback', 'Sprachvirtuose', 'Ausgezeichnete sprachliche Gestaltung', 'language_badge.svg', 100, 'sprachlich,ausdrucksstark,formuliert,Ausdruck,Sprache,Wortwahl'),
('feedback', 'Logiker', 'Hervorragende Argumentationsstruktur', 'logic_badge.svg', 100, 'logisch,schlüssig,Argument,nachvollziehbar,begründet,Argumentation'),
('feedback', 'Kreativkünstler', 'Besonders originelle und kreative Ansätze', 'creativity_badge.svg', 100, 'kreativ,originell,einfallsreich,innovativ,neuartig,ideenreich'),
('feedback', 'Faktenfuchs', 'Hervorragende Recherche und detaillierte Fakten', 'facts_badge.svg', 100, 'Fakt,detailliert,recherchiert,belegt,Quelle,Beispiel,Beleg'),
('feedback', 'Strukturmeister', 'Perfekt strukturierte Arbeit', 'structure_badge.svg', 100, 'Struktur,Gliederung,Aufbau,gegliedert,übersichtlich,Abschnitt'),
('activity', 'Einsteiger', 'Erste eingereichte Arbeit', 'beginner_badge.svg', 50, NULL),
('activity', 'Fleißige Biene', 'Fünf eingereichte Arbeiten', 'busy_bee_badge.svg', 100, NULL),
('activity', 'Stammkunde', 'Zehn eingereichte Arbeiten', 'regular_badge.svg', 200, NULL),
('activity', 'Meisterschüler', '25 eingereichte Arbeiten', 'master_badge.svg', 300, NULL),
('streak', 'Zuverlässig', 'Drei Wochen in Folge mindestens eine Einreichung', 'reliable_badge.svg', 150, NULL),
('streak', 'Unermüdlich', 'Fünf Wochen in Folge mindestens eine Einreichung', 'tireless_badge.svg', 250, NULL),
('streak', 'Ausdauernd', 'Zehn Wochen in Folge mindestens eine Einreichung', 'endurance_badge.svg', 400, NULL);