42 lines
1.4 KiB
SQL
42 lines
1.4 KiB
SQL
-- ============================================
|
|
-- PastPaper Master — Question taxonomy fields
|
|
-- Version: 003
|
|
-- Date: 2026-03-24
|
|
-- ============================================
|
|
|
|
-- A question needs multiple classification layers:
|
|
-- 1) question_format: how the student interacts with it
|
|
-- 2) topic_tags / topic_primary / analytics_topic: course knowledge taxonomy
|
|
-- 3) skill_tags: what kind of thinking task the question requires
|
|
ALTER TABLE paper_questions
|
|
ADD COLUMN IF NOT EXISTS question_format TEXT
|
|
CHECK (
|
|
question_format IN (
|
|
'mc',
|
|
'true_false',
|
|
'fill_blank',
|
|
'short_answer',
|
|
'long_answer',
|
|
'coding'
|
|
)
|
|
),
|
|
ADD COLUMN IF NOT EXISTS topic_primary TEXT,
|
|
ADD COLUMN IF NOT EXISTS analytics_topic TEXT,
|
|
ADD COLUMN IF NOT EXISTS topic_tags TEXT[],
|
|
ADD COLUMN IF NOT EXISTS skill_tags TEXT[];
|
|
|
|
-- Keep the legacy topics column for backward compatibility for now.
|
|
-- New analytics and retrieval code should gradually move to analytics_topic/topic_tags.
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_questions_question_format
|
|
ON paper_questions(question_format);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_questions_analytics_topic
|
|
ON paper_questions(analytics_topic);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_questions_topic_tags
|
|
ON paper_questions USING GIN(topic_tags);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_questions_skill_tags
|
|
ON paper_questions USING GIN(skill_tags);
|