Decomposition (การแยกตาราง) ใช้กำจัด Redundancy และ Anomalies โดยแยกตารางใหญ่เป็นหลายตารางเล็ก มี 2 ประเภท:
Lossless Decomposition (การแยกที่ไม่สูญเสียข้อมูล) - แบบที่ต้องการ
สามารถ Join ตารางที่แยกแล้วกลับมาเป็นตารางเดิมได้สมบูรณ์ (Natural Join คืน Relation เดิม)
ตัวอย่าง: แยก EmpInfo เป็น EmpDetails และ DeptDetails (มี EmpID ร่วม)
EmpDetails: Emp_ID, Emp_Name, Emp_Age, Emp_Location
DeptDetails: Dept_ID, Emp_ID, Dept_Name
Natural Join ผ่าน Emp_ID → คืนตาราง EmpInfo เดิมได้ทั้งหมด → Lossless
Lossy Decomposition (การแยกที่สูญเสียข้อมูล)
Join ตารางที่แยกแล้ว ไม่ได้ ตารางเดิม เพราะขาด Common Attribute
ตัวอย่าง: แยก EmpInfo แต่ DeptDetails ไม่มี Emp_ID
EmpDetails: Emp_ID, Emp_Name, Emp_Age, Emp_Location
DeptDetails: Dept_ID, Dept_Name (ขาด Emp_ID!)
ไม่สามารถ Join ได้ → Lossy (สูญเสียความสัมพันธ์ระหว่างพนักงานกับแผนก)
สรุป
| ประเภท | สามารถ Join กลับได้? | ข้อมูลสูญเสีย? | ควรใช้? |
|---|---|---|---|
| Lossless | ได้ | ไม่ | ใช่ (Preferred) |
| Lossy | ไม่ได้ | มี | ไม่ |
กุญแจสำคัญ: ตารางที่แยกต้องมี Common Attribute (Foreign Key) เพื่อ Join กลับได้