PlusMagi's Blog By Pitt Phunsanit Backend,Business,Database Perceivable (รับรู้ได้): Distinguishable (อัตราส่วน Contrast ของสีตามเกณฑ์ $4.5:1$ หรือ $3:1$, การไม่ใช้สีเพียงอย่างเดียวในการสื่อสาร, การซูมขยายหน้าจอได้ถึง 200–400% โดยไม่แตกหรือล้นจอ)

Perceivable (รับรู้ได้): Distinguishable (อัตราส่วน Contrast ของสีตามเกณฑ์ $4.5:1$ หรือ $3:1$, การไม่ใช้สีเพียงอย่างเดียวในการสื่อสาร, การซูมขยายหน้าจอได้ถึง 200–400% โดยไม่แตกหรือล้นจอ)

ในฐานะ Senior Architect ที่ต้องออกแบบระบบที่ยั่งยืนและครอบคลุมผู้ใช้งานทุกกลุ่ม การคำนึงถึงหลักการเข้าถึง (Accessibility) จึงเป็นสิ่งสำคัญอย่างยิ่ง หัวข้อ ‘Perceivable’ (รับรู้ได้) ตามมาตรฐาน WCAG คือรากฐานที่กำหนดว่าข้อมูลและส่วนต่อประสานผู้ใช้ (UI) จะต้องถูกรับรู้ได้โดยผู้ใช้งานทุกคน ไม่ว่าจะมีข้อจำกัดทางร่างกายหรือเทคโนโลยีใดๆ

แม้ว่า PostgreSQL จะเป็นระบบจัดการฐานข้อมูล (DBMS) แต่หลักการออกแบบข้อมูลที่แข็งแกร่ง (Data Integrity) สามารถสะท้อนถึงการออกแบบ UI ที่รับรู้ได้ได้ โดยเฉพาะในประเด็นเรื่อง Contrast Ratio, การไม่พึ่งพาแค่สี, และความสามารถในการขยายขนาด (Zoomability) ซึ่งเราจะสาธิตการบังคับใช้หลักการเหล่านี้ผ่านไวยากรณ์ของ PostgreSQL

→ การบังคับใช้ Contrast และการไม่พึ่งพาแค่สี (Non-Color Reliance)

หลักการ WCAG กำหนดให้มีการเปรียบต่างของสี (Contrast Ratio) อย่างน้อย 4.5:1 สำหรับข้อความปกติ และ 3:1 สำหรับองค์ประกอบสำคัญ การพึ่งพาแค่สีในการสื่อสารถือเป็นข้อบกพร่องที่ร้ายแรง เราสามารถจำลองการตรวจสอบความถูกต้องของข้อมูลที่เกี่ยวข้องกับความสามารถในการรับรู้ผ่าน PostgreSQL โดยการใช้ CHECK Constraint เพื่อให้มั่นใจว่าข้อมูลที่สำคัญต้องมีค่าที่ถูกต้องตามเกณฑ์

สมมติว่าเรามีตาราง `accessibility_metadata` ที่เก็บข้อมูลสถานะการเข้าถึงขององค์ประกอบต่างๆ:

SQL

CREATE TABLE accessibility_metadata (  id SERIAL PRIMARY KEY,  element_name VARCHAR(100) NOT NULL,  contrast_ratio NUMERIC NOT NULL,  is_color_only BOOLEAN DEFAULT FALSE);  ALTER TABLE accessibility_metadata ADD CONSTRAINT check_contrast_ratio CHECK (contrast_ratio >= 3.0 AND contrast_ratio <= 21.0); 

การใช้ `CHECK` Constraint นี้บังคับว่าทุกค่า `contrast_ratio` ที่ถูกบันทึกต้องมีค่าที่สมเหตุสมผลตามหลักการ WCAG (เช่น ต้องไม่ต่ำกว่า 3.0) ซึ่งเป็นการรับประกันความสมบูรณ์ของข้อมูลที่รองรับการเข้าถึง

→ การรองรับการขยายขนาดและการซูม (Scalability and Zoomability)

การที่หน้าจอสามารถซูมได้ถึง 200-400% โดยไม่แตกหรือล้นจอ หมายถึงโครงสร้างข้อมูลและการแสดงผลต้องมีความยืดหยุ่นและรองรับการขยายตัวของข้อมูลได้อย่างสมบูรณ์ ในเชิงฐานข้อมูล เราต้องมั่นใจว่าการ Query ข้อมูลที่ซับซ้อนยังคงให้ผลลัพธ์ที่สมบูรณ์และไม่ขาดหาย

เราสามารถใช้การ Query ที่ซับซ้อนร่วมกับ JOINs เพื่อจำลองการดึงข้อมูลที่ต้องแสดงผลอย่างสมบูรณ์:

SQL

SELECT p.element_name, p.contrast_ratio, c.description FROM accessibility_metadata p JOIN component_details c ON p.element_name = c.element_name WHERE p.contrast_ratio >= 4.5 AND c.is_critical = TRUE;

โค้ดนี้แสดงให้เห็นว่าระบบต้องดึงข้อมูลที่ผ่านเกณฑ์ความเปรียบต่างสูง (>= 4.5) และต้องเป็นส่วนประกอบที่สำคัญ (`is_critical = TRUE`) เท่านั้น ซึ่งเป็นการรับประกันว่าข้อมูลที่แสดงผลจะมีความสมบูรณ์และมีลำดับความสำคัญที่ชัดเจน ไม่ว่าหน้าจอจะถูกขยายขนาดอย่างไรก็ตาม

→ บทสรุป: การออกแบบที่คำนึงถึงผู้ใช้เป็นศูนย์กลาง

การออกแบบระบบที่คำนึงถึงหลักการ ‘Perceivable’ ไม่ใช่แค่เรื่องของ UI แต่เป็นเรื่องของสถาปัตยกรรมข้อมูลด้วย การใช้คุณสมบัติของ PostgreSQL เช่น `CHECK` Constraints และการ Query ที่แม่นยำ ไม่เพียงแต่ช่วยรักษาความถูกต้องของข้อมูลเท่านั้น แต่ยังเป็นรากฐานที่แข็งแกร่งในการสร้างผลิตภัณฑ์ดิจิทัลที่สามารถเข้าถึงได้จริงสำหรับทุกคน ทำให้ระบบของเรามีความยืดหยุ่นและทนทานต่อข้อจำกัดต่างๆ ของผู้ใช้งาน