GORAGOD.com

เทคนิคการ Join ข้อมูล ตอนที่ 1

หลักการที่สำคัญของการ Join ก็คือการจับคู่ข้อมูลจากตารางหนึ่งไปยังอีกตารางหนึ่ง โดยใช้ฟิลด์บางฟิล์ดซึ่งมีค่าตรงกัน (มีความสัมพันธ์กัน)
   
  • ตาราง items เป็นตารางหลักเก็บข้อมูลรายการต่างๆโดยมี item_id เป็น id ของข้อมูล และ detail เก็บรายละเอียดอื่นๆของข้อมูล
  • ตาราง category เป็นตารางเก็บข้อมูลหมวดหมู่ โดยมี cat_id เป็น id ของหมวดหมู่ และ cat_name เก็บชื่อหมวดหมู่
  • ตาราง categories เป็นตารางเก็บข้อมูลหมวดหมู่ของตาราง items โดยมี item_id เก็บข้อมูล item_id ของตาราง items เพื่อบอกว่ารายการนี้เป็นหมวหมู่ของ items ไหน และมี cat_id ทำหน้าที่เก็บ cat_id ของตาราง category เพื่อบอกว่ารายการที่ itrm_id อยู่ในหมวดไหน

เหตุผลที่ต้องมีการ Join

  1. ตารางหลักอาจมีการใช้ข้อมูลจากตารางรอง ในลักษณะซ้ำๆกัน และมีข้อมูลเหมือนๆกัน เช่นตัวอย่างด้านบน ตารางข้อมูลหลายๆ record อาจอยู่ในหมวดหมู่เดียวกัน  ซึ่งถ้าเรารวมข้อมูลเช่นชื่อหมวดหมู่ใส่ลงไปในตารางหลัก การแก้ไขชื่อหมวดหมู่ในภายหลังอาจกระทำได้ลำบาก เนื่องจากเราต้องกระทำทีละข้อมูลที่อยู่ในหมวดเดียวกันจนครบทุกอัน ในขณะที่การแยกตารางหากต้องการแก้ไขชื่อหมวดหมู่สามารถทำที่ตารางหมวดหมู่เพียงที่เดียวก็จะมีผลกับข้อมูลทุกรายการที่หมวดเดียวกัน
  2. ตารางหลักอาจมีการเก็บข้อมูลบางรายการมากกว่า 1 ข้อมูล ยกตัวอย่างเช่นในตารางหลักอาจอยู่ในหมวดหมู่มากกว่า 1 หมวดหมู่ (กฏนี้ไม่เกี่ยวข้องกับกฏข้อแรกนะครับอย่านำไปรวมกัน)

ตัวอย่างข้อมูล

items
item_id detail
1 ปู
2 พี
categories
item_id cat_id
1 1
1 2
2 1
category
cat_id cat_name
1 หมา
2 แมว
 
จากตารางด้านบนจะเห็นได้ว่าในตาราง items 1 รายการ อาจมีได้หลายหมวดหมู่ (ดูในตราง categories ตัวสีแดง) โดยอยู่ในหมวดหมู่ที่ 1 และ 2 เมื่อจับคู่ข้อมูลแล้วจะอธิบายได้ว่า ปู จะมีสัตว์เลี้ยงสองชนิดคือหมาและแมว ในขณะที่ พี จะเลี้ยงสัตว์เพียงชนิดเดียวคือ หมา