Database và migration

Database chính là PostgreSQL 16. Schema được quản lý bằng Flyway migration trong backend/src/main/resources/db/migration. Khi báo cáo, hãy tách rõ ba thứ: bảng nghiệp vụ, file migration và dữ liệu đang có trong DB sống.

78bảng nghiệp vụ sinh từ Flyway
2materialized views
107file migration SQL
V135migration version mới nhất

Nhóm bảng chính

Nhóm Bảng tiêu biểu Ý nghĩa
Identity users, organizations, user_external_identities Tài khoản, role, org, login ngoài
Course authoring courses, chapters, lessons, sections Draft/course content của teacher; content_blocks là cột JSONB trong lessons
Publication course_publications Snapshot learner-facing sau khi duyệt
Learning enrollments, student_lesson_progress, certificates Ghi danh, tiến độ, chứng chỉ
Assessment quizzes, questions, quiz_attempts, assignments, assignment_submissions Quiz, bài tập, chấm điểm
Media/upload upload_sessions, video_assets, video_ingest_jobs Upload, ingest, playback
Payment payment_transactions, revenue_splits, payout_requests Thanh toán, refund, chia doanh thu
AI/Wiii chat_sessions, chat_messages, ai_insights, ai_alerts Chat/insight/cảnh báo AI

Số bảng hiện tại

Catalog sinh từ Flyway cho thấy schema hiện có 78 application tables2 materialized views. 107 là số file migration SQL, không phải số bảng. Version cuối là V135 vì migration có gap version và có hotfix dạng V54.1, nên không suy ra “135 file” hay “135 bảng” từ số version.

Nếu mở DBeaver trên DB sống, có thể thấy thêm flyway_schema_history; bảng đó là bảng quản trị Flyway, không tính vào bảng nghiệp vụ LMS. Xem chi tiết từng bảng, cột, index, migration nguồn và danh sách đầy đủ 107 file SQL ở SQL schema catalog. Xem ảnh ERD, row estimate và đối chiếu DB sống ở DB sống và ERD DBeaver.

Nên nói “Theo Flyway và DB sống hiện tại, schema public có 78 bảng nghiệp vụ, 2 materialized views và migration mới nhất là V135__video_storage_governance.sql.”
Không nên nói “Database có 88/108/135 bảng” nếu chưa nói rõ đang đếm table, migration file, version hay object phụ.

Quy tắc Flyway

  • Không sửa migration cũ đã chạy.
  • Tạo migration mới theo dạng Vxxx__short_description.sql.
  • Schema production do Flyway quản lý, không dựa vào ddl-auto update.
  • Nếu thêm FK lớn, nhớ xem index ở phía referencing table.

Timeline migration

Xem Database timeline để nhớ các mốc như V70, V74, V92, V119, V130, V135 và bảng domain -> tables -> code.

DBeaver

Để trình bày database tổng, DBeaver ER diagram vẫn phù hợp. Tuy nhiên ERD tổng rất dày, nên cách nói tốt nhất là: mở bản đồ domain dễ học trước, sau đó mới mở ảnh ERD tổng nếu thầy muốn xem toàn schema.

  1. Mở schema public.
  2. Chọn nhóm bảng trọng tâm hoặc toàn schema.
  3. Zoom vừa đủ thấy cluster bảng.
  4. Nếu quá rối, chụp từng domain: identity, course, assessment, learning, payment, media.
  5. Không chiếu password, file key SSH, .env hoặc connection string đầy đủ.