เทคนิคการ Join ข้อมูล ตอนที่ 1
หลักการที่สำคัญของการ Join ก็คือการจับคู่ข้อมูลจากตารางหนึ่งไปยังอีกตารางหนึ่ง โดยใช้ฟิลด์บางฟิล์ดซึ่งมีค่าตรงกัน (มีความสัมพันธ์กัน)
จากตารางด้านบนจะเห็นได้ว่าในตาราง items 1 รายการ อาจมีได้หลายหมวดหมู่ (ดูในตราง categories ตัวสีแดง) โดยอยู่ในหมวดหมู่ที่ 1 และ 2 เมื่อจับคู่ข้อมูลแล้วจะอธิบายได้ว่า ปู จะมีสัตว์เลี้ยงสองชนิดคือหมาและแมว ในขณะที่ พี จะเลี้ยงสัตว์เพียงชนิดเดียวคือ หมา
- ตาราง 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
- ตารางหลักอาจมีการใช้ข้อมูลจากตารางรอง ในลักษณะซ้ำๆกัน และมีข้อมูลเหมือนๆกัน เช่นตัวอย่างด้านบน ตารางข้อมูลหลายๆ record อาจอยู่ในหมวดหมู่เดียวกัน ซึ่งถ้าเรารวมข้อมูลเช่นชื่อหมวดหมู่ใส่ลงไปในตารางหลัก การแก้ไขชื่อหมวดหมู่ในภายหลังอาจกระทำได้ลำบาก เนื่องจากเราต้องกระทำทีละข้อมูลที่อยู่ในหมวดเดียวกันจนครบทุกอัน ในขณะที่การแยกตารางหากต้องการแก้ไขชื่อหมวดหมู่สามารถทำที่ตารางหมวดหมู่เพียงที่เดียวก็จะมีผลกับข้อมูลทุกรายการที่หมวดเดียวกัน
- ตารางหลักอาจมีการเก็บข้อมูลบางรายการมากกว่า 1 ข้อมูล ยกตัวอย่างเช่นในตารางหลักอาจอยู่ในหมวดหมู่มากกว่า 1 หมวดหมู่ (กฏนี้ไม่เกี่ยวข้องกับกฏข้อแรกนะครับอย่านำไปรวมกัน)
ตัวอย่างข้อมูล
item_id | detail |
---|---|
1 | ปู |
2 | พี |
item_id | cat_id |
---|---|
1 | 1 |
1 | 2 |
2 | 1 |
cat_id | cat_name |
---|---|
1 | หมา |
2 | แมว |