บทที่ 1 จาก 8 · 15 นาที · ดูฟรี
ทำความรู้จักกับความสัมพันธ์ (Relation)
ยินดีต้อนรับเข้าสู่ คอร์สเรียนพื้นฐานความสัมพันธ์ (Relation) สำหรับผู้เริ่มต้น
หากคุณกำลังจะก้าวเข้าสู่โลกของวิทยาการคอมพิวเตอร์ วิศวกรรมซอฟต์แวร์ หรือการเขียนโปรแกรมอย่างจริงจัง มีหนึ่งแนวคิดทางคณิตศาสตร์ที่คุณจะหลีกเลี่ยงไม่ได้เลย นั่นคือ ความสัมพันธ์ (Relation)
ในบทนี้เราจะมาทำความเข้าใจกันว่า Relation คืออะไร ทำไมมันถึงสำคัญ และมันเชื่อมโยงกับโลกของการพัฒนาซอฟต์แวร์อย่างไร
บทนี้คุณจะได้เรียนรู้อะไร
- ความหมายเบื้องต้นของความสัมพันธ์ (Relation)
- ทำไม Relation จึงสำคัญในวิทยาการคอมพิวเตอร์
- ตัวอย่างของ Relation ในชีวิตประจำวันและในโลกซอฟต์แวร์
- ภาพรวมของหัวข้อที่จะเรียนตลอดคอร์สนี้
ความสัมพันธ์ (Relation) คืออะไร
ในชีวิตประจำวัน เรามักพูดถึง "ความสัมพันธ์" อยู่บ่อยครั้ง เช่น
- น้องเอ๋ยเป็น น้องสาว ของพี่เอก
- กรุงเทพมหานครเป็น เมืองหลวง ของประเทศไทย
- ราคาสินค้าชิ้นนี้ สูงกว่า ราคาสินค้าชิ้นนั้น
ทั้งสามประโยคบอกถึง ความเกี่ยวข้องกัน ระหว่างสิ่งของสองสิ่งขึ้นไป ซึ่งนี่คือแก่นแท้ของแนวคิด Relation ในทางคณิตศาสตร์
นิยาม: ความสัมพันธ์ (Relation) คือการเชื่อมโยงระหว่างสมาชิกของเซตตั้งแต่สองเซตขึ้นไป โดยระบุว่าสมาชิกคู่ใดบ้างที่มีความเกี่ยวข้องกันตามเงื่อนไขที่กำหนด
พูดง่าย ๆ คือ ถ้าเรามีเซต A และเซต B เราสามารถสร้างความสัมพันธ์ขึ้นมาได้โดยบอกว่าสมาชิกตัวใดของ A มีความเกี่ยวข้องกับสมาชิกตัวใดของ B ภายใต้เงื่อนไขที่เราสนใจ
ตัวอย่างง่าย ๆ
สมมติเรามีเซตสองเซต
- เซต A = {1, 2, 3} (จำนวนเต็มบวก 1 ถึง 3)
- เซต B = {2, 4, 6} (จำนวนคู่ 2 ถึง 6)
เราอาจกำหนดความสัมพันธ์ว่า "x หาร y ลงตัว" เมื่อ x ∈ A และ y ∈ B
ลองตรวจสอบทีละคู่:
| x | y | x หาร y ลงตัวหรือไม่ |
|---|---|---|
| 1 | 2 | ใช่ |
| 1 | 4 | ใช่ |
| 1 | 6 | ใช่ |
| 2 | 2 | ใช่ |
| 2 | 4 | ใช่ |
| 2 | 6 | ใช่ |
| 3 | 2 | ไม่ใช่ |
| 3 | 4 | ไม่ใช่ |
| 3 | 6 | ใช่ |
คู่ที่เป็นจริงทั้งหมดคือ: (1,2), (1,4), (1,6), (2,2), (2,4), (2,6), (3,6)
เซตของคู่ทั้งหมดนี้ คือ ความสัมพันธ์ ที่เราสร้างขึ้นจากเงื่อนไข "x หาร y ลงตัว"
ทำไม Relation จึงสำคัญในวิทยาการคอมพิวเตอร์
อาจมีคนสงสัยว่า เรียนเรื่องนี้ไปทำไม ในเมื่อเขียนโปรแกรมก็ใช้ภาษาโปรแกรมอย่าง Python, JavaScript หรือ Java ไม่ได้ใช้สัญลักษณ์ทางคณิตศาสตร์เหล่านี้
ความจริงคือ แนวคิดของ Relation ซ่อนอยู่ทุกที่ในซอฟต์แวร์ ที่เราใช้กันอยู่ทุกวัน
1. ฐานข้อมูลเชิงสัมพันธ์ (Relational Database)
ฐานข้อมูลที่ใช้กันแพร่หลายที่สุด เช่น MySQL, PostgreSQL, SQLite ล้วนเรียกตัวเองว่า Relational Database หรือฐานข้อมูลเชิงสัมพันธ์
ตารางในฐานข้อมูลแต่ละตารางก็คือเซตหนึ่ง และการเชื่อมโยงระหว่างตารางผ่าน foreign key ก็คือการสร้าง Relation ระหว่างเซตของข้อมูล
-- ตารางนักเรียน (เซต A)
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(100)
);
-- ตารางวิชา (เซต B)
CREATE TABLE courses (
course_id INT PRIMARY KEY,
course_name VARCHAR(100)
);
-- ตารางลงทะเบียน (ความสัมพันธ์ระหว่าง A และ B)
CREATE TABLE enrollments (
student_id INT,
course_id INT,
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (course_id) REFERENCES courses(course_id)
);
ตาราง enrollments ในที่นี้ก็คือการบันทึกว่านักเรียนคนใด (สมาชิกของเซต A) ลงทะเบียน วิชาใด (สมาชิกของเซต B) ซึ่งก็คือ Relation นั่นเอง
2. การเปรียบเทียบและเงื่อนไขในโค้ด
ทุกครั้งที่เราเขียน if (a > b) หรือ if (score >= 80) เรากำลังใช้ Relation แบบ "มากกว่า" หรือ "มากกว่าหรือเท่ากับ" โดยไม่รู้ตัว
# Relation "มากกว่า" ในโค้ด
if score >= 80:
grade = 'A'
elif score >= 70:
grade = 'B'
3. กราฟและเครือข่าย
โครงสร้างกราฟที่ใช้ในเครือข่ายสังคม ระบบนำทาง หรือแม้แต่โครงสร้างของเว็บเพจ ล้วนอ้างอิงแนวคิดของ Relation เพราะกราฟก็คือเซตของจุดยอด (vertices) และเซตของเส้นเชื่อม (edges) ที่แสดงความสัมพันธ์ระหว่างจุดยอดคู่ต่าง ๆ
ภาพรวมของคอร์สนี้
ตลอดคอร์สนี้เราจะเรียนรู้ไปทีละขั้น ดังนี้
- ทำความรู้จักกับความสัมพันธ์ (Relation) — บทนี้
- ผลคูณคาร์ทีเซียน (Cartesian Product) — พื้นฐานก่อนสร้าง Relation
- สร้างความสัมพันธ์จากเซต A ไปเซต B — การนิยาม Relation อย่างเป็นทางการ
- โดเมนและเรนจ์ของความสัมพันธ์ — สมาชิกที่เข้าร่วมและผลลัพธ์ของ Relation
- การหาโดเมนและเรนจ์จากเงื่อนไขเซต — เทคนิคการวิเคราะห์ Relation ที่ซับซ้อนขึ้น
- การวาดกราฟของความสัมพันธ์ — การแสดง Relation ให้เห็นภาพ
- ตัวผกผันของความสัมพันธ์ (Inverse Relation) — การกลับทิศทางของ Relation
- โดเมนและเรนจ์ของความสัมพันธ์ผกผัน — ผลกระทบเมื่อกลับ Relation
แต่ละบทจะมีตัวอย่างประกอบและการเชื่อมโยงสู่การใช้งานจริง เพื่อให้คุณไม่เพียงเข้าใจทางทฤษฎี แต่ยังเห็นภาพการนำไปใช้ในโลกซอฟต์แวร์ด้วย
สิ่งที่ควรมีก่อนเรียน
ก่อนเริ่มต้น ขอให้คุณมีพื้นฐานต่อไปนี้
- ความรู้เรื่องเซต (Set) ระดับมัธยมปลาย เช่น การเขียนเซตด้วยการแจกแจงสมาชิก การใช้สัญลักษณ์ ∈, ⊆, ∪, ∩
- ความสนใจและความพร้อมในการเรียนรู้ — ไม่ต้องเก่งคณิตศาสตร์มาก แค่ไม่กลัวและพร้อมคิดตาม
หากคุณยังไม่มั่นใจเรื่องเซต ขอแนะนำให้ทบทวนสั้น ๆ ก่อน แต่ถ้าพร้อมแล้ว เราไปกันต่อเลย
สรุปท้ายบท
ในบทนี้เราได้เรียนรู้ว่า
- Relation คือการเชื่อมโยงสมาชิกระหว่างเซตตั้งแต่สองเซตขึ้นไป โดยระบุคู่ที่มีความเกี่ยวข้องกันตามเงื่อนไขที่กำหนด
- Relation มีบทบาทสำคัญในวิทยาการคอมพิวเตอร์ ทั้งในฐานข้อมูลเชิงสัมพันธ์ การเปรียบเทียบในโค้ด และโครงสร้างกราฟ
- คอร์สนี้จะพาคุณเรียนรู้ไปทีละขั้น ตั้งแต่ผลคูณคาร์ทีเซียน ไปจนถึงตัวผกผันของความสัมพันธ์
เพื่อที่จะสร้าง Relation ได้อย่างถูกต้อง เราจำเป็นต้องเข้าใจเครื่องมือพื้นฐานก่อน นั่นคือ ผลคูณคาร์ทีเซียน (Cartesian Product) ซึ่งเป็นวิธีสร้างเซตของคู่อันดับทั้งหมดที่เป็นไปได้ระหวางเซตสองเซต ก่อนที่เราจะคัดเลือกเฉพาะคู่ที่สนใจมาเป็น Relation
ไปกันต่อที่ บทที่ 2: ผลคูณคาร์ทีเซียน (Cartesian Product)