--- epoch: 1762309892107 modelKey: "deepseek-chat|3rd party (openai-format)" topic: "Learning Record Score Design" tags: - copilot-conversation --- **user**: [[知识图谱数据库设计]] 学习纪录表learning_record是否要记录题目的满分是多少? [Context: Notes: 知识图谱/知识图谱数据库设计.md] [Timestamp: 2025/11/05 10:31:32] **ai**: 是的,**强烈建议**在 `learning_record` 表中记录题目的满分信息。 基于你现有的数据库设计,我建议在 `learning_record` 表中添加一个 `max_score` 字段: ```sql CREATE TABLE learning_record ( id BIGINT AUTO_INCREMENT PRIMARY KEY, student_id VARCHAR(20) NOT NULL, problem_id VARCHAR(20) NOT NULL, -- T3-1-1-E02 knowledge_id VARCHAR(20) NOT NULL, -- K3-1-1-02 method_id VARCHAR(20), -- M3-1-1-01 (可选) question_part VARCHAR(10), -- 小题1/小题2/整体 is_correct BOOLEAN NOT NULL, -- 正确/错误 score DECIMAL(5,2), -- 得分(0-100) max_score DECIMAL(5,2) NOT NULL, -- 新增:该题/该小题的满分 response_time INT, -- 答题时间(秒) attempt_count INT DEFAULT 1, -- 尝试次数 exam_date DATE, -- 考试/练习日期 created_at TIMESTAMP DEFAULT NOW(), FOREIGN KEY (student_id) REFERENCES student(id), FOREIGN KEY (problem_id) REFERENCES problem(id), FOREIGN KEY (knowledge_id) REFERENCES knowledge(id), FOREIGN KEY (method_id) REFERENCES method(id) ); ``` ## 为什么需要记录满分? 1. **准确计算得分率**:`得分率 = score / max_score` 2. **题目难度标准化**:不同题目的满分可能不同(选择题2分,大题10分等) 3. **公平比较**:避免因题目分值不同导致的统计偏差 4. **掌握度计算**:在 `knowledge_mastery` 表中计算掌握度时,需要考虑不同分值的权重 ## 数据示例 | student_id | problem_id | knowledge_id | score | max_score | 得分率 | |------------|------------|--------------|-------|-----------|--------| | S001 | T3-1-1-E02 | K3-1-1-02 | 8.0 | 10.0 | 80% | | S001 | T3-1-2-A01 | K3-1-2-01 | 2.0 | 2.0 | 100% | | S002 | T3-1-1-E02 | K3-1-1-02 | 6.0 | 10.0 | 60% | 这样设计后,你的评分系统会更加准确和灵活。 [Timestamp: 2025/11/05 10:31:56]