DBMS में डीकंपोजिशन टेबल को कई टेबल में विभाजित करके डेटाबेस से रिडंडेंसी, एनोमली और असंगतियों को हटाता है।
निम्नलिखित प्रकार हैं:
लॉसलेस डीकंपोजिशन (Lossless Decomposition)
डीकंपोजिशन लॉसलेस है यदि जॉइन का उपयोग करके डीकंपोज्ड टेबल से रिलेशन R को पुनर्निर्माण करना संभव है। यह पसंदीदा विकल्प है। जब डीकंपोज किया जाता है तो रिलेशन से जानकारी नहीं खोती। जॉइन का परिणाम वही मूल रिलेशन होगा।
आइए एक उदाहरण देखें:
<EmpInfo>
| Emp_ID | Emp_Name | Emp_Age | Emp_Location | Dept_ID | Dept_Name |
|---|---|---|---|---|---|
| E001 | Jacob | 29 | Alabama | Dpt1 | Operations |
| E002 | Henry | 32 | Alabama | Dpt2 | HR |
| E003 | Tom | 22 | Texas | Dpt3 | Finance |
उपरोक्त टेबल को दो टेबल में डीकंपोज करें:
<EmpDetails>
| Emp_ID | Emp_Name | Emp_Age | Emp_Location |
|---|---|---|---|
| E001 | Jacob | 29 | Alabama |
| E002 | Henry | 32 | Alabama |
| E003 | Tom | 22 | Texas |
<DeptDetails>
| Dept_ID | Emp_ID | Dept_Name |
|---|---|---|
| Dpt1 | E001 | Operations |
| Dpt2 | E002 | HR |
| Dpt3 | E003 | Finance |
अब, उपरोक्त दो टेबल पर नेचुरल जॉइन लागू किया जाता है। परिणाम होगा:
| Emp_ID | Emp_Name | Emp_Age | Emp_Location | Dept_ID | Dept_Name |
|---|---|---|---|---|---|
| E001 | Jacob | 29 | Alabama | Dpt1 | Operations |
| E002 | Henry | 32 | Alabama | Dpt2 | HR |
| E003 | Tom | 22 | Texas | Dpt3 | Finance |
इसलिए, उपरोक्त रिलेशन में लॉसलेस डीकंपोजिशन था यानी जानकारी का कोई नुकसान नहीं।
लॉसी डीकंपोजिशन (Lossy Decomposition)
जैसा कि नाम से पता चलता है, जब एक रिलेशन को दो या अधिक रिलेशनल स्कीमा में डीकंपोज किया जाता है, तो मूल रिलेशन को पुनर्प्राप्त करते समय जानकारी का नुकसान अपरिहार्य होता है।
आइए एक उदाहरण देखें:
<EmpInfo> (उपरोक्त समान डेटा)
उपरोक्त टेबल को दो टेबल में डीकंपोज करें:
<EmpDetails> (उपरोक्त समान)
<DeptDetails>
| Dept_ID | Dept_Name |
|---|---|
| Dpt1 | Operations |
| Dpt2 | HR |
| Dpt3 | Finance |
अब, आप उपरोक्त टेबल को जोड़ नहीं पाएंगे, क्योंकि Emp_ID DeptDetails रिलेशन का हिस्सा नहीं है।
इसलिए, उपरोक्त रिलेशन में लॉसी डीकंपोजिशन है।