2 điểm bởi GN⁺ 2025-02-14 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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

 
GN⁺ 2025-02-14
Ý 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ị

    • Có vẻ được triển khai khá tổng quát, và nội dung cần nộp đã được ghi trong phần Objectives
      Ở 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

    • Dự án tuyệt vời và tôi hoàn toàn đồng ý
      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 ConsoleSQL 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/
    • https://sqlbolt.com, https://regexone.com, https://pgexercises.com
  • 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

  • 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

    • Góp ý hay
      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
    • Mỗi lần sao chép truy vấn và kết quả vào phần ghi chú, tôi lại tưởng tượng mình đang ghi vào cuốn sổ lật ở hiện trường vụ án
      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

    • Tôi đồng ý phần lớn, nhưng nghĩ rằng tự động hoàn thành nên là tính năng ẩn hoặc tắt mặc định
      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
    • Cảm ơn các đề xuất
      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
    • Sẽ rất hữu ích nếu có thể chú thích khối mã 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ột
    Ví 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ước from interviews i, dòng đó sẽ chuyển lên dòng trước và tô sáng cú pháp bị hỏng

    • Đúng vậy
      Tô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ên có thể chú thích một dòng truy vấn bằng cách thêm --
      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