डेटाबेस में, ट्रांज़िटिव डिपेंडेंसी तब होती है जब किसी टेबल का एक एट्रिब्यूट दूसरे एट्रिब्यूट पर निर्भर करता है, जो स्वयं प्राइमरी की पर निर्भर होता है। ट्रांज़िटिव डिपेंडेंसी डेटाबेस नॉर्मलाइज़ेशन में समस्या है क्योंकि यह अपडेट, इंसर्शन और डिलीशन जैसी विसंगतियों सहित डेटा-संबंधी मुद्दों को जन्म देती है, जिनकी हम इस लेख में पड़ताल करेंगे।
यदि इस लेख के बाद आप और सीखना चाहें, तो मैं DataCamp के Database Design कोर्स की सिफारिश करता/करती हूँ ताकि आप रिलेशनल डेटाबेस और डेटाबेस में डेटा स्टोर करने से परिचित हो सकें। मैं हमारे Normalization in SQL ट्यूटोरियल को भी देखने की सलाह देता/देती हूँ ताकि आप SQL में नॉर्मल फॉर्म्स के बारे में जान सकें, जो इस संदर्भ में रिलेशनल डेटाबेस प्रबंधन के लिए सबसे आम भाषा है।
डेटाबेस में ट्रांज़िटिव डिपेंडेंसी को समझना
रिलेशनल डेटाबेस में, ट्रांज़िटिव डिपेंडेंसी तब होती है जब एक एट्रिब्यूट किसी मध्यवर्ती एट्रिब्यूट के माध्यम से अप्रत्यक्ष रूप से दूसरे पर निर्भर होता है। इस समस्या का अर्थ है कि किसी कॉलम का मान दो अन्य कॉलम के मानों से अप्रत्यक्ष रूप से निर्धारित किया जा सकता है। निम्नलिखित टेबल पर विचार करें, जिसका नाम है DataCamp_Programs:
इस टेबल से:
-
Course_or_Skill_Track → Instructor: यदि हमें कोर्स या स्किल ट्रैक पता है, तो हमें इंस्ट्रक्टर पता है।
-
Instructor does not → Course_or_Skill_Track: कभी-कभी इंस्ट्रक्टर एक से अधिक पढ़ाते हैं।
-
Instructor → Instructor_Title: प्रत्येक इंस्ट्रक्टर का एक टाइटल होता है।
अतः, Course_or_Skill_Track → Instructor_Title एक ट्रांज़िटिव डिपेंडेंसी है।
ट्रांज़िटिव डिपेंडेंसी से समस्याएँ क्यों होती हैं
ट्रांज़िटिव डिपेंडेंसी से डेटाबेस में मुख्यतः डेटा अतिरेक, विसंगतियों और असंगतता से जुड़ी समस्याएँ पैदा हो सकती हैं।
डेटा अतिरेक
डेटा अतिरेक तब होता है जब वही डेटा अनावश्यक रूप से डेटाबेस में बार-बार दोहराया जाता है, जिससे अकार्यकुशलता आती है। DataCamp_Programs टेबल के उदाहरण में, इंस्ट्रक्टर का टाइटल हर कोर्स के लिए कई बार संग्रहीत है जो वे पढ़ाते हैं। यह दोहराव स्टोरेज स्पेस बर्बाद करता है और डेटाबेस का रखरखाव कठिन बनाता है।
डेटा विसंगतियाँ
अब हम अपडेट, इंसर्शन और डिलीशन से जुड़ी समस्याओं को देखें।
अपडेट विसंगतियाँ
अपडेट विसंगतियाँ तब होती हैं जब अतिरेक के कारण डेटा में बदलाव कई जगहों पर लागू करने पड़ते हैं। यदि कुछ स्थानों पर अपडेट हो जाए और कुछ छूट जाएँ, तो असंगतताएँ उत्पन्न होती हैं। कल्पना करें, उदाहरण के लिए, कि हमने एक SQL क्वेरी से DataCamp_Programs टेबल को अपडेट किया क्योंकि Mona Khalil का टाइटल बदलकर Lead Data Scientist हो गया है। आपको प्रत्येक पंक्ति को मैन्युअली अपडेट करना होगा जहाँ उनका टाइटल आता है। यदि एक भी उदाहरण छूट गया, तो डेटाबेस में उनके वर्तमान टाइटल के बारे में विरोधाभासी जानकारी रहेगी।
इंसर्शन विसंगतियाँ
इंसर्शन विसंगतियाँ तब होती हैं जब आप डेटाबेस में डेटा नहीं जोड़ सकते क्योंकि अन्य आवश्यक डेटा अनुपस्थित है। अन्य मामलों में, आप डेटा तो जोड़ सकते हैं, पर टेबल की संरचना आपको अप्रासंगिक, अनावश्यक या गुम जानकारी शामिल करने के लिए बाध्य करती है, जैसे नीचे दिए उदाहरण में:
डिलीशन विसंगतियाँ
डिलीशन विसंगतियाँ तब होती हैं जब किसी रिकॉर्ड को हटाने पर अनजाने में डेटाबेस से मूल्यवान जानकारी भी हट जाती है। उदाहरण के लिए, Izzy Weber वाला रिकॉर्ड हटाने पर इंस्ट्रक्टर टाइटल भी हट जाएगा, जो डेटा हानि का कारण बन सकता है, क्योंकि हो सकता है कि सिस्टम में अब सभी टाइटल्स की पूरी श्रृंखला उपलब्ध न रहे। यहाँ, हमने संभवतः बिना मंशा के Data Coach को सिस्टम से पूरी तरह हटा दिया होगा।
3NF के साथ ट्रांज़िटिव डिपेंडेंसी हटाना
डेटाबेस संदर्भ में, नॉर्मलाइज़ेशन डेटा को इस प्रकार व्यवस्थित करता है कि अतिरेक कम हो और डेटा की अखंडता बेहतर हो। इसी कारण, ट्रांज़िटिव डिपेंडेंसी अक्सर थर्ड नॉर्मल फॉर्म (3NF) के संदर्भ में चर्चा का विषय होती है, जो एक डेटाबेस नॉर्मलाइज़ेशन तकनीक है जो ट्रांज़िटिव डिपेंडेंसी की समस्या को सुलझाने के लिए डिपेंडेंसीज़ को समाप्त करती है।
थर्ड नॉर्मल फॉर्म नॉर्मलाइज़ेशन का ऐसा स्तर है जो ट्रांज़िटिव डिपेंडेंसी को समाप्त करता है और सुनिश्चित करता है कि हर नॉन-की एट्रिब्यूट केवल प्राइमरी की पर निर्भर हो। इससे अतिरेक और ट्रांज़िटिव डिपेंडेंसी से होने वाली त्रुटियों को रोका जा सकता है। किसी डेटाबेस स्कीमा को नॉर्मलाइज़ करते समय निम्न चरणों पर विचार करें।
ट्रांज़िटिव डिपेंडेंसी की पहचान
अपने डेटाबेस में ट्रांज़िटिव डिपेंडेंसी ढूँढने के लिए प्रक्रिया को विभाजित करें:
- प्राइमरी की पर फंक्शनल डिपेंडेंसी जाँचें: सबसे पहले सभी फंक्शनल डिपेंडेंसी पहचानें जहाँ एट्रिब्यूट्स सीधे प्राइमरी की पर निर्भर हैं। यह चरण आपकी टेबल के मुख्य संबंधों पर ध्यान केंद्रित करने में मदद करता है।
- अप्रत्यक्ष डिपेंडेंसी खोजें: इसके बाद देखें कि कोई नॉन-की एट्रिब्यूट (जो प्राइमरी की का हिस्सा नहीं है) किसी अन्य नॉन-की एट्रिब्यूट पर निर्भर तो नहीं। यदि कोई नॉन-की एट्रिब्यूट दूसरे पर निर्भर है, जो स्वयं प्राइमरी की पर निर्भर है, तो आपने ट्रांज़िटिव डिपेंडेंसी की पहचान कर ली है।
- अतिरेक या विसंगतियों के लिए परीक्षण करें: अंत में सोचें कि क्या यह अप्रत्यक्ष निर्भरता डेटा अतिरेक लाती है या अपडेट को अधिक जटिल बनाती है।
टेबल्स को विभाजित करना
एक बार जब आप ट्रांज़िटिव डिपेंडेंसी की पहचान कर लें, तो उन्हें हटाने के लिए टेबल्स को विभाजित करना आवश्यक है। आप टेबल को छोटे टेबल्स में बाँटेंगे जहाँ नॉन-की एट्रिब्यूट सीधे प्राइमरी की पर निर्भर हों। आप फॉरेन कीज़ के माध्यम से लिंक करके टेबल्स के बीच संबंध भी बनाए रखेंगे।
यहाँ बताया गया है कि आप DataCamp_Programs टेबल को दो टेबल्स में कैसे बाँट सकते हैं ताकि उसे नॉर्मलाइज़ किया जा सके और ट्रांज़िटिव डिपेंडेंसी हटाई जा सके। जैसा कि आप देखेंगे, हमने टेबल को दो भागों में बाँटा है। instructor दोनों को जोड़ने की कुंजी बनता है।
Table 1: courses_table
Table 1: instructors_table
| Instructor | Instructor_Title |
|---|
| Mona Khalil | Data Scientist |
| Izzy Weber | Data Coach |
यह संरचना उस ट्रांज़िटिव डिपेंडेंसी को समाप्त करती है, जहाँ Instructor_Title पहले Instructor के माध्यम से Course_or_Skill_Track पर निर्भर था। अब Instructor_Title केवल Instructor पर निर्भर है।
ट्रांज़िटिव डिपेंडेंसी से कैसे बचें
जब आप अपना डेटाबेस डिज़ाइन कर रहे हों, तो डेटा की कार्यकुशलता, स्केलेबिलिटी और अखंडता बनाए रखने के लिए ट्रांज़िटिव डिपेंडेंसी से बचना महत्वपूर्ण है। अतिरेक, विसंगतियों और असंगतता के जोखिम को कम करने के लिए नीचे दिए सर्वोत्तम अभ्यास अपनाएँ।
- स्कीमा डिज़ाइन के दौरान नॉर्मलाइज़ेशन: यदि आप स्कीमा से अपना डेटाबेस डिज़ाइन कर रहे हैं, तो शुरुआती चरणों में थर्ड नॉर्मल फॉर्म (3NF) पर विचार करना आवश्यक है। यह तरीका नॉर्मलाइज़ेशन तकनीक लागू करके ट्रांज़िटिव डिपेंडेंसी को कम करने में मदद करेगा।
- नियमित स्कीमा ऑडिट: डेटाबेस बनाने के बाद, यह सुनिश्चित करने के लिए नियमित ऑडिट करना महत्वपूर्ण है कि वह ट्रांज़िटिव डिपेंडेंसी से मुक्त बना रहे।
- रिलेशनशिप्स को अति-सरलीकृत करने से बचें: हमेशा रिलेशनशिप्स को मैप करें और विभिन्न जानकारियाँ संग्रहीत करने के लिए एंटिटीज़ को अलग-अलग टेबल्स में ठीक से विभाजित करें।
निष्कर्ष
डेटाबेस में ट्रांज़िटिव डिपेंडेंसी तब होती है जब किसी टेबल का एक एट्रिब्यूट दूसरे एट्रिब्यूट पर निर्भर करता है, जो प्राइमरी की पर निर्भर होता है। ट्रांज़िटिव डिपेंडेंसी हमेशा अतिरेक, असंगतताओं और विसंगतियों को बढ़ाकर डेटाबेस की कार्यकुशलता को प्रभावित करती है। एक डेवलपर के रूप में, डेटा की अखंडता के लिए ट्रांज़िटिव डिपेंडेंसी की पहचान करना और उन्हें समाप्त करना महत्वपूर्ण है। आपको डेटाबेस डिज़ाइन के दौरान भी ट्रांज़िटिव डिपेंडेंसी की पहचान कर उन्हें हटाना चाहिए। थर्ड नॉर्मल फॉर्म (3NF) हासिल करना डेटाबेस को ऑप्टिमाइज़ करने और कार्यकुशलता सुधारने में मदद करेगा।
यदि आप अपनी डेटाबेस डिज़ाइन स्किल्स सुधारना चाहते हैं, तो मैं DataCamp के Creating PostgreSQL Databases कोर्स की सिफारिश करता/करती हूँ ताकि आप स्कीमा डिज़ाइन और डेटाबेस एक्सेस कंट्रोल्स के बारे में अधिक सीख सकें। अंत में, यदि आप बिग डेटा के लिए अपनी डेटाबेस प्रबंधन स्किल्स को आगे बढ़ाना चाहते हैं, तो मैं हमारे Introduction to Data Modeling in Snowflake कोर्स की सिफारिश करता/करती हूँ ताकि आप रिलेशनशिप्स, डाइमेंशनल मॉडलिंग और डेटा वॉल्ट्स के बारे में सीखकर कुशल क्लाउड डेटा वेयरहाउस बना सकें।
डेटाबेस में, ट्रांज़िटिव डिपेंडेंसी तब होती है जब किसी टेबल का एक एट्रिब्यूट दूसरे एट्रिब्यूट पर निर्भर करता है, जो स्वयं प्राइमरी की पर निर्भर होता है। ट्रांज़िटिव डिपेंडेंसी डेटाबेस नॉर्मलाइज़ेशन में समस्या है क्योंकि यह अपडेट, इंसर्शन और डिलीशन जैसी विसंगतियों सहित डेटा-संबंधी मुद्दों को जन्म देती है, जिनकी हम इस लेख में पड़ताल करेंगे।
यदि इस लेख के बाद आप और सीखना चाहें, तो मैं DataCamp के Database Design कोर्स की सिफारिश करता/करती हूँ ताकि आप रिलेशनल डेटाबेस और डेटाबेस में डेटा स्टोर करने से परिचित हो सकें। मैं हमारे Normalization in SQL ट्यूटोरियल को भी देखने की सलाह देता/देती हूँ ताकि आप SQL में नॉर्मल फॉर्म्स के बारे में जान सकें, जो इस संदर्भ में रिलेशनल डेटाबेस प्रबंधन के लिए सबसे आम भाषा है।
डेटाबेस में ट्रांज़िटिव डिपेंडेंसी को समझना
रिलेशनल डेटाबेस में, ट्रांज़िटिव डिपेंडेंसी तब होती है जब एक एट्रिब्यूट किसी मध्यवर्ती एट्रिब्यूट के माध्यम से अप्रत्यक्ष रूप से दूसरे पर निर्भर होता है। इस समस्या का अर्थ है कि किसी कॉलम का मान दो अन्य कॉलम के मानों से अप्रत्यक्ष रूप से निर्धारित किया जा सकता है। निम्नलिखित टेबल पर विचार करें, जिसका नाम है
DataCamp_Programs:इस टेबल से:
Course_or_Skill_Track→Instructor: यदि हमें कोर्स या स्किल ट्रैक पता है, तो हमें इंस्ट्रक्टर पता है।Instructordoes not →Course_or_Skill_Track: कभी-कभी इंस्ट्रक्टर एक से अधिक पढ़ाते हैं।Instructor→Instructor_Title: प्रत्येक इंस्ट्रक्टर का एक टाइटल होता है।अतः,
Course_or_Skill_Track→Instructor_Titleएक ट्रांज़िटिव डिपेंडेंसी है।ट्रांज़िटिव डिपेंडेंसी से समस्याएँ क्यों होती हैं
ट्रांज़िटिव डिपेंडेंसी से डेटाबेस में मुख्यतः डेटा अतिरेक, विसंगतियों और असंगतता से जुड़ी समस्याएँ पैदा हो सकती हैं।
डेटा अतिरेक
डेटा अतिरेक तब होता है जब वही डेटा अनावश्यक रूप से डेटाबेस में बार-बार दोहराया जाता है, जिससे अकार्यकुशलता आती है।
DataCamp_Programsटेबल के उदाहरण में, इंस्ट्रक्टर का टाइटल हर कोर्स के लिए कई बार संग्रहीत है जो वे पढ़ाते हैं। यह दोहराव स्टोरेज स्पेस बर्बाद करता है और डेटाबेस का रखरखाव कठिन बनाता है।डेटा विसंगतियाँ
अब हम अपडेट, इंसर्शन और डिलीशन से जुड़ी समस्याओं को देखें।
अपडेट विसंगतियाँ
अपडेट विसंगतियाँ तब होती हैं जब अतिरेक के कारण डेटा में बदलाव कई जगहों पर लागू करने पड़ते हैं। यदि कुछ स्थानों पर अपडेट हो जाए और कुछ छूट जाएँ, तो असंगतताएँ उत्पन्न होती हैं। कल्पना करें, उदाहरण के लिए, कि हमने एक SQL क्वेरी से
DataCamp_Programsटेबल को अपडेट किया क्योंकि Mona Khalil का टाइटल बदलकरLead Data Scientistहो गया है। आपको प्रत्येक पंक्ति को मैन्युअली अपडेट करना होगा जहाँ उनका टाइटल आता है। यदि एक भी उदाहरण छूट गया, तो डेटाबेस में उनके वर्तमान टाइटल के बारे में विरोधाभासी जानकारी रहेगी।इंसर्शन विसंगतियाँ
इंसर्शन विसंगतियाँ तब होती हैं जब आप डेटाबेस में डेटा नहीं जोड़ सकते क्योंकि अन्य आवश्यक डेटा अनुपस्थित है। अन्य मामलों में, आप डेटा तो जोड़ सकते हैं, पर टेबल की संरचना आपको अप्रासंगिक, अनावश्यक या गुम जानकारी शामिल करने के लिए बाध्य करती है, जैसे नीचे दिए उदाहरण में:
डिलीशन विसंगतियाँ
डिलीशन विसंगतियाँ तब होती हैं जब किसी रिकॉर्ड को हटाने पर अनजाने में डेटाबेस से मूल्यवान जानकारी भी हट जाती है। उदाहरण के लिए, Izzy Weber वाला रिकॉर्ड हटाने पर इंस्ट्रक्टर टाइटल भी हट जाएगा, जो डेटा हानि का कारण बन सकता है, क्योंकि हो सकता है कि सिस्टम में अब सभी टाइटल्स की पूरी श्रृंखला उपलब्ध न रहे। यहाँ, हमने संभवतः बिना मंशा के
Data Coachको सिस्टम से पूरी तरह हटा दिया होगा।3NF के साथ ट्रांज़िटिव डिपेंडेंसी हटाना
डेटाबेस संदर्भ में, नॉर्मलाइज़ेशन डेटा को इस प्रकार व्यवस्थित करता है कि अतिरेक कम हो और डेटा की अखंडता बेहतर हो। इसी कारण, ट्रांज़िटिव डिपेंडेंसी अक्सर थर्ड नॉर्मल फॉर्म (3NF) के संदर्भ में चर्चा का विषय होती है, जो एक डेटाबेस नॉर्मलाइज़ेशन तकनीक है जो ट्रांज़िटिव डिपेंडेंसी की समस्या को सुलझाने के लिए डिपेंडेंसीज़ को समाप्त करती है।
थर्ड नॉर्मल फॉर्म नॉर्मलाइज़ेशन का ऐसा स्तर है जो ट्रांज़िटिव डिपेंडेंसी को समाप्त करता है और सुनिश्चित करता है कि हर नॉन-की एट्रिब्यूट केवल प्राइमरी की पर निर्भर हो। इससे अतिरेक और ट्रांज़िटिव डिपेंडेंसी से होने वाली त्रुटियों को रोका जा सकता है। किसी डेटाबेस स्कीमा को नॉर्मलाइज़ करते समय निम्न चरणों पर विचार करें।
ट्रांज़िटिव डिपेंडेंसी की पहचान
अपने डेटाबेस में ट्रांज़िटिव डिपेंडेंसी ढूँढने के लिए प्रक्रिया को विभाजित करें:
टेबल्स को विभाजित करना
एक बार जब आप ट्रांज़िटिव डिपेंडेंसी की पहचान कर लें, तो उन्हें हटाने के लिए टेबल्स को विभाजित करना आवश्यक है। आप टेबल को छोटे टेबल्स में बाँटेंगे जहाँ नॉन-की एट्रिब्यूट सीधे प्राइमरी की पर निर्भर हों। आप फॉरेन कीज़ के माध्यम से लिंक करके टेबल्स के बीच संबंध भी बनाए रखेंगे।
यहाँ बताया गया है कि आप
DataCamp_Programsटेबल को दो टेबल्स में कैसे बाँट सकते हैं ताकि उसे नॉर्मलाइज़ किया जा सके और ट्रांज़िटिव डिपेंडेंसी हटाई जा सके। जैसा कि आप देखेंगे, हमने टेबल को दो भागों में बाँटा है।instructorदोनों को जोड़ने की कुंजी बनता है।Table 1: courses_table
Table 1: instructors_table
यह संरचना उस ट्रांज़िटिव डिपेंडेंसी को समाप्त करती है, जहाँ
Instructor_TitleपहलेInstructorके माध्यम सेCourse_or_Skill_Trackपर निर्भर था। अबInstructor_TitleकेवलInstructorपर निर्भर है।ट्रांज़िटिव डिपेंडेंसी से कैसे बचें
जब आप अपना डेटाबेस डिज़ाइन कर रहे हों, तो डेटा की कार्यकुशलता, स्केलेबिलिटी और अखंडता बनाए रखने के लिए ट्रांज़िटिव डिपेंडेंसी से बचना महत्वपूर्ण है। अतिरेक, विसंगतियों और असंगतता के जोखिम को कम करने के लिए नीचे दिए सर्वोत्तम अभ्यास अपनाएँ।
निष्कर्ष
डेटाबेस में ट्रांज़िटिव डिपेंडेंसी तब होती है जब किसी टेबल का एक एट्रिब्यूट दूसरे एट्रिब्यूट पर निर्भर करता है, जो प्राइमरी की पर निर्भर होता है। ट्रांज़िटिव डिपेंडेंसी हमेशा अतिरेक, असंगतताओं और विसंगतियों को बढ़ाकर डेटाबेस की कार्यकुशलता को प्रभावित करती है। एक डेवलपर के रूप में, डेटा की अखंडता के लिए ट्रांज़िटिव डिपेंडेंसी की पहचान करना और उन्हें समाप्त करना महत्वपूर्ण है। आपको डेटाबेस डिज़ाइन के दौरान भी ट्रांज़िटिव डिपेंडेंसी की पहचान कर उन्हें हटाना चाहिए। थर्ड नॉर्मल फॉर्म (3NF) हासिल करना डेटाबेस को ऑप्टिमाइज़ करने और कार्यकुशलता सुधारने में मदद करेगा।
यदि आप अपनी डेटाबेस डिज़ाइन स्किल्स सुधारना चाहते हैं, तो मैं DataCamp के Creating PostgreSQL Databases कोर्स की सिफारिश करता/करती हूँ ताकि आप स्कीमा डिज़ाइन और डेटाबेस एक्सेस कंट्रोल्स के बारे में अधिक सीख सकें। अंत में, यदि आप बिग डेटा के लिए अपनी डेटाबेस प्रबंधन स्किल्स को आगे बढ़ाना चाहते हैं, तो मैं हमारे Introduction to Data Modeling in Snowflake कोर्स की सिफारिश करता/करती हूँ ताकि आप रिलेशनशिप्स, डाइमेंशनल मॉडलिंग और डेटा वॉल्ट्स के बारे में सीखकर कुशल क्लाउड डेटा वेयरहाउस बना सकें।