PlusMagi's Blog By Pitt Phunsanit Database ทฤษฎีเซต (Set Theory)

ทฤษฎีเซต (Set Theory)

ในโลกของวิทยาการคอมพิวเตอร์และฐานข้อมูล การจัดเก็บและจัดการข้อมูลที่มีความสัมพันธ์กันอย่างมีระบบคือหัวใจสำคัญของทุกแอปพลิเคชัน แนวคิดทางคณิตศาสตร์ที่เรียกว่า ทฤษฎีเซต (Set Theory) คือรากฐานที่ไม่ได้จำกัดอยู่แค่ในตำราคณิตศาสตร์เท่านั้น แต่ยังเป็นหลักการสำคัญในการออกแบบระบบฐานข้อมูลเชิงสัมพันธ์ (Relational Database) อย่าง PostgreSQL ด้วย

สำหรับ System Specialist และ Senior Architect การเข้าใจทฤษฎีเซตจะช่วยให้เราสามารถมองข้อมูลในรูปแบบของ ‘กลุ่มของสมาชิก’ (Set of Members) และสามารถดำเนินการเชิงตรรกะ (Logical Operations) เช่น การรวม การหาจุดร่วม หรือการหาความแตกต่างได้อย่างแม่นยำที่สุด

Set Theory ในมุมมองของ PostgreSQL

ในบริบทของ PostgreSQL ข้อมูลแต่ละตาราง (Table) หรือผลลัพธ์ของคำสั่ง Query ที่ได้ออกมานั้น สามารถถูกมองว่าเป็น ‘เซต’ (Set) ของแถวข้อมูล (Rows) ได้ การดำเนินการทางเซตจึงถูกนำมาใช้ผ่านตัวดำเนินการ (Operators) มาตรฐานของ SQL เพื่อให้เราสามารถจัดการความสัมพันธ์ของชุดข้อมูลได้อย่างทรงพลัง

การดำเนินการพื้นฐานทางเซต (Set Operations)

ทฤษฎีเซตกำหนดให้มีการดำเนินการหลักๆ 3 อย่าง ซึ่ง PostgreSQL รองรับอย่างสมบูรณ์:

  1. Union ($igcup$): คือการรวมเซตทั้งหมดเข้าด้วยกัน โดยจะตัดค่าที่ซ้ำกันออกไป (เหมือนการรวมข้อมูลจากหลายแหล่งโดยไม่ซ้ำกัน)
  2. Intersection ($igcap$): คือการหาจุดร่วมของสมาชิกที่ปรากฏอยู่ในทุกเซตที่นำมาเปรียบเทียบ
  3. Difference ($ackslash$): คือการหาเซตของสมาชิกที่อยู่ในเซตแรก แต่ไม่อยู่ในเซตที่สอง

เราสามารถสาธิตการใช้งานเหล่านี้โดยสมมติว่าเรามีเซตข้อมูลของรหัสสินค้า (Product IDs) ในตารางสมมติ:

SQL

-- 1. Union (รวมเซต: สินค้า A หรือ B) <br>SELECT product_id FROM products_a <br>UNION <br>SELECT product_id FROM products_b;

SQL

-- 2. Intersection (หาจุดร่วม: สินค้าที่อยู่ในทั้ง A และ B) <br>SELECT product_id FROM products_a <br>INTERSECT <br>SELECT product_id FROM products_b;

SQL

-- 3. Difference (หาความแตกต่าง: สินค้าที่อยู่ใน A แต่ไม่อยู่ใน B) <br>SELECT product_id FROM products_a <br>EXCEPT <br>SELECT product_id FROM products_b;

การนับขนาดของเซต (Cardinality)

แนวคิดเรื่องขนาดของเซต (Cardinality) คือการนับจำนวนสมาชิกทั้งหมดในเซตนั้นๆ ใน PostgreSQL เราใช้ฟังก์ชัน Aggregate Function อย่าง COUNT() เพื่อหาขนาดของเซตผลลัพธ์ได้อย่างง่ายดาย:

SQL

-- นับจำนวนสมาชิกทั้งหมดในเซตผลลัพธ์ <br>SELECT count(DISTINCT product_id) AS total_cardinality <br>FROM ( <br>    SELECT 'apple' AS product_id, 'A' AS source UNION ALL <br>    SELECT 'banana' AS product_id, 'A' AS source UNION ALL <br>    SELECT 'apple' AS product_id, 'B' AS source <br>) AS combined_set;

บทสรุป: การประยุกต์ใช้ในสถาปัตยกรรมระบบ

การทำความเข้าใจทฤษฎีเซตช่วยให้เราไม่ได้มอง PostgreSQL เป็นเพียงแค่เครื่องมือในการเก็บข้อมูล แต่เป็นการมองเป็น ‘ระบบการจัดการเซตข้อมูล’ (Set Management System) ที่มีประสิทธิภาพสูง การใช้ Union, Intersect, และ Except อย่างเชี่ยวชาญ ไม่เพียงแต่ช่วยให้ Query ของเราถูกต้องตามหลักคณิตศาสตร์เท่านั้น แต่ยังช่วยให้ Query มีความชัดเจนและปรับปรุงประสิทธิภาพการทำงานของระบบฐานข้อมูลในระดับสถาปัตยกรรมได้อีกด้วย

Exit mobile version