Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

Lossless และ Lossy Decomposition ใน DBMS

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 กลับได้