首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

大學課程表 App 數據庫設計:從需求到 ER 圖的落地指南

     編輯:程式設計疑難解答

核心實體與關係

實體關鍵字段說明
Studentid(PK), stu_no, name, major_id(FK), grade學生基本信息
Teacherid(PK), job_no, name, dept_id(FK)教師信息
Courseid(PK), code, name, credit, hours課程目錄
Classroomid(PK), building, room_no, capacity, type教室資源
Semesterid(PK), name, start_date, end_date學期(如 2024-秋)
Scheduleid(PK), semester_id, course_id, teacher_id, classroom_id, week_day, section_start, section_end, week_type(單/雙/全)排課核心表
Student_Coursestudent_id, schedule_id, score, is_retake學生選課/成績

關鍵設計決策

  1. 周次處理:用 week_type ENUM('ALL','ODD','EVEN') + section_start/end 表示節次,避免展開每周行,極大減少數據量。
  2. 衝突檢查:唯一索引 (semester_id, teacher_id, week_day, section_start, section_end, week_type) 防教師撞課;同理教室、學生班級。
  3. 課程表查詢: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))。
  4. 版本控制:Schedule 加 version, status(DRAFT/PUBLISHED),支持多輪排課發布。

擴展建議

  • 加入 Exam_Arrange 考試安排表(獨立於上課排課)。
  • 引入 Curriculum 培養方案表,驗證選課合規性。
  • 移動端同步:離線緩存 + 增量同步(last_sync_time)。

按上述 ER 模型建表,再配合唯一索引保衝突、版本字段管發布,即可支撐千萬級選課並發的大學課程表系統。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved