PlusMagi's Blog By Pitt Phunsanit Database Situational Awareness & Context (การกาลเทศะและการวางตัวตามบริบทสังคม)

Situational Awareness & Context (การกาลเทศะและการวางตัวตามบริบทสังคม)

ในโลกของการสื่อสาร มนุษย์จำเป็นต้องมีทักษะที่เรียกว่า ‘Situational Awareness’ หรือการรับรู้เชิงบริบท เพื่อให้สามารถปรับตัวให้เข้ากับสถานการณ์และผู้คนรอบข้างได้อย่างเหมาะสม ในทางเทคนิคและการเขียนโปรแกรม การทำงานที่ประสบความสำเร็จไม่ได้เกิดจากการรันคำสั่งที่ถูกต้องเพียงอย่างเดียว แต่ต้องเกิดจากการที่ระบบสามารถ ‘เข้าใจบริบท’ ของข้อมูลและสถานการณ์ที่กำลังประมวลผลอยู่ด้วย

การรับรู้เชิงบริบท (Contextual Awareness) ใน PostgreSQL

ในฐานะ Senior Architect เราทราบดีว่าการเขียน SQL ที่ดีไม่ใช่แค่การใช้ไวยากรณ์ที่ถูกต้อง แต่คือการออกแบบที่คำนึงถึง ‘บริบท’ เสมอ บริบทในที่นี้หมายถึงปัจจัยรอบข้างที่ส่งผลต่อการทำงานของ Query เช่น บทบาทของผู้ใช้งาน (User Role), ช่วงเวลาที่ Query ถูกรัน (Time Constraint), หรือสถานะของธุรกรรม (Transaction State) การขาดความเข้าใจบริบทจะทำให้เกิดปัญหาที่เรียกว่า ‘Misinterpretation’ ของข้อมูล ซึ่งอาจนำไปสู่การตัดสินใจทางธุรกิจที่ผิดพลาดได้

การประยุกต์ใช้ Context ใน SQL ด้วย PostgreSQL

PostgreSQL มีเครื่องมือที่ยอดเยี่ยมในการจำลองการรับรู้เชิงบริบท เช่น การใช้ฟังก์ชัน `CASE` statement, การกำหนด Session Variables, หรือการใช้ Common Table Expressions (CTEs) เพื่อจำกัดขอบเขตของข้อมูลให้สอดคล้องกับเงื่อนไขภายนอก

ตัวอย่างเช่น หากเราต้องการแสดงราคาสินค้าให้กับผู้ใช้ ระบบต้องรู้ก่อนว่าผู้ใช้คนนั้นมีสิทธิ์เป็น ‘ผู้ดูแลระบบ’ (Admin) หรือเป็น ‘ลูกค้าทั่วไป’ (Guest) เพื่อกำหนดราคาที่แตกต่างกัน นี่คือการทำงานที่ต้องอาศัย Contextual Awareness อย่างแท้จริง

SQL

-- สมมติว่ามีตาราง products (product_id, base_price, admin_price) และเราต้องการแสดงราคาตามบทบาทผู้ใช้
SELECT
    p.product_name,
    CASE
        -- ตรวจสอบบริบท: ถ้าผู้ใช้เป็น Admin ให้ใช้ราคาพิเศษ
        WHEN current_user = 'admin' THEN p.admin_price
        -- บริบทปกติ: ถ้าไม่ใช่ Admin ให้ใช้ราคาพื้นฐาน
        ELSE p.base_price
    END AS displayed_price
FROM
    products p
WHERE
    p.product_id = 1;

บทสรุป: จากการวางตัวสู่การออกแบบระบบ

การพัฒนาทักษะการรับรู้เชิงบริบท ไม่ว่าจะเป็นการเข้าสังคมหรือการเขียนโค้ด คือการยกระดับจากผู้ใช้งาน (User) ไปสู่การเป็นสถาปนิก (Architect) ที่มองเห็นภาพรวมทั้งหมด การเขียนโค้ดที่คำนึงถึงบริบทอย่างรอบด้าน ทำให้ระบบของเรามีความยืดหยุ่น (Resilient) ปลอดภัย (Secure) และสามารถปรับตัวเข้ากับความต้องการทางธุรกิจที่เปลี่ยนแปลงไปได้เสมอ

Exit mobile version