ในโลกของการพัฒนาซอฟต์แวร์และระบบข้อมูลขนาดใหญ่ ความขัดแย้งหรือความเห็นที่แตกต่างกันระหว่าง Requirement, Data Schema, หรือ Business Logic เป็นสิ่งที่หลีกเลี่ยงไม่ได้ สิ่งที่สำคัญกว่าการหลีกหนีจากความขัดแย้งคือ วิธีการตอบสนอง ต่อมัน เพราะรูปแบบที่เราเลือกใช้เมื่อเผชิญหน้ากับมุมมองที่ไม่ตรงกันนั้น คือตัวกำหนดทิศทางของความสมบูรณ์ของระบบ (System Integrity) และความสัมพันธ์ในการทำงานร่วมกัน การทำความเข้าใจกลไกเหล่านี้จึงเป็นทักษะสำคัญที่ช่วยให้เราสามารถนำพาตัวเองและโค้ดของเราไปสู่ข้อสรุปที่เป็นประโยชน์สูงสุด
Thomas-Kilmann Model ในมุมมองของ Database Architect
แนวคิดเรื่องรูปแบบการรับมือ (Conflict Styles) ได้พัฒนาขึ้นเพื่อช่วยให้เรามองเห็นว่า การแก้ไขความขัดแย้งในข้อมูลไม่ใช่สูตรสำเร็จตายตัว แต่เป็นการเลือกใช้เครื่องมือ (SQL Techniques) ที่เหมาะสมกับบริบทและสถานการณ์นั้นๆ โดยพื้นฐานแล้ว โมเดลนี้จะพิจารณาจากสองมิติหลัก คือ ระดับการยืนยันในความถูกต้องของข้อมูล (Assertiveness) และ ระดับความใส่ใจต่อความต้องการของระบบอื่น (Cooperativeness) การทำความเข้าใจแกนเหล่านี้จะช่วยให้เราวิเคราะห์ได้ว่า เมื่อไหร่ที่เราควรเน้นที่ ‘ความถูกต้องของข้อมูลหลัก’ และเมื่อไหร่ที่เราควรเน้นที่ ‘การทำให้ระบบทั้งหมดทำงานร่วมกันได้’
การแมป Conflict Styles สู่ PostgreSQL
ในฐานะ System Specialist เราสามารถแมปรูปแบบการรับมือทั้ง 5 รูปแบบ เข้ากับกลไกการจัดการข้อมูลใน PostgreSQL ได้ดังนี้:
- Collaborating (Win-Win): การหาทางออกที่ดีที่สุดสำหรับทุกฝ่าย (Highest Assertiveness, Highest Cooperativeness) ในทาง SQL คือการใช้
JOINหรือCTEเพื่อผสานข้อมูลที่ซับซ้อนให้ได้ผลลัพธ์ที่สมบูรณ์ที่สุด - Compromising (Win-Lose): การประนีประนอม (ปานกลางทั้งสองด้าน) มักใช้
CASE WHENหรือCOALESCEเพื่อเลือกค่าที่อยู่ตรงกลางระหว่างสองทางเลือก - Competing (Win-Lose): การยืนยันความถูกต้องของตนเองอย่างเด็ดขาด (High Assertiveness, Low Cooperativeness) คือการใช้
UPDATEโดยการกำหนดค่าใหม่ทับไปโดยไม่สนใจข้อมูลเก่า - Avoiding (Lose-Lose): การหลีกเลี่ยงความขัดแย้ง (Low Assertiveness, Low Cooperativeness) คือการใช้
WHEREclause เพื่อกรองข้อมูลที่ไม่เกี่ยวข้องออกไปจากมุมมองปัจจุบัน - Accommodating (Lose-Win): การยอมตามฝ่ายอื่น (Low Assertiveness, High Cooperativeness) คือการใช้
INSERT INTO ... SELECT ...เพื่อรับข้อมูลที่ฝ่ายอื่นส่งมาโดยไม่ตรวจสอบความถูกต้องของมัน
ตัวอย่างการ Collaborating (การผสานข้อมูลที่สมบูรณ์)
เมื่อเราต้องการหาข้อมูลที่ตรงกันระหว่างตาราง ‘orders’ และ ‘inventory’ โดยไม่ทิ้งข้อมูลใดๆ ไป เราต้องใช้ JOIN เพื่อให้ได้ผลลัพธ์ที่ครบถ้วน:
SQL
SELECT o.order_id, i.product_name, o.quantity FROM orders o JOIN inventory i ON o.product_id = i.product_id WHERE o.order_id = '101';
บทสรุป: การเลือกใช้เครื่องมือที่เหมาะสม
การเป็น Senior Architect ไม่ได้หมายถึงการรู้คำสั่ง SQL ที่ซับซ้อนที่สุดเท่านั้น แต่หมายถึงการรู้ว่าเมื่อใดควรใช้ JOIN (Collaborating) เมื่อใดควรใช้ WHERE (Avoiding) และเมื่อใดควรใช้ UPDATE (Competing) การวิเคราะห์สถานการณ์ความขัดแย้งด้วย Thomas-Kilmann Model ช่วยให้เราเปลี่ยนจากการตอบสนองทางอารมณ์ ไปสู่การตัดสินใจเชิงเทคนิคที่รอบคอบ ทำให้ระบบของเราไม่เพียงแค่ทำงานได้ แต่ยังมีความยืดหยุ่นและทนทานต่อความขัดแย้งของข้อมูลอย่างแท้จริง