-- Courses belong to a Program (CEFR-style labels like A1..C2 will be configured separately). CREATE TABLE courses ( id BIGSERIAL PRIMARY KEY, program_id BIGINT NOT NULL REFERENCES programs (id) ON DELETE CASCADE, name VARCHAR(255) NOT NULL, description TEXT, thumbnail TEXT, created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMPTZ ); CREATE INDEX idx_courses_program_id ON courses (program_id); CREATE INDEX idx_courses_program_created ON courses (program_id, created_at DESC);