-- 添加专题功能相关表 -- 创建时间: 2024-01-20 -- 专题表 CREATE TABLE IF NOT EXISTS topics ( id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(100) UNIQUE NOT NULL, description TEXT, cover_image VARCHAR(500), sort_order INTEGER DEFAULT 0, status VARCHAR(20) DEFAULT 'active', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 视频专题关联表(多对多关系) CREATE TABLE IF NOT EXISTS video_topics ( id INTEGER PRIMARY KEY AUTOINCREMENT, video_id INTEGER NOT NULL, topic_id INTEGER NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (video_id) REFERENCES videos(id) ON DELETE CASCADE, FOREIGN KEY (topic_id) REFERENCES topics(id) ON DELETE CASCADE, UNIQUE(video_id, topic_id) ); -- 创建索引提高查询性能 CREATE INDEX IF NOT EXISTS idx_video_topics_video_id ON video_topics(video_id); CREATE INDEX IF NOT EXISTS idx_video_topics_topic_id ON video_topics(topic_id); CREATE INDEX IF NOT EXISTS idx_topics_status ON topics(status); CREATE INDEX IF NOT EXISTS idx_topics_sort_order ON topics(sort_order); -- 插入默认专题 INSERT OR IGNORE INTO topics (name, description, sort_order) VALUES ('历史纪录片', '高句丽历史相关的纪录片和教育视频', 1), ('文化艺术', '传统文化艺术表演和展示', 2), ('考古发现', '考古发现和文物研究相关视频', 3), ('语言教学', '高句丽语言学习和教学视频', 4), ('民俗传统', '传统民俗风情和节庆活动', 5), ('建筑遗迹', '古代建筑和遗迹介绍', 6), ('专家讲座', '学者专家的学术讲座和分析', 7), ('文物展示', '珍贵文物的展示和介绍', 8); -- 为现有视频随机分配专题(示例数据) INSERT OR IGNORE INTO video_topics (video_id, topic_id) SELECT v.id, t.id FROM videos v CROSS JOIN topics t WHERE (v.id = 1 AND t.name IN ('历史纪录片', '专家讲座')) OR (v.id = 2 AND t.name IN ('文化艺术', '民俗传统')) OR (v.id = 3 AND t.name IN ('建筑遗迹', '历史纪录片')) OR (v.id = 4 AND t.name IN ('语言教学')) OR (v.id = 5 AND t.name IN ('考古发现', '文物展示'));