PlusMagi's Blog By Pitt Phunsanit Backend,Database ฟังก์ชันและกราฟ (Functions and Graphs)

ฟังก์ชันและกราฟ (Functions and Graphs)

ในโลกของระบบฐานข้อมูลขนาดใหญ่ (Enterprise Data Systems) ข้อมูลไม่ได้เป็นเพียงแค่ตารางที่เก็บค่าต่างๆ แต่เป็นเครือข่ายของความสัมพันธ์ที่ซับซ้อน การทำความเข้าใจว่าการเปลี่ยนแปลงของข้อมูลตัวแปรหนึ่งส่งผลกระทบต่ออีกตัวแปรหนึ่งอย่างไร คือหัวใจสำคัญของการสร้างแบบจำลองทางธุรกิจ (Business Modeling) ซึ่งในทางเทคนิคแล้ว สิ่งนี้คือการสร้าง ‘ฟังก์ชัน’ (Function) ทางคณิตศาสตร์

ในบริบทของ PostgreSQL, ฟังก์ชันไม่ได้เป็นเพียงแค่การเขียนโค้ด แต่คือการสร้าง ‘กฎเกณฑ์’ ทางธุรกิจที่สามารถคำนวณและกำหนดความสัมพันธ์ระหว่างอินพุต (Input) และเอาต์พุต (Output) ได้อย่างแม่นยำ ทำให้เราสามารถจำลองกระบวนการที่ซับซ้อน เช่น การคำนวณภาษี, การกำหนดคะแนนเครดิต, หรือการแปลงหน่วยต่างๆ ได้อย่างเป็นระบบ

⚙️ ฟังก์ชันใน PostgreSQL: การสร้างแบบจำลองความสัมพันธ์ (Modeling Dependency)

หัวใจหลักของแนวคิดนี้คือการใช้คำสั่ง CREATE FUNCTION เพื่อกำหนด y = f(x) โดยที่ x คือตัวแปรอิสระ (Input Parameter) และ y คือตัวแปรตาม (Return Value) การทำความเข้าใจขอบเขตของค่าที่ฟังก์ชันรับได้ (Domain) และประเภทของค่าที่ฟังก์ชันส่งคืน (Range) จึงเป็นสิ่งสำคัญยิ่งในการออกแบบสถาปัตยกรรมฐานข้อมูล

💡 หลักการทำงาน: การจำลองความสัมพันธ์ทางธุรกิจ

สมมติว่าเราต้องการสร้างฟังก์ชันที่คำนวณราคาสุทธิ (Net Price) โดยรับค่าราคาก่อนภาษี (Pre-tax Price) และอัตราภาษี (Tax Rate) เข้ามา ฟังก์ชันนี้จะทำหน้าที่เป็นตัวแทนของความสัมพันธ์ทางธุรกิจที่ว่า: ราคาสุทธิ = ราคาตั้งต้น * (1 + อัตราภาษี)

SQL

-- 1. สร้างฟังก์ชันที่รับค่าราคาและอัตราภาษีเป็น Input (Domain) และส่งคืนค่าเป็น NUMERIC (Range) 
CREATE OR REPLACE FUNCTION calculate_net_price(pre_tax_price NUMERIC, tax_rate NUMERIC) 
RETURNS NUMERIC AS 
$$ 
BEGIN 
    -- นี่คือการคำนวณความสัมพันธ์: y = x * (1 + r) 
    RETURN pre_tax_price * (1 + tax_rate); 
END; 
$$ LANGUAGE plpgsql; 

-- 2. การเรียกใช้ฟังก์ชันเพื่อทดสอบ (การกำหนดค่า Input) 
SELECT calculate_net_price(100.00, 0.07); 
-- ผลลัพธ์ที่ได้คือ 107.00 (แสดงว่าฟังก์ชันทำงานตามความสัมพันธ์ที่กำหนด)

📈 การวิเคราะห์กราฟเชิงระบบ (System Graph Analysis)

แม้ว่า PostgreSQL จะไม่ได้แสดงกราฟโดยตรง แต่การใช้ฟังก์ชันและการรวมตาราง (JOINs) ร่วมกันก็คือการสร้าง ‘โครงร่าง’ ของกราฟความสัมพันธ์ (Relationship Graph) ทางข้อมูล เมื่อเราใช้ฟังก์ชันในการคำนวณค่าที่ต้องผ่านการประมวลผลก่อนการ Join ข้อมูล ทำให้มั่นใจได้ว่าข้อมูลที่ถูกนำมาเชื่อมโยงกันนั้นมีความสอดคล้องทางตรรกะ (Logical Consistency) เสมอ

การใช้ฟังก์ชันที่ถูกต้องจึงช่วยให้เราสามารถตรวจสอบความสมเหตุสมผลของแบบจำลองข้อมูลได้ตั้งแต่ระดับโค้ด ทำให้ระบบมีความเสถียรและสามารถคาดการณ์ผลลัพธ์ได้อย่างแม่นยำในทุกๆ การ Query

✅ บทสรุป

การเข้าใจและใช้ประโยชน์จาก PostgreSQL Functions คือการยกระดับการเขียน SQL จากการเป็นเพียงการดึงข้อมูล (Retrieval) ไปสู่การเป็นเครื่องมือในการจำลองกระบวนการทางธุรกิจ (Process Modeling) อย่างแท้จริง การกำหนดฟังก์ชันที่ชัดเจนจึงเป็นรากฐานสำคัญในการสร้างสถาปัตยกรรมฐานข้อมูลที่ซับซ้อน มีความยืดหยุ่น และสามารถรองรับการขยายตัวของระบบในอนาคตได้อย่างมีประสิทธิภาพ