今天的主要工作是將昨天規劃好的資料庫 Schema 實際落地,並建立初始的資料表與基礎種子資料(Roles、Users)。這一步完成後,後端就能開始開發 API 與進行 CRUD 測試,正式進入系統功能的開發階段。
使用 mysql2 與 SQL 腳本,在資料庫 classhub 中建立以下資料表:
Roles:系統角色 (admin / student / instructor)
Users:使用者基本資訊與登入帳號
Cohorts:班級/期別
Enrollments:學員與班級對應關係
Sessions:每一堂課的安排
SessionChanges:課程異動歷史
Announcements / AnnouncementTargets:公告與投放對象
Notifications / ReadReceipts:通知發送與已讀紀錄
Instructors / Rooms:講師與教室資訊
RecurringSessions / SessionOccurrences:重複課程規則與展開課次
Attachments / Tags / EntityTags:附件與標籤系統
(以上表格架構已事先設計好,今天正式匯入並建立)
(2) 插入初始資料
在 Roles 表中插入預設角色:
admin
student
instructor
在 Users 表中插入一筆管理者帳號,供後續 API 開發與測試使用。
(3) 程式驗證
使用 npx ts-node src/test-db-connection.ts 測試資料庫是否正常
驗證所有資料表均已建立成功
測試新增一筆使用者資料並查詢,確認 CRUD 正常運作
完成完整資料庫 Schema 的建立,讓專案有了堅實的資料基礎
預先建立的角色與管理員帳號,能讓 API 開發與權限測試更順利
過程中發現,將「課程異動歷史」、「通知發送紀錄」單獨抽出獨立表格,可以讓系統在未來延伸(例如 LINE Notify 或 Web Push)時更具彈性