SQL Noir – เรียนรู้ SQL ผ่านการไขคดีอาชญากรรม
(sqlnoir.com)- SQLNoir คือ เกมเรียนรู้ SQL แบบขับเคลื่อนด้วยเรื่องราว ที่ให้เปิดแฟ้มคดีและค้นหาฐานข้อมูลเพื่อหาเบาะแส
- แต่ละคดีมีสรุปคดี สคีมาฐานข้อมูล และตัวแก้ไข SQL ในตัว เพื่อให้ตรวจสอบ ผู้ต้องสงสัยและเบาะแส ผ่านการเขียนคิวรี
- สามารถฝึก รูปแบบ SQL ที่ใช้จริง ซ้ำๆ ระหว่างการไขคดี เช่น การกรอง การ join การ aggregate และ subquery
- เริ่มใช้งานได้โดยไม่ต้องติดตั้งหรือตั้งค่าสภาพแวดล้อมเพิ่มเติม และติดตามความคืบหน้าได้จาก XP กับจำนวนคดีที่ไขได้
- คดีระดับเริ่มต้นเน้นพื้นฐาน ส่วนคดีระดับสูงต้องใช้ hierarchical join และเงื่อนไขที่ซับซ้อนกว่า จึงเหมาะกับนักพัฒนา นักวิเคราะห์ข้อมูล นักเรียน และผู้สอน
เรียนรู้ SQL ไปพร้อมกับการไขคดี
- SQLNoir พาผู้ใช้เข้าสู่ การสืบสวนที่ขับเคลื่อนด้วยเรื่องราว พร้อมให้ทั้งสรุปคดีและสคีมาฐานข้อมูล
- ผู้ใช้สามารถรันคิวรี SQL ในตัวแก้ไขที่มีมาให้ เพื่อเชื่อมตาราง ตัดผู้ต้องสงสัยออก และตรวจสอบข้อแก้ตัว
- รูปแบบ SQL ที่ได้ฝึกในกระบวนการของคดีมีดังนี้
- การกรอง
- การ join
- การ aggregate
- subquery
- เปิดแฟ้มคดีแล้วเริ่มสำรวจข้อมูลได้ทันที โดยไม่ต้องติดตั้งหรือตั้งค่าเพิ่มเติม
ความคืบหน้าและกลุ่มผู้เรียนเป้าหมาย
- XP และจำนวนคดีที่ไขสำเร็จจะแสดง ความคืบหน้า
- คดีระดับเริ่มต้นถูกออกแบบมาเพื่อให้เรียนรู้พื้นฐานของ SQL ส่วนคดีระดับสูงต้องใช้ hierarchical join และเงื่อนไขที่ซับซ้อนยิ่งขึ้น
- เหมาะสำหรับผู้ใช้ต่อไปนี้
- นักพัฒนาที่อยากฝึกพื้นฐาน SQL และการ join ด้วยการลงมือทำ
- นักวิเคราะห์ข้อมูลที่เตรียมสัมภาษณ์ด้วยสถานการณ์การเขียนคิวรีที่สมจริง
- นักเรียนที่เรียนได้เร็วขึ้นด้วยเรื่องราวและฟีดแบ็กทันที มากกว่าจากตำราแห้งๆ
- ผู้สอนที่กำลังมองหาแบบฝึก SQL ที่ไม่ต้องให้ผู้เรียนตั้งค่าสภาพแวดล้อม
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
สนุกและชอบมาก
ถ้าจะเสริมอีกนิด ช่อง submit ในคดีแรกยังไม่ชัดว่าต้องใส่ชื่อหรือใส่ ID ของผู้ต้องสงสัย
ถ้ามีปุ่ม “คัดลอกไปยังโน้ต” ในผลลัพธ์ก็น่าจะดี และถ้ามีเอกสารบอกว่ามีฟังก์ชันอะไรให้ใช้บ้าง หรือเป็น SQL dialect แบบไหนก็น่าจะดี
การเรียนรู้ด้วยการลองแก้โปรเจกต์เล็ก ๆ จริง ๆ ง่ายกว่ามาก เลยดูเป็นแนวทางที่มีคุณค่าทีเดียว
ในมุมผู้ใช้ เพราะเป็นเกมนักสืบ เลยอนุมานโดยธรรมชาติว่าต้องการชื่อ “ผู้ต้องสงสัย”
สนุกจริง ๆ
จุดปรับปรุงเล็ก ๆ คืออยากให้ ดาวน์โหลดฐานข้อมูล SQLite โดยตรง ได้ เพื่อเอาไป query ด้วยแอปที่ชอบ แล้วใช้เว็บไซต์แค่สำหรับ briefing, notes และ submit
อีกอย่าง ถ้าจะบอกว่าเป็นเครื่องมือสำหรับ “เรียน SQL” น่าจะต้องมีคำแนะนำเพิ่มอีกหน่อย หรือมี query ตัวอย่าง
ในสภาพตอนนี้ ถ้าไม่รู้ SQL ก็อาจหลงทางไปเลยว่าควรทำอะไร แม้จะเป็นเครื่องมือที่เจ๋ง แต่ในฐานะเครื่องมือเรียนรู้ยังดูไม่ค่อยตรงนัก
เป็นของเสริมที่ดีในด้านที่ตัวเลือกยังมีไม่มาก
ที่นึกออกคือ SQL Island(https://sql-island.informatik.uni-kl.de) และ SQL Murder Mystery(https://mystery.knightlab.com) โดยแนวทางของ SQL Noir ใกล้กับอย่างหลังมากกว่า คือเป็น การผจญภัยเดี่ยวแบบไม่ชี้นำ
ผมกำลังทำ SQL game engine ชื่อ SQLab ที่สามารถเอาแบบฝึกหัดไปต่อเข้ากับฐานข้อมูลพื้นฐานใด ๆ เพื่อสร้างการผจญภัยเดี่ยวแบบมีคำชี้นำได้: https://github.com/laowantong/sqlab
ดาวน์โหลด database dump แล้วเล่นผ่านอินเทอร์เฟซจัดการใด ๆ ได้ ปัจจุบันรองรับ MySQL, SQLite, Postgres
ในหน้าเดียวกันยังมีลิงก์คดีสืบสวนตำรวจขนาดยาวที่ออกแบบมาสำหรับนักศึกษาฝรั่งเศสด้วย และถ้าคุณเป็นครูหรือนักวิจัย หลักการของ SQLab อธิบายไว้ที่นี่: https://arxiv.org/abs/2410.16120
โปรเจกต์อื่น ๆ ที่โพสต์ไว้ที่นี่ก็ดีเช่นกัน
ผมขอเสริมโปรเจกต์ SQL Game Console และ SQL Game Editor ของผม ที่ให้นักเรียนสร้างเกม escape SQL ของตัวเองในเบราว์เซอร์ได้: https://eskuel.de
สนุกดีที่ได้ทดลองในห้องเรียน และตอนนี้รองรับเฉพาะภาษาเยอรมัน
เกมตัวอย่าง: https://eskuel.de/zoo/
ทำให้นึกถึง MathNet ที่เคยดูตอนเด็ก
เป็นซีรีส์สืบสวนตำรวจเพื่อการศึกษาแนว Dragnet โดยนักสืบสองคนพกเครื่องคิดเลขไว้เหมือนซองปืน
https://en.m.wikipedia.org/wiki/Mathnet
https://youtu.be/vNhBq3kjq_Q?t=2011
ชอบนะ สไตล์โดดเด่นและเท่
ดูเหมือนเป็นจุดเริ่มต้นของ วิธีสนุก ๆ ในการเรียน ฝึก และรื้อฟื้น SQL
อย่างหนึ่งคืออยากให้เป็น workspace เดียวแบบไม่ต้องมีแท็บ ตอนนี้ต้องสลับแท็บไปมาตลอด
ถ้าบันทึก SQL query ก่อนหน้าและผลลัพธ์ได้ก็น่าจะดี ตอนนี้ผมคัดลอกผลลัพธ์ไปใส่โน้ตอยู่
ยิ่งซับซ้อนขึ้น ฟีเจอร์นี้น่าจะยิ่งสำคัญ
เมื่อกี้เพิ่งทำ มุมมองแบบวางข้างกัน ให้ดู 2 แท็บพร้อมกันได้แล้ว หวังว่าจะช่วยได้
อย่างที่ผู้ใช้คนอื่นเสนอไว้ คุณสามารถบันทึก query ไว้ใน notes หรือคอมเมนต์ทิ้งไว้ใน editor ก็ได้
ขอแค่มีหมวก แล้วพูดว่า “เอาแต่ข้อเท็จจริงนะครับ คุณผู้หญิง” สักสองสามครั้งก็ครบแล้ว
ไอเดียดี แต่ ความดื่มด่ำของ UI แทบไม่มี
ถ้าจะเพิ่มความดื่มด่ำ ต้องมี autocomplete, ฟีเจอร์ดู schema กับ query พร้อมกันบนจอกว้าง และฟีเจอร์คัดลอกชื่อตารางกับชื่อคอลัมน์ได้ง่าย ๆ ด้วยการคลิกครั้งเดียว
โดยเฉพาะชื่อตารางนี่แม้แต่เลือกก็ยังเลือกไม่ได้
อยากให้ไม่ใช่แค่เขียนทับ query ที่รันไปแล้วได้เท่านั้น แต่สามารถเพิ่ม query ใหม่ไว้เหนือหรือใต้ query ที่รันแล้วต่อไปเรื่อย ๆ ได้
เพราะมันลดความดื่มด่ำ และลดส่วนที่ต้องนึกเองด้วย
ถ้าเปิดให้ใน new game plus อาจจะโอเค
เมื่อกี้เพิ่งทำ Side by Side view ที่เปิดแท็บต่างกันสองแท็บพร้อมกันได้ และปุ่มสำหรับคัดลอกชื่อตารางแล้ว
command-/เพื่อคอมเมนต์ code block ได้จะมีประโยชน์มากเป็นไอเดียที่ดีจริง ๆ และการไขคดีก็สนุก
สำหรับโปรแกรมเมอร์ระดับจูเนียร์ เวอร์ชันการ์ตูน อาจช่วยได้
SQL editor บางครั้งทำงานแปลก ๆ จนเขียนให้ถูกต้องไม่ได้
เวลาพยายามเพิ่มคอมเมนต์ใน editor มันทำงานแปลก ๆ
วิธีทำซ้ำคือเขียนหลายบรรทัด แล้วใส่
--หน้าทีละบรรทัดเพื่อคอมเมนต์แต่ละบรรทัดเช่น หลังจากเขียน
select i.*, s.*,from interviews i,join suspects s,on s.id = i.suspect_idแล้วทันทีที่ใส่--หน้าfrom interviews iบรรทัดนั้นจะย้ายขึ้นไปบรรทัดก่อนหน้า และ syntax highlighting ก็พังเมื่อกี้เหมือนจะแก้บั๊กนี้ได้แล้ว
สมัยมหาวิทยาลัยจำได้ว่าอาจารย์เคยให้ลิงก์ มินิเกมไขคดี คล้าย ๆ แบบนี้สำหรับฝึก SQL
ตอนนั้นอินมาก จนถึงขั้นพยายามหาคำตอบแบบหนึ่งบรรทัดที่มีประสิทธิภาพที่สุด
ขอบคุณที่ทำขึ้นมา และคงจะส่งต่อสิ่งนี้ให้คนที่อยากเรียน SQL
ค่อนข้างสนุก ผมลองเล่น mystery ฟรีสองอันแล้ว รู้สึกได้ฟีลของการแก้ปริศนา
ข้อติเล็ก ๆ คืออยากให้ SQL editor รองรับ คอมเมนต์
ถ้าคอมเมนต์ query เก่าไว้ก่อนรัน query ใหม่เพื่อเก็บ history ได้ น่าจะสะดวก โดยเฉพาะเวลาต้องรัน query เดิมอีกครั้ง
--ถ้าไม่ได้ แปลว่าเป็นบั๊ก เดี๋ยวจะตรวจดู
จะใช้แท็บ Notes เพื่อบันทึก query เก่าและสิ่งที่ค้นพบก็ได้