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

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

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

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



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

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

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

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

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

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