ความสัมพันธ์ระหว่างตาราง (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
การออกแบบความสัมพันธ์ที่ดีจะช่วยลดข้อมูลซ้ำ
และทำให้ระบบฐานข้อมูลมีประสิทธิภาพมากขึ้น
