PlusMagi's Blog By Pitt Phunsanit Database Fact Checking & Verification (กระบวนการตรวจสอบความถูกต้องและเช็กตอแหลก่อนโอน)

Fact Checking & Verification (กระบวนการตรวจสอบความถูกต้องและเช็กตอแหลก่อนโอน)

ในโลกของการทำธุรกรรมดิจิทัล ข้อมูลที่ผิดพลาดเพียงเล็กน้อยอาจนำไปสู่ความเสียหายทางการเงินครั้งใหญ่ การตรวจสอบความถูกต้อง (Fact Checking) จึงไม่ใช่แค่การตรวจสอบข้อเท็จจริงภายนอก แต่คือการสร้างระบบที่รับประกันว่าข้อมูลที่ถูกประมวลผลนั้นมีความสมบูรณ์และเชื่อถือได้ ภายในระบบฐานข้อมูล PostgreSQL เราใช้หลักการนี้เพื่อป้องกันความผิดพลาดและยืนยันความถูกต้องของทุกธุรกรรม (Transaction Verification) ก่อนที่จะมีการเปลี่ยนแปลงข้อมูลใดๆ

หลักการตรวจสอบความถูกต้องในระดับฐานข้อมูล (Data Integrity)

การตรวจสอบความถูกต้องในเชิงเทคนิคคือการทำให้แน่ใจว่าข้อมูลที่ถูกบันทึกนั้นสอดคล้องกับกฎเกณฑ์ทางธุรกิจ (Business Rules) เสมอ PostgreSQL มีเครื่องมือที่ทรงพลังหลายอย่างที่ทำหน้าที่คล้ายกับการ ‘เช็กตอแหล’ ของข้อมูล เช่น การใช้ Transaction Blocks, Constraints, และ Stored Procedures เพื่อให้มั่นใจว่าการดำเนินการทั้งหมดเป็นแบบ Atomic (สำเร็จทั้งหมด หรือล้มเหลวทั้งหมด)

กรณีศึกษา: การตรวจสอบยอดเงินก่อนการโอน (Verification of Funds Transfer)

สมมติว่าเรามีระบบบัญชีที่ต้องการโอนเงินจากบัญชี A ไปยังบัญชี B เราต้องตรวจสอบ 2 ประเด็นหลักคือ 1) บัญชีผู้ส่ง (A) มีอยู่จริง และ 2) ยอดเงินคงเหลือของ A ต้องมากกว่าจำนวนที่ต้องการโอน การใช้ PostgreSQL Transaction จะช่วยให้กระบวนการนี้เป็นไปอย่างปลอดภัย

เราจะใช้คำสั่ง Transaction เพื่อล็อกข้อมูลชั่วคราวและตรวจสอบเงื่อนไขก่อนที่จะทำการอัปเดต:

SQL

-- 1. เริ่มต้น Transaction เพื่อล็อกข้อมูลและป้องกันการแก้ไขพร้อมกัน (Concurrency) 
BEGIN;

-- 2. ตรวจสอบยอดเงินคงเหลือของบัญชีผู้ส่ง (Sender: 1) 
SELECT balance FROM accounts WHERE user_id = 1 FOR UPDATE;

-- 3. ตรวจสอบเงื่อนไข: หากยอดเงินเพียงพอ ให้ทำการอัปเดต
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;

-- 4. อัปเดตยอดเงินของบัญชีผู้รับ (Recipient: 2)
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;

-- 5. หากทุกขั้นตอนสำเร็จ ให้ยืนยันการเปลี่ยนแปลง (Commit)
COMMIT;

-- หากมีขั้นตอนใดล้มเหลว (เช่น ยอดเงินไม่พอ) จะใช้ ROLLBACK เพื่อยกเลิกการเปลี่ยนแปลงทั้งหมด
-- ROLLBACK;

บทบาทของ Constraints และ Triggers

นอกเหนือจาก Transaction แล้ว PostgreSQL ยังมีคุณสมบัติที่ช่วยเสริมความน่าเชื่อถือของข้อมูล เช่น:

  • CHECK Constraints: บังคับให้คอลัมน์ต้องมีค่าอยู่ในช่วงที่กำหนด (เช่น ยอดเงินต้องไม่ติดลบ)
  • FOREIGN KEY Constraints: รับรองว่าข้อมูลที่อ้างอิงถึง (เช่น user_id) ต้องมีอยู่จริงในตารางหลัก
  • Triggers: เป็นโค้ดที่ทำงานอัตโนมัติก่อน (BEFORE) หรือหลัง (AFTER) การ INSERT/UPDATE/DELETE ซึ่งช่วยให้เราสามารถ ‘ตรวจสอบ’ และแก้ไขข้อมูลได้ก่อนที่มันจะถูกบันทึกจริง

สรุป: การสร้างความมั่นใจด้วยระบบฐานข้อมูล

การ Fact Checking ในบริบทของ PostgreSQL คือการใช้กลไกทางฐานข้อมูลอย่างเป็นระบบเพื่อรับประกันความสมบูรณ์และความถูกต้องของข้อมูลทุกชิ้นที่ไหลผ่านระบบ การใช้ Transaction, Constraints, และ Triggers ไม่เพียงแต่ช่วยป้องกันการสูญหายของข้อมูลเท่านั้น แต่ยังสร้างความมั่นใจระดับสถาปัตยกรรม (Architectural Integrity) ว่าทุกธุรกรรมที่เกิดขึ้นนั้นเป็นไปตามกฎเกณฑ์ที่กำหนดไว้ 100% ก่อนที่จะมีการโอนหรือดำเนินการใดๆ ที่เกี่ยวข้องกับทรัพย์สินหรือข้อมูลสำคัญ