SQL Noir – Học SQL bằng cách phá án
(sqlnoir.com)- SQLNoir là một trò chơi học SQL theo cốt truyện, nơi bạn mở hồ sơ vụ án và truy vấn cơ sở dữ liệu để tìm manh mối
- Mỗi vụ án cung cấp bản tóm tắt, lược đồ cơ sở dữ liệu và trình soạn thảo SQL tích hợp để bạn dùng truy vấn xác định nghi phạm và manh mối
- Bạn có thể luyện tập lặp đi lặp lại các mẫu SQL thực tế như lọc, join, tổng hợp và subquery ngay trong quá trình phá án
- Có thể bắt đầu mà không cần cài đặt hay cấu hình riêng, và theo dõi tiến độ bằng XP cùng số vụ đã giải
- Các vụ án cơ bản tập trung vào nền tảng, còn vụ án nâng cao yêu cầu join phân cấp và điều kiện phức tạp hơn, phù hợp với lập trình viên, nhà phân tích dữ liệu, sinh viên và giảng viên
Học SQL qua việc phá án
- SQLNoir đưa người dùng vào một cuộc điều tra theo cốt truyện và cung cấp đồng thời bản tóm tắt vụ án cùng lược đồ cơ sở dữ liệu
- Người dùng chạy truy vấn SQL trong trình soạn thảo tích hợp để nối các bảng, loại trừ nghi phạm và kiểm tra chứng cứ ngoại phạm
- Các mẫu SQL được luyện tập trong mạch vụ án gồm:
- Lọc
- Join
- Tổng hợp
- Subquery
- Bạn có thể mở hồ sơ vụ án và bắt đầu điều tra dữ liệu ngay, không cần cài đặt hay cấu hình riêng
Tiến độ và đối tượng học
- XP và số vụ đã giải thể hiện tiến độ
- Các vụ án sơ cấp được thiết kế để rèn nền tảng SQL, còn các vụ án nâng cao đòi hỏi join phân cấp và những điều kiện phức tạp hơn
- Phù hợp với các đối tượng sau:
- Lập trình viên muốn thực hành thủ công các kiến thức SQL cơ bản và join
- Nhà phân tích dữ liệu chuẩn bị phỏng vấn bằng các kịch bản truy vấn sát thực tế
- Sinh viên học nhanh hơn nhờ câu chuyện và phản hồi tức thì thay vì giáo trình khô khan
- Giảng viên đang tìm bài tập luyện SQL không yêu cầu người học phải thiết lập môi trường
1 bình luận
Ý kiến trên Hacker News
Thú vị và tôi thích nó
Bổ sung vài điểm: ở vụ đầu tiên, ô nhập submit không rõ là phải nhập tên hay ID nghi phạm
Sẽ hay hơn nếu trong kết quả đầu ra có nút “sao chép vào ghi chú”, và cũng nên có tài liệu về những hàm nào được cung cấp hoặc đang dùng biến thể SQL nào
Học bằng cách thực sự giải các dự án nhỏ dễ hơn nhiều, nên đây có vẻ là một cách khá giá trị
Ở góc độ người dùng, vì đây là game thám tử nên tôi đương nhiên suy ra là họ muốn tên “nghi phạm”
Rất thú vị
Một cải tiến nhỏ: sẽ tuyệt nếu có thể tải trực tiếp cơ sở dữ liệu SQLite về để truy vấn bằng ứng dụng mình thích, còn trang web chỉ dùng cho phần briefing, ghi chú và nộp đáp án
Ngoài ra, nếu gọi là để “học SQL” thì có lẽ cần thêm một chút hướng dẫn hoặc các truy vấn ví dụ
Ở trạng thái hiện tại, nếu không biết SQL thì rất dễ hoàn toàn lạc lối không biết phải làm gì; đây là một công cụ tuyệt vời, nhưng với vai trò công cụ học tập thì vẫn chưa thật phù hợp
Một bổ sung hay cho một lĩnh vực không có nhiều lựa chọn
Những thứ tôi nghĩ đến là SQL Island(https://sql-island.informatik.uni-kl.de) và SQL Murder Mystery(https://mystery.knightlab.com); cách tiếp cận của SQL Noir gần với cái sau hơn, một cuộc phiêu lưu độc lập không chỉ dẫn
Tôi đang làm SQLab, một game engine SQL cho phép gắn bài tập vào một cơ sở dữ liệu nền bất kỳ để tạo các cuộc phiêu lưu độc lập có chỉ dẫn: https://github.com/laowantong/sqlab
Có thể tải dump cơ sở dữ liệu về và hiện chơi bằng bất kỳ giao diện quản trị nào trên MySQL, SQLite, Postgres
Trên cùng trang cũng có liên kết tới một cuộc điều tra cảnh sát dài được thiết kế cho sinh viên Pháp; nếu bạn là giáo viên hoặc nhà nghiên cứu, nguyên lý của SQLab được giải thích ở đây: https://arxiv.org/abs/2410.16120
Những dự án khác được nhắc ở đây cũng hay
Tôi cũng xin góp thêm dự án SQL Game Console và SQL Game Editor, cho phép học sinh tự tạo game thoát hiểm SQL của riêng mình ngay trong trình duyệt: https://eskuel.de
Thử nghiệm trong lớp học rất thú vị, và hiện chỉ hỗ trợ tiếng Đức
Game ví dụ: https://eskuel.de/zoo/
Nó làm tôi nhớ đến MathNet hồi nhỏ từng xem
Một phim điều tra cảnh sát giáo dục theo phong cách Dragnet, trong đó hai điều tra viên đeo máy tính như đeo bao súng
https://en.m.wikipedia.org/wiki/Mathnet
https://youtu.be/vNhBq3kjq_Q?t=2011
Tôi thích nó, phong cách độc đáo và rất ngầu
Có vẻ là khởi đầu của một cách thú vị để học, luyện tập và nhớ lại SQL
Một vài điểm: sẽ tốt hơn nếu là một không gian làm việc duy nhất, không dùng tab. Tôi cứ phải chuyển qua lại giữa các tab
Sẽ hay nếu lưu được các truy vấn SQL trước đó và kết quả của chúng; hiện tôi đang sao chép kết quả vào ghi chú
Khi mọi thứ phức tạp hơn, tính năng này có lẽ sẽ trở nên quan trọng
Tôi vừa triển khai chế độ xem cạnh nhau để có thể xem đồng thời 2 tab, hy vọng sẽ hữu ích
Như những người dùng khác đã đề xuất, bạn cũng có thể lưu truy vấn vào ghi chú hoặc để chúng dưới dạng chú thích trong editor
Chỉ cần thêm cái mũ, rồi nói vài lần “Chỉ nói sự thật thôi, thưa bà” là đủ bộ
Ý tưởng thì hay, nhưng độ nhập vai của UI gần như không có
Để tăng độ nhập vai, cần có tự động hoàn thành, khả năng xem schema và truy vấn cùng lúc trên màn hình rộng, và khả năng sao chép tên bảng, tên cột dễ dàng chỉ bằng một cú nhấp
Đặc biệt là tên bảng thậm chí còn không chọn được
Đừng chỉ cho phép ghi đè truy vấn đã chạy; sẽ tốt hơn nếu có thể tiếp tục thêm truy vấn mới phía trên hoặc phía dưới các truy vấn đã chạy
Vì nó làm giảm độ nhập vai và cũng giảm bớt phần người chơi phải tự nghĩ ra
Có lẽ bật nó trong New Game Plus thì ổn
Tôi vừa triển khai chế độ xem Side by Side để mở đồng thời hai tab khác nhau, cùng một nút để sao chép tên bảng
command-/Ý tưởng thật sự hay, và giải các vụ án rất vui
Với lập trình viên junior, có lẽ phiên bản truyện tranh sẽ hữu ích
SQL editor đôi khi hoạt động kỳ lạ khiến không thể viết đúng được
Khi cố thêm chú thích trong editor thì nó hoạt động kỳ lạ
Cách tái hiện là viết nhiều dòng rồi thêm
--ở đầu từng dòng để chú thích từng dòng mộtVí dụ, sau khi viết
select i.*, s.*,from interviews i,join suspects s,on s.id = i.suspect_id, ngay khi thêm--trướcfrom interviews i, dòng đó sẽ chuyển lên dòng trước và tô sáng cú pháp bị hỏngTôi nghĩ mình vừa sửa lỗi này
Tôi nhớ hồi đại học, giảng viên từng gửi liên kết tới một minigame phá án tương tự để luyện SQL
Tôi đã khá nhập tâm, đến mức cố tìm lời giải một dòng hiệu quả nhất
Cảm ơn vì đã làm ra nó; có lẽ tôi sẽ gửi nó cho những người muốn học SQL
Khá vui; tôi đã giải hai bí ẩn miễn phí và cảm giác phá án rất đã
Một điểm hơi tiếc là SQL editor nên hỗ trợ chú thích
Nếu có thể chú thích các truy vấn cũ trước khi chạy truy vấn mới để giữ lại lịch sử, thì sẽ tiện, nhất là khi cần chạy lại cùng một truy vấn
--Nếu không được thì đó là lỗi, tôi sẽ kiểm tra
Bạn cũng có thể dùng tab Notes để lưu các truy vấn cũ và những phát hiện của mình