Company insights

การสร้างความสัมพันธ์ระหว่างตาราง (Relation Table) ใน MySQL


ความสัมพันธ์ระหว่างตาราง (Table Relationship) เป็นแนวคิดสำคัญของการออกแบบฐานข้อมูล
เพื่อเชื่อมโยงข้อมูลระหว่างหลายตารางเข้าด้วยกัน โดยใช้ Foreign Key
ช่วยอ้างอิงข้อมูลจากตารางหนึ่งไปยังอีกตารางหนึ่ง


การทำ Relation จะช่วยลดข้อมูลซ้ำ และทำให้ฐานข้อมูลมีโครงสร้างที่เป็นระเบียบมากขึ้น

ประเภทของความสัมพันธ์ในฐานข้อมูล


โดยทั่วไปความสัมพันธ์ของตารางมี 3 รูปแบบหลัก


  • One-to-One (หนึ่งต่อหนึ่ง)

  • One-to-Many (หนึ่งต่อหลาย)

  • Many-to-Many (หลายต่อหลาย)

1. ความสัมพันธ์แบบ One-to-Many


เป็นความสัมพันธ์ที่พบได้บ่อยที่สุด เช่น


  • ลูกค้า 1 คน สามารถมีคำสั่งซื้อหลายรายการ

ตัวอย่างการสร้างตาราง


CREATE TABLE customers (
   customer_id INT AUTO_INCREMENT PRIMARY KEY,
   customer_name VARCHAR(100)
);


CREATE TABLE orders (
   order_id INT AUTO_INCREMENT PRIMARY KEY,
   order_date DATE,
   customer_id INT,
   FOREIGN KEY (customer_id) 
   REFERENCES customers(customer_id)
);


ในตัวอย่างนี้


  • ตาราง customers เป็นตารางหลัก

  • ตาราง orders จะมี Foreign Key อ้างอิงไปยัง customers

2. ความสัมพันธ์แบบ One-to-One


เป็นความสัมพันธ์ที่ข้อมูลหนึ่งรายการเชื่อมกับอีกหนึ่งรายการเท่านั้น
เช่น ข้อมูลผู้ใช้กับข้อมูลโปรไฟล์


CREATE TABLE users (
   user_id INT AUTO_INCREMENT PRIMARY KEY,
   username VARCHAR(100)
);


CREATE TABLE user_profile (
   profile_id INT AUTO_INCREMENT PRIMARY KEY,
   user_id INT UNIQUE,
   address VARCHAR(255),
   FOREIGN KEY (user_id)
   REFERENCES users(user_id)
);


การใช้ UNIQUE กับ Foreign Key จะช่วยให้เกิดความสัมพันธ์แบบ One-to-One

3. ความสัมพันธ์แบบ Many-to-Many


ความสัมพันธ์แบบหลายต่อหลาย เช่น


  • นักเรียนหลายคนสามารถเรียนได้หลายวิชา


ความสัมพันธ์แบบนี้จะต้องมี ตารางกลาง (Join Table)

ตัวอย่างโครงสร้างตาราง


CREATE TABLE students (
   student_id INT AUTO_INCREMENT PRIMARY KEY,
   student_name VARCHAR(100)
);


CREATE TABLE courses (
   course_id INT AUTO_INCREMENT PRIMARY KEY,
   course_name VARCHAR(100)
);


CREATE TABLE student_courses (
   student_id INT,
   course_id INT,
   PRIMARY KEY (student_id, course_id),
   FOREIGN KEY (student_id) REFERENCES students(student_id),
   FOREIGN KEY (course_id) REFERENCES courses(course_id)
);


ตาราง student_courses จะทำหน้าที่เชื่อมความสัมพันธ์
ระหว่าง students และ courses

ตัวอย่างการ Join ข้อมูลจากหลายตาราง


SELECT 
   orders.order_id,
   customers.customer_name,
   orders.order_date
FROM orders
JOIN customers 
ON orders.customer_id = customers.customer_id;


คำสั่ง JOIN จะใช้สำหรับดึงข้อมูลที่มีความสัมพันธ์กันระหว่างตาราง

สรุป


Relation Table ใน MySQL เป็นแนวทางสำคัญในการออกแบบฐานข้อมูล
โดยใช้ Foreign Key เพื่อเชื่อมโยงข้อมูลระหว่างตาราง
ความสัมพันธ์หลักมี 3 รูปแบบ คือ One-to-One, One-to-Many และ Many-to-Many
การออกแบบความสัมพันธ์ที่ดีจะช่วยลดข้อมูลซ้ำ
และทำให้ระบบฐานข้อมูลมีประสิทธิภาพมากขึ้น