วันศุกร์ที่ ๒๒ มีนาคม พ.ศ. ๒๕๕๖

การออกแบบฐานข้อมูล กรณีศึกษา การส่ง SMS ชิงโชคของอิชิตัน

วันนี้ได้เห็นฝาขวดกรีนทีของอิชิตัน เขียนว่า ส่งรหัสมั่ว ซ้ำเกิน 3 ครั้ง ถูกตัดสิทธิ์!!!
 สืบเนื่องมาจากการอิชิตันส่งเสริมการขายมีนโยบายให้ส่งรหัสใต้ฝาผ่าน SMS เพื่อชิงโชค แล้วอาจเกิดมีคนทดลองส่งข้อมูลมั่ว ๆ เพื่อหวังให้ได้โชคทองเป็นล้าน หรือไอโฟน5

ปัญหาเหล่านี้จะแก้ไขได้ถ้าผู้ผลิตฝาขวด และนักวิเคราะห์และออกแบบฐานข้อมูลคอมพิวเตอร์ ของระบบรับ SMS ชิงโชคดังกล่าว มีความรู้ที่ถูกต้อง



1. การแก้ปัญหารหัสมั่ว ผู้ผลิตจะต้องมีมาตรฐานในการสร้างรหัสโดยสร้างหลักสุดท้ายสำหรับตรวจสอบที่ได้จากการคำนวณหลักต่าง ๆ มาบวก ลบ คูณ หาร กัน (แล้วแต่ผู้สร้างจะกำหนด ซึ่งปกติเขาจะไม่แจ้งสูตรให้คนทั่วไปทราบ) แล้วได้ผลลัพธ์มาหนึ่งค่าแล้วมาหารเอาเศษ (modulus)  ด้วย 10 ซึ่งผลที่ได้จะมี 0-9 ดังนั้นเมื่อใครก็ตามที่ส่ง SMS มาก็จะต้องประมวลผลหาหลักสุดท้ายก่อน ถ้าตัวเลขหลักสุดท้ายถูกต้อง ก็แสดงว่า ผู้ส่ง SMS มาจากฝาจริง แต่ในทางกลับกันถ้าผิดแสดงว่าส่งรหัสมั่วมา คนเขียนโปรแกรมรับ SMS ก็ไม่ต้องบันทึกข้อมูลเข้าสู่คอมพิวเตอร์ แบบนี้สามารถแก้ปัญหาจากลูกค้าส่งรหัสผิดพลาดที่เกิดจากมองตัวเลขไม่ชัดได้  และปัญหาที่เกิดจากผู้ส่งต้องเก็บฝาเอาไว้เป็นหลักฐานก็ไม่ต้องมาดูอีก

2. ในการแก้ปัญหาการส่งรหัสตัวเดิมซ้ำ แก้ได้โดยออกแบบฐานข้อมูล ให้กำหนดรหัสใต้ฝาเป็น Primary Key ในตารางที่รับข้อมูลจาก SMS ออกแบบมาอย่างน้อยต้องมีลักษณะดังต่อไปนี้

-------------------------------------------------
รหัสฝา                                          PK            
-------------------------------------------------
หมายเลขโทรศัพท์
-------------------------------------------------

บทสรุป ตามหลักทฤษฎีของฐานข้อมูลแล้ว เมื่อไรก็ตามที่เรากำหนดให้ฟิลด์ใด ๆ เป็น Primary Key
ฟิลด์นั้นจะไม่สามารถบันทึกข้อมูลนั้นซ้ำเข้าสู่ตารางได้เลย

หวังว่า แนวคิดง่าย ๆ แบบนี้คงมีประโยชน์สำหรับผู้ที่ยังแก้ปัญหาเหล่านี้ไม่ได้

สำหรับนักศึกษาสาขาคอมพิวเตอร์ ที่ทำโปรเจ็คแล้วมีข้อผิดพลาดจากการออกแบบ ขอให้พึงหลีกเลี่ยงข้อผิดพลาดง่าย ๆ แบบนี้ ที่มิอาจยอมให้ผ่านได้


วันศุกร์ที่ ๒๕ มกราคม พ.ศ. ๒๕๕๖

นโยบายและแนวทางการบริหารโปรแกรมวิชาคอมพิวเตอร์

สวัสดีครับ พี่น้องชาวคอมพิวเตอร์ที่รักทุกคน

ขอขอบคุณที่พี่ ๆ น้อง ๆ ให้เกียรติให้ผมได้ทำหน้าที่เป็นประธานโปรแกรมวิชาอีกครั้งหนึ่ง

ทุก ๆ ตำแหน่งหน้าที่ ผมคิดว่า ต่างก็มีความสำคัญไม่แพ้กัน เพียงแต่เรามีความคิดว่าทุกหน้าที่ของเราจะทำให้ดีที่สุด จะทุ่มเทกำลัง ความคิด เวลา ทุกสิ่งทุกอย่างที่พึงมีให้แก่งานนั้น ๆ แม้แต่งานสอนในห้องในแต่ละคาบก็ตาม

ในการบริหารงานโปรแกรมก็เช่นกัน ผมได้ปรารภแสดงความเห็นกับพี่ ๆ น้อง ๆ หลายคนว่า เราควรไปในทิศทางใด ก็ได้รับฟังความเห็นและแลกเปลี่ยนกันไป เป็นการพูดคุยกันอย่างไม่เป็นทางการ

ในบล็อกนี้ก็เป็นการสื่อสารอย่างไม่เป็นทางการเช่นกัน ซึ่งในครั้งนี้จะได้พูดถึงนโยบายโดยรวมของผมที่จะเกิดขึ้น

ผมตั้งโจทย์เอาไว้ไม่กี่ข้อ แต่ต้องการจะทำมากๆ นั่นคือ


  • การที่จะทำอย่างไรให้นักศึกษาของเราจบภายใน 4 ปีอย่างมีคุณภาพ
  • จะทำอย่างไรให้อาจารย์ทุกท่านได้ตำแหน่งทางวิชาการ
  • จะทำอย่างไรให้โปรแกรมของเรามีชื่อเสียงเป็นที่รู้จักของคนทั่วไป

 จริง ๆ แล้วมีหลายข้อ แต่ถ้าตั้งไว้หลายอย่างอาจไม่ประสบผลสำเร็จเลยสักอย่างเดียว
ดังนั้น จึงอยากจะตั้งเป้าหมายเอาไว้ในแต่ละด้านว่า


  • นักศึกษาจะจบการศึกษาภายใน 4 ปีมากกว่า 50% ภายในปีการศึกษา 2556 และ 80% ในปีถัดไป 
  • อาจารย์จะมีตำแหน่งทางวิชาการหรือได้เลื่อนตำแหน่งมากกว่า 50% ของผู้มีคุณสมบัติทั้งหมด
  • นักศึกษาได้ไปเข้าร่วมแข่งขันทักษะ อาจารย์ได้ไปนำเสนอผลงานมากขึ้น
ดังนั้นงบประมาณและกิจกรรมต่าง ๆ ของเราจะมุ่งเน้นทั้ง 3 ด้านนี้ให้มากเป็นพิเศษ

จึงอยากฝากให้คณาจารย์ทั้งหลายได้ให้ข้อคิดเห็น ข้อเสนอแนะ จัดกิจกรรมและงบประมาณ 
และอยากทราบความสมัครใจในการจะช่วยในภาระกิจโปรแกรมวิชาของเราในตำแหน่งด้านใดบ้าง โดยแบ่งงานออกเป็นคร่าว ๆ ดังนี้
  • ด้านพัฒนาบุคลากร
  • ด้านพัฒนานักศึกษา
  • ด้านบริหารสำนักงาน ครุภัณฑ์ และงบประมาณ
  • ด้านการประกันคุณภาพ
หวังเป็นอย่างยิ่งว่า พี่ ๆ น้อง ๆ ต่างก็มีความรัก ความปรารถนาดีต่อการที่จะพัฒนาโปรแกรมวิชาของเราให้ก้าวหน้าต่อไป