PlusMagi's Blog By Pitt Phunsanit Business,Database Understandable (เข้าใจได้): Readable (ระบุภาษาของหน้าและส่วนเนื้อหา lang=”th”, ภาษาที่เข้าใจง่าย Plain Language)

Understandable (เข้าใจได้): Readable (ระบุภาษาของหน้าและส่วนเนื้อหา lang=”th”, ภาษาที่เข้าใจง่าย Plain Language)

ในฐานะ System Specialist และ Senior Architect การออกแบบระบบฐานข้อมูลที่ยอดเยี่ยมไม่ได้วัดแค่ที่ประสิทธิภาพ (Performance) เท่านั้น แต่ยังรวมถึงความสามารถในการทำความเข้าใจ (Understandability) และความง่ายในการอ่าน (Readability) ของโค้ดและโครงสร้างข้อมูลด้วย

สำหรับนักพัฒนาและผู้ดูแลระบบที่ต้องทำงานกับ PostgreSQL เป็นประจำ การเขียน Query ที่ซับซ้อนโดยขาดความชัดเจน เปรียบเสมือนการเขียนภาษาที่ไม่มีไวยากรณ์ ทำให้การบำรุงรักษา (Maintenance) ในอนาคตเป็นเรื่องยากยิ่ง หัวข้อนี้จึงมุ่งเน้นไปที่หลักการทำให้ PostgreSQL สามารถทำงานที่ซับซ้อนได้อย่าง ‘เข้าใจได้’ (Understandable) โดยใช้หลักการ Plain Language ในการออกแบบโค้ด SQL

💡 หลักการทำให้ PostgreSQL Query อ่านง่าย (Readability Principles)

การทำให้ Query อ่านง่ายในบริบทของ PostgreSQL คือการจัดโครงสร้างโค้ดให้เลียนแบบลำดับความคิดของมนุษย์ โดยมีหลักการสำคัญดังนี้:

  1. การตั้งชื่อที่สื่อความหมาย (Semantic Naming): ตั้งชื่อตาราง (Table) และคอลัมน์ (Column) ให้ชัดเจน เช่น แทนที่จะใช้ `tbl_data_01` ควรใช้ `user_records` หรือ `transaction_details`
  2. การจัดโครงสร้างด้วย CTEs (Common Table Expressions): นี่คือหัวใจสำคัญที่สุดในการเพิ่มความสามารถในการอ่านของ Query โดยการใช้ `WITH` clause ช่วยให้เราสามารถแบ่ง Query ที่ซับซ้อนออกเป็นขั้นตอนย่อยๆ ที่มีชื่อกำกับ ทำให้ผู้อ่านทราบว่าแต่ละส่วนของข้อมูลถูกประมวลผลอย่างไร
  3. การใช้ Comments: แม้ว่า SQL จะไม่มีไวยากรณ์ Comment สำหรับการทำงาน แต่การใส่ Comment อธิบายวัตถุประสงค์ของ Query ในส่วนที่สำคัญจะช่วยให้ความเข้าใจเพิ่มขึ้นมาก

⚙️ ตัวอย่างการปรับปรุง Query ให้เข้าใจง่ายด้วย CTEs

สมมติว่าเรามี Query ที่ซับซ้อนที่ต้องกรองข้อมูลผู้ใช้และคำนวณยอดรวมการซื้อขาย การใช้ CTE จะช่วยให้เราแยกขั้นตอนการกรองและการคำนวณออกจากกันอย่างชัดเจน ทำให้โค้ดอ่านง่ายเหมือนการอ่านรายงานทางธุรกิจ:

SQL

-- 1. กำหนดขั้นตอนที่ 1: กรองเฉพาะผู้ใช้ที่อยู่ในเขต 'Bangkok' และมีสถานะ 'Active' (Understandable Step) 
WITH active_users AS (
    SELECT user_id, user_name, region
    FROM users
    WHERE region = 'Bangkok' AND status = 'Active'
),
-- 2. กำหนดขั้นตอนที่ 2: คำนวณยอดรวมการซื้อขายสำหรับผู้ใช้ที่ผ่านการกรองแล้ว (Calculate Total Sales)
calculated_sales AS (
    SELECT
        u.user_id,
        u.user_name,
        SUM(t.amount) AS total_spent
    FROM users u
    JOIN transactions t ON u.user_id = t.user_id
    WHERE u.user_id IN (SELECT user_id FROM active_users)
    GROUP BY u.user_id, u.user_name
)
-- 3. ขั้นตอนสุดท้าย: เลือกผลลัพธ์ที่ต้องการ (Final Output)
SELECT
    user_name,
    total_spent
FROM calculated_sales
WHERE total_spent > 100.00;

จากตัวอย่างข้างต้น การใช้ `WITH` clause ทำให้ Query ถูกแบ่งออกเป็นบล็อกที่ชื่อว่า `active_users` และ `calculated_sales` อย่างชัดเจน ทำให้ผู้ที่อ่านโค้ดไม่จำเป็นต้องไล่ตามตรรกะที่ซับซ้อนในบล็อกเดียว

✅ บทสรุป: Readability คือองค์ประกอบทางสถาปัตยกรรม

การให้ความสำคัญกับ Readability ใน PostgreSQL ไม่ใช่เพียงแค่การจัดรูปแบบโค้ด แต่เป็นการยกระดับมาตรฐานทางสถาปัตยกรรม (Architectural Standard) ของฐานข้อมูล การใช้ CTEs, การตั้งชื่อที่สื่อความหมาย, และการจัดโครงสร้างที่เป็นระเบียบ จะช่วยลด Learning Curve สำหรับนักพัฒนาคนใหม่ และทำให้ระบบฐานข้อมูลมีความยั่งยืน (Sustainable) ในระยะยาว ซึ่งเป็นหัวใจสำคัญของระบบระดับ Senior Architect อย่างแท้จริง