SQL
-- 1. Goals: เก็บเป้าหมายหลักทั้งหมด (OKRs/Goals)<br>CREATE TABLE goals ( <br> goal_id SERIAL PRIMARY KEY, <br> goal_name VARCHAR(255) NOT NULL, <br> goal_type VARCHAR(50) NOT NULL, -- e.g., 'OKR', 'KPI' <br> parent_goal_id INT REFERENCES goals(goal_id) <br>);<br><br>-- 2. Departments: เก็บแผนกงาน<br>CREATE TABLE departments ( <br> dept_id SERIAL PRIMARY KEY, <br> dept_name VARCHAR(100) NOT NULL, <br> parent_dept_id INT REFERENCES departments(dept_id) <br>);<br><br>-- 3. Employee_Goals: ตารางเชื่อมโยงว่าพนักงานคนใดรับผิดชอบเป้าหมายใด<br>CREATE TABLE employee_goals ( <br> employee_id INT, -- สมมติว่ามีตาราง employee อยู่แล้ว <br> goal_id INT REFERENCES goals(goal_id), <br> PRIMARY KEY (employee_id, goal_id) <br>);
2. การจำลอง Goal Alignment ด้วย CTE (Common Table Expression)
“>เราใช้ Common Table Expression (CTE) ร่วมกับคำสั่ง JOIN เพื่อจำลองการไหลของเป้าหมาย (Goal Flow) ตั้งแต่เป้าหมายระดับองค์กร (Company Goal) ลงมาถึงเป้าหมายของพนักงานแต่ละคน (Individual Goal) ซึ่งแสดงให้เห็นว่าทุกงานที่ทำมีผลต่อเป้าหมายหลักอย่างไร
SQL
WITH RECURSIVE goal_hierarchy AS ( <br> -- Base Case: เป้าหมายระดับองค์กร (Company Level) <br> SELECT goal_id, goal_name, 1 AS level, 'Company' AS scope FROM goals WHERE parent_goal_id IS NULL <br> UNION ALL <br> -- Recursive Step: เชื่อมโยงลงสู่ระดับแผนกและบุคคล <br> SELECT g.goal_id, g.goal_name, gh.level + 1, <br> CASE WHEN g.parent_goal_id IS NULL THEN 'Company' <br> WHEN EXISTS (SELECT 1 FROM departments WHERE dept_id = g.parent_goal_id) THEN 'Department' <br> ELSE 'Individual' END AS scope <br> FROM goals g <br> JOIN goal_hierarchy gh ON g.parent_goal_id = gh.goal_id <br>) <br>SELECT * FROM goal_hierarchy ORDER BY level, goal_id;
บทสรุป: การออกแบบเชิงสถาปัตยกรรม
“>การใช้ PostgreSQL ในการจำลอง Goal Alignment ไม่เพียงแต่เป็นการจัดเก็บข้อมูลเท่านั้น แต่เป็นการสร้าง ‘ระบบความจริงเดียว’ (Single Source of Truth) สำหรับเป้าหมายขององค์กร การใช้ CTE และ JOIN ทำให้เราสามารถ Query และตรวจสอบความเชื่อมโยงของ OKRs และ KPIs ได้อย่างรวดเร็วและแม่นยำ
“>การออกแบบเชิงสถาปัตยกรรมเช่นนี้ช่วยให้องค์กรไม่เพียงแต่รู้ว่า ‘อะไรคือเป้าหมาย’ แต่ยังรู้ว่า ‘ใครต้องทำอะไร’ เพื่อขับเคลื่อนเป้าหมายนั้นๆ ได้อย่างมีประสิทธิภาพสูงสุด
“>ในยุคที่องค์กรต้องขับเคลื่อนด้วยข้อมูล (Data-Driven World) การที่พนักงานทุกคนเข้าใจว่างานที่ทำอยู่เชื่อมโยงกับเป้าหมายใหญ่ขององค์กรอย่างไร คือหัวใจสำคัญของความสำเร็จ การขาดการจัดเรียงเป้าหมาย (Goal Alignment) ทำให้เกิดภาวะที่พนักงานทำงานหนักแต่ไม่รู้ว่ากำลังมุ่งหน้าไปที่ใด (Busy but not productive)
“>ในฐานะ System Architect เราสามารถใช้หลักการของฐานข้อมูลเชิงสัมพันธ์อย่าง PostgreSQL เพื่อจำลองกระบวนการเชิงกลยุทธ์ในการเชื่อมโยงเป้าหมายระดับองค์กร (Goals) เข้ากับตัวชี้วัดผลงาน (KPIs) และเป้าหมายเชิงท้าทาย (OKRs) อย่างเป็นระบบและมีโครงสร้างชัดเจน
1. การสร้าง Schema สำหรับ Goal Alignment
“>การจัดเรียงเป้าหมายเปรียบเสมือนการสร้างตารางข้อมูล (Schema) ที่มีลำดับชั้น (Hierarchy) โดยเราต้องกำหนดตารางหลักที่เชื่อมโยงเป้าหมายจากระดับองค์กร (Company) ลงสู่ระดับบุคคล (Individual) โดยใช้ Foreign Keys เพื่อรักษาความสมบูรณ์ของข้อมูล (Data Integrity)
SQL
-- 1. Goals: เก็บเป้าหมายหลักทั้งหมด (OKRs/Goals)<br>CREATE TABLE goals ( <br> goal_id SERIAL PRIMARY KEY, <br> goal_name VARCHAR(255) NOT NULL, <br> goal_type VARCHAR(50) NOT NULL, -- e.g., 'OKR', 'KPI' <br> parent_goal_id INT REFERENCES goals(goal_id) <br>);<br><br>-- 2. Departments: เก็บแผนกงาน<br>CREATE TABLE departments ( <br> dept_id SERIAL PRIMARY KEY, <br> dept_name VARCHAR(100) NOT NULL, <br> parent_dept_id INT REFERENCES departments(dept_id) <br>);<br><br>-- 3. Employee_Goals: ตารางเชื่อมโยงว่าพนักงานคนใดรับผิดชอบเป้าหมายใด<br>CREATE TABLE employee_goals ( <br> employee_id INT, -- สมมติว่ามีตาราง employee อยู่แล้ว <br> goal_id INT REFERENCES goals(goal_id), <br> PRIMARY KEY (employee_id, goal_id) <br>);
2. การจำลอง Goal Alignment ด้วย CTE (Common Table Expression)
“>เราใช้ Common Table Expression (CTE) ร่วมกับคำสั่ง JOIN เพื่อจำลองการไหลของเป้าหมาย (Goal Flow) ตั้งแต่เป้าหมายระดับองค์กร (Company Goal) ลงมาถึงเป้าหมายของพนักงานแต่ละคน (Individual Goal) ซึ่งแสดงให้เห็นว่าทุกงานที่ทำมีผลต่อเป้าหมายหลักอย่างไร
SQL
WITH RECURSIVE goal_hierarchy AS ( <br> -- Base Case: เป้าหมายระดับองค์กร (Company Level) <br> SELECT goal_id, goal_name, 1 AS level, 'Company' AS scope FROM goals WHERE parent_goal_id IS NULL <br> UNION ALL <br> -- Recursive Step: เชื่อมโยงลงสู่ระดับแผนกและบุคคล <br> SELECT g.goal_id, g.goal_name, gh.level + 1, <br> CASE WHEN g.parent_goal_id IS NULL THEN 'Company' <br> WHEN EXISTS (SELECT 1 FROM departments WHERE dept_id = g.parent_goal_id) THEN 'Department' <br> ELSE 'Individual' END AS scope <br> FROM goals g <br> JOIN goal_hierarchy gh ON g.parent_goal_id = gh.goal_id <br>) <br>SELECT * FROM goal_hierarchy ORDER BY level, goal_id;
บทสรุป: การออกแบบเชิงสถาปัตยกรรม
“>การใช้ PostgreSQL ในการจำลอง Goal Alignment ไม่เพียงแต่เป็นการจัดเก็บข้อมูลเท่านั้น แต่เป็นการสร้าง ‘ระบบความจริงเดียว’ (Single Source of Truth) สำหรับเป้าหมายขององค์กร การใช้ CTE และ JOIN ทำให้เราสามารถ Query และตรวจสอบความเชื่อมโยงของ OKRs และ KPIs ได้อย่างรวดเร็วและแม่นยำ
“>การออกแบบเชิงสถาปัตยกรรมเช่นนี้ช่วยให้องค์กรไม่เพียงแต่รู้ว่า ‘อะไรคือเป้าหมาย’ แต่ยังรู้ว่า ‘ใครต้องทำอะไร’ เพื่อขับเคลื่อนเป้าหมายนั้นๆ ได้อย่างมีประสิทธิภาพสูงสุด