| 實體 | 關鍵字段 | 說明 |
|---|---|---|
| Student | id(PK), stu_no, name, major_id(FK), grade | 學生基本信息 |
| Teacher | id(PK), job_no, name, dept_id(FK) | 教師信息 |
| Course | id(PK), code, name, credit, hours | 課程目錄 |
| Classroom | id(PK), building, room_no, capacity, type | 教室資源 |
| Semester | id(PK), name, start_date, end_date | 學期(如 2024-秋) |
| Schedule | id(PK), semester_id, course_id, teacher_id, classroom_id, week_day, section_start, section_end, week_type(單/雙/全) | 排課核心表 |
| Student_Course | student_id, schedule_id, score, is_retake | 學生選課/成績 |
week_type ENUM('ALL','ODD','EVEN') + section_start/end 表示節次,避免展開每周行,極大減少數據量。(semester_id, teacher_id, week_day, section_start, section_end, week_type) 防教師撞課;同理教室、學生班級。SELECT * FROM Schedule s JOIN Course c ... WHERE s.semester_id=? AND (s.teacher_id=? OR s.classroom_id=? OR EXISTS (SELECT 1 FROM Student_Course sc WHERE sc.student_id=? AND sc.schedule_id=s.id))。Schedule 加 version, status(DRAFT/PUBLISHED),支持多輪排課發布。Exam_Arrange 考試安排表(獨立於上課排課)。Curriculum 培養方案表,驗證選課合規性。last_sync_time)。按上述 ER 模型建表,再配合唯一索引保衝突、版本字段管發布,即可支撐千萬級選課並發的大學課程表系統。