Soldemy
0%

PostgreSQL qua tình huống: Mô hình, truy vấn và dữ liệu [Demo]

JOIN và tập kết quả — Thực hành và checklist bàn giao

4 phút đọc

Đây là bài 3 trong phần 3 của chuỗi demo “PostgreSQL qua tình huống: Mô hình, truy vấn và dữ liệu”. Từ ràng buộc dữ liệu tới truy vấn, index và cạnh tranh: đọc ví dụ rồi giải thích lựa chọn thiết kế. Bài viết dùng ví dụ và dữ liệu giả để minh họa; hãy thử trên môi trường riêng trước khi áp dụng vào dự án.

Mục tiêu cụ thể

Inner join chỉ giữ hàng khớp; left join giữ mọi hàng bên trái. Điều kiện WHERE trên bảng bên phải có thể loại các hàng null của left join.

Tích hợp vào dự án xuyên suốt

Sản phẩm cuối khóa là cơ sở dữ liệu khóa học, đăng ký học và báo cáo tiến độ. Ở chương này, bạn cần bàn giao một phần có thể giải thích và kiểm tra độc lập: Viết báo cáo số học viên cho mọi khóa học, bao gồm khóa chưa có người học. Hãy nêu rõ phần mới phụ thuộc vào kết quả nào của chương trước và phần nào có thể làm riêng.

Kế hoạch thực hiện

  • Xác định đầu vào, đầu ra và trạng thái trước khi bắt đầu. Với join và tập kết quả, hãy ghi lại kết quả bạn mong muốn trước khi chạy ví dụ.
  • Tạo bản thử nhỏ nhất trong một thư mục hoặc môi trường riêng. Chỉ dùng dữ liệu giả; không sao chép token, tài khoản hoặc dữ liệu cá nhân vào bài tập.
  • Thực hiện yêu cầu: Viết báo cáo số học viên cho mọi khóa học, bao gồm khóa chưa có người học.
  • Quan sát kết quả và so sánh từng điều kiện chấp nhận. Khi chưa đạt, thay đổi một yếu tố mỗi lần để biết thay đổi nào tạo ra tác động.
  • Lưu kết quả cùng ghi chú giải thích quyết định. Người khác cần tái hiện được thao tác mà không phải đoán cấu hình hoặc dữ liệu ban đầu.

Điều kiện nghiệm thu

  • Khóa chưa có học viên vẫn xuất hiện
  • Không đếm thành một học viên giả
  • Kết quả có thứ tự ổn định

Rủi ro cần xử lý

Count(*) sau left join đếm cả hàng không có enrollment. Dùng count(e.user_id) để đếm người đăng ký thực sự.

Yêu cầu bàn giao

  • Một phiên bản chạy được hoặc tài liệu thiết kế đủ để kiểm chứng.
  • Mô tả đầu vào, đầu ra và cách bắt đầu thử.
  • Ít nhất ba ca thử gắn với tiêu chí chương.
  • Một ca lỗi được tái hiện và cách xử lý.
  • Ghi chú giới hạn: điều gì chưa làm, vì sao và bước tiếp theo.

Bài dự án có thể cần nhiều thời gian thực hành hơn thời gian đọc hiển thị. Bạn tự chọn mức độ mở rộng theo mục tiêu; không cần đưa nội dung lên hệ thống production để hoàn thành bài. Khi review, tập trung vào hành vi quan sát được và tính rõ ràng của giải thích thay vì số dòng mã.

Liên hệ chương tiếp theo

Giữ lại phiên bản đã đạt tiêu chí trước khi thêm yêu cầu mới. Nếu thay đổi tiếp theo làm sai hành vi cũ, dùng các ca thử đã ghi để phát hiện và khoanh vùng thay đổi gây ra vấn đề.

Hỏi đáp

Đăng nhập để đặt câu hỏi và tham gia thảo luận.