0Pricing
SQL Academy · บทเรียน

เหตุใดจึงต้องใช้การเชื่อมตาราง (ทบทวนโมเดลเชิงสัมพันธ์)

ทบทวนโมเดลเชิงสัมพันธ์ ตารางที่ทำให้เป็นบรรทัดฐาน คีย์ต่างประเทศ และเหตุใด JOIN จึงเป็นสะพานสำหรับประกอบข้อมูลจากหลายตารางกลับเข้าด้วยกัน

เหตุใดจึงต้องใช้การเชื่อมตาราง (ทบทวนโมเดลเชิงสัมพันธ์) เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

การทำให้เป็นมาตรฐานในภาพเดียว

แทนที่จะทำซ้ำข้อมูล คุณจะแบ่งข้อมูลออกเป็นหลายตาราง:

  • users — id, name, email
  • orders — id, user_id, total

แต่ละคำสั่งซื้อจะอ้างอิงผู้ใช้ด้วยรหัส ไม่ใช่เก็บชื่อและอีเมลของผู้ใช้ซ้ำอีกครั้ง

เหตุผลที่ต้องทำให้เป็นมาตรฐาน

ประโยชน์:

  • ไม่มีข้อมูลซ้ำ — เปลี่ยนอีเมลของผู้ใช้ได้ในที่เดียว
  • ตารางมีขนาดเล็กลง — อัตราการพบข้อมูลในแคชดีขึ้น
  • ข้อจำกัดช่วยบังคับใช้ความสัมพันธ์

คีย์ต่างประเทศกำหนดความเชื่อมโยง

ความเชื่อมโยงจะประกาศด้วย FOREIGN KEY:

CREATE TABLE orders (
  id BIGSERIAL PRIMARY KEY,
  user_id BIGINT NOT NULL REFERENCES users(id),
  total NUMERIC(10,2) NOT NULL
);

ประกอบข้อมูลกลับด้วย JOIN

หากต้องการแสดงชื่อผู้ใช้ในแต่ละคำสั่งซื้อ คุณต้อง JOIN ตารางกลับเข้าด้วยกัน:

SELECT o.id, o.total, u.full_name, u.email
FROM orders o
JOIN users u ON u.id = o.user_id
ORDER BY o.id;

แนวคิดในใจ: ผลคูณคาร์ทีเซียนที่ผ่านการกรอง

ในเชิงแนวคิด JOIN จะ:

  1. สร้างผลคูณคาร์ทีเซียนของสองตาราง โดยจับคู่ทุกแถวของ A กับทุกแถวของ B
  2. เก็บเฉพาะคู่ที่เงื่อนไข ON เป็น TRUE

ในทางปฏิบัติ ฐานข้อมูลจะใช้อัลกอริทึมการเชื่อมแบบแฮช แบบผสาน หรือแบบวนซ้อน แต่ผลลัพธ์เหมือนกัน

หนึ่งต่อหลาย

ผู้ใช้หนึ่งคนสามารถมีคำสั่งซื้อหลายรายการได้ ฝั่งที่มีหลายรายการจะเป็นผู้เก็บคีย์ต่างประเทศ

-- Each order row points back to its user:
SELECT u.email, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id, u.email;

หลายต่อหลายผ่านตารางเชื่อมโยง

แท็ก ↔ โพสต์: ให้เพิ่มตารางที่สาม:

CREATE TABLE posts (id BIGSERIAL PRIMARY KEY, title TEXT);
CREATE TABLE tags  (id BIGSERIAL PRIMARY KEY, name TEXT);
CREATE TABLE post_tags (
  post_id BIGINT REFERENCES posts(id),
  tag_id  BIGINT REFERENCES tags(id),
  PRIMARY KEY (post_id, tag_id)
);

การสอบถามความสัมพันธ์แบบหลายต่อหลาย

ใช้การเชื่อมสองครั้งเพื่อนำทุกอย่างมารวมกัน:

SELECT p.title, t.name
FROM posts p
JOIN post_tags pt ON pt.post_id = p.id
JOIN tags      t  ON t.id = pt.tag_id
WHERE t.name = 'sql';

เมื่อใดควรลดการทำให้เป็นมาตรฐาน

การเก็บข้อมูลซ้ำอาจใช้เพื่อเพิ่มประสิทธิภาพในบางกรณี เช่น การแคชผลรวมที่คำนวณไว้ คอลัมน์สำหรับการค้นหาข้อความทั้งหมด หรือมุมมองที่จัดเก็บผลลัพธ์ไว้ เริ่มต้นด้วยโครงสร้างที่ทำให้เป็นมาตรฐาน แล้วค่อยลดการทำให้เป็นมาตรฐานเมื่อมีข้อมูลจากการวัดประสิทธิภาพ

JOIN เทียบกับคำสั่งสอบถามย่อย

คำสั่งสอบถามที่ใช้ JOIN หลายรายการสามารถเขียนเป็นคำสั่งสอบถามย่อยได้ และในทางกลับกัน ให้เลือกแบบที่อ่านเข้าใจได้ชัดเจนกว่า ตัววางแผนสมัยใหม่มักสร้างแผนการทำงานเดียวกัน

คีย์ต่างประเทศไม่ได้ถูกบังคับใช้โดยอัตโนมัติ

คุณต้องประกาศคีย์เหล่านี้ด้วย REFERENCES แม้จะมีข้อจำกัด FK แล้ว การสร้างดัชนีบนคอลัมน์ FK ก็ยังเป็นหน้าที่ของ YOUR โปรดประกาศดัชนีอย่างชัดเจนเพื่อประสิทธิภาพในการเชื่อมตาราง

สรุป

การเชื่อมตารางช่วยประกอบข้อมูลที่เคยแยกออกจากกันเพื่อรักษาความถูกต้องกลับเข้าด้วยกัน

  • คีย์ต่างประเทศใช้ประกาศความเชื่อมโยง
  • JOIN ย้อนการทำให้เป็นมาตรฐานในขณะสอบถามข้อมูล
  • ความสัมพันธ์หนึ่งต่อหลายใช้ FK ที่ฝั่งหลาย ส่วนความสัมพันธ์หลายต่อหลายใช้ตารางเชื่อมโยง

ตรวจสอบความเข้าใจ

ในความสัมพันธ์หนึ่งต่อหลายระหว่าง users กับ orders ตารางใดเป็นผู้เก็บคอลัมน์คีย์ต่างประเทศ

คำถามที่พบบ่อย

บทเรียน “เหตุใดจึงต้องใช้การเชื่อมตาราง (ทบทวนโมเดลเชิงสัมพันธ์)” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เหตุใดจึงต้องใช้การเชื่อมตาราง (ทบทวนโมเดลเชิงสัมพันธ์)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เหตุใดจึงต้องใช้การเชื่อมตาราง (ทบทวนโมเดลเชิงสัมพันธ์)”

ทบทวนโมเดลเชิงสัมพันธ์ ตารางที่ทำให้เป็นบรรทัดฐาน คีย์ต่างประเทศ และเหตุใด JOIN จึงเป็นสะพานสำหรับประกอบข้อมูลจากหลายตารางกลับเข้าด้วยกัน คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “เหตุใดจึงต้องใช้การเชื่อมตาราง (ทบทวนโมเดลเชิงสัมพันธ์)” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม

ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เหตุใดจึงต้องใช้การเชื่อมตาราง (ทบทวนโมเดลเชิงสัมพันธ์)
  2. กลไกของ INNER JOIN
  3. LEFT/RIGHT JOIN และการเชื่อมตาราง OUTER
  4. การเชื่อมตารางเข้ากับตัวเองและชื่อแทน
← กลับไปที่ SQL Academy