ในฐานะ System Architect ที่ดูแลระบบฐานข้อมูลขนาดใหญ่ การรักษาความสม่ำเสมอ (Design Consistency) ของโครงสร้างตาราง (Schema) ถือเป็นหัวใจสำคัญของการบำรุงรักษาและขยายระบบ การที่คอลัมน์ต่าง ๆ ในตารางเดียวกันหรือต่างตารางกันมีรูปแบบการตั้งชื่อ (Naming Convention) ที่ไม่เป็นมาตรฐาน เช่น การใช้ Prefix ที่แตกต่างกันโดยไม่มีการควบคุม จะนำไปสู่ปัญหาในการเขียน Query ที่ซับซ้อนและยากต่อการแก้ไขในอนาคต
บทความนี้จะนำเสนอแนวทางเชิงเทคนิคในการใช้ PostgreSQL เพื่อตรวจสอบและวิเคราะห์ความสม่ำเสมอของ Column Prefix โดยอาศัยการ Query ข้อมูลจากระบบ Metadata ของฐานข้อมูล (Information Schema) ซึ่งเป็นวิธีการที่แม่นยำและเป็นมาตรฐานสำหรับงาน Audit Schema โดยเฉพาะ
💡 หลักการตรวจสอบ Column Prefix ใน PostgreSQL
การตรวจสอบ Prefix ไม่ได้หมายถึงการหาว่าคอลัมน์นั้นมีคำนำหน้าหรือไม่ แต่หมายถึงการนับจำนวนส่วนประกอบ (Parts) ของชื่อคอลัมน์ที่ถูกคั่นด้วยตัวแบ่ง (Delimiter) ที่เรากำหนด เช่น การใช้เครื่องหมายขีดล่าง (_) เป็นตัวแบ่ง Prefix หากชื่อคอลัมน์คือ user_first_name เราสามารถถือว่ามี Prefix 3 ส่วนคือ user, first, และ name
เราจะใช้ information_schema.columns ซึ่งเป็นมุมมองที่รวบรวมข้อมูลเกี่ยวกับคอลัมน์ทั้งหมดในฐานข้อมูล PostgreSQL เพื่อดำเนินการวิเคราะห์นี้
⚙️ PostgreSQL Query สำหรับ Audit Column Prefix
โค้ดด้านล่างนี้ใช้ฟังก์ชัน regexp_split_to_array ของ PostgreSQL เพื่อแยกชื่อคอลัมน์ออกเป็นอาร์เรย์ตามตัวแบ่งที่กำหนด (ในที่นี้คือ _) และใช้ array_length เพื่อนับจำนวนส่วนประกอบที่ได้:
SQL
SELECT
table_schema,
table_name,
column_name,
-- นับจำนวนส่วนประกอบของ Prefix โดยใช้ '_' เป็นตัวแบ่ง
array_length(regexp_split_to_array(column_name, '_'), 1) AS Prefix_Part_Count
FROM
information_schema.columns
WHERE
table_schema NOT IN ('pg_catalog', 'information_schema')
ORDER BY
table_schema, table_name, Prefix_Part_Count DESC;
คำอธิบายโค้ด:
information_schema.columns: แหล่งข้อมูลที่เก็บรายละเอียดคอลัมน์ทั้งหมดregexp_split_to_array(column_name, '_'): ฟังก์ชันนี้จะทำการแยกชื่อคอลัมน์ (column_name) ออกเป็นอาร์เรย์ โดยใช้_เป็นตัวคั่นarray_length(..., 1): ฟังก์ชันนี้จะนับจำนวนองค์ประกอบ (Elements) ในอาร์เรย์ที่ได้ ซึ่งเท่ากับจำนวน Prefix ที่เราต้องการตรวจสอบ
✅ การวิเคราะห์ผลลัพธ์และการปรับปรุง Schema
เมื่อรัน Query นี้แล้ว หากคุณพบว่าค่า Prefix_Part_Count มีความแตกต่างกันอย่างมากในตารางเดียวกัน (เช่น บางคอลัมน์มีค่า 2 แต่บางคอลัมน์มีค่า 5) นั่นเป็นสัญญาณบ่งชี้ถึงการขาดความสม่ำเสมอในการตั้งชื่อ (Inconsistent Naming Convention) ซึ่งควรได้รับการแก้ไขโดยการกำหนดมาตรฐาน Prefix ที่ชัดเจน เช่น การใช้รูปแบบ {module}_{entity}_{attribute} เสมอ
การทำ Audit ด้วยวิธีนี้ไม่เพียงแต่ช่วยให้คุณเห็นภาพรวมของโครงสร้างฐานข้อมูลเท่านั้น แต่ยังช่วยให้ทีมพัฒนาสามารถสร้างมาตรฐานการตั้งชื่อคอลัมน์ที่แข็งแกร่ง เพื่อให้ระบบมีความยืดหยุ่นและง่ายต่อการบำรุงรักษาในระยะยาว
✨ บทสรุป
การตรวจสอบ Column Prefix ด้วย PostgreSQL ผ่าน information_schema เป็นเครื่องมือที่จำเป็นสำหรับ Senior Architect ทุกท่านในการรักษาคุณภาพของ Schema การกำหนดมาตรฐานการตั้งชื่อและการใช้ Query นี้อย่างสม่ำเสมอ จะช่วยลด Technical Debt และยกระดับความน่าเชื่อถือของระบบฐานข้อมูลโดยรวมได้อย่างมีนัยสำคัญ