Skip to main content

डेटाबेस में ट्रांजिटिव निर्भरता

डाटाबेस व्यायाम 4 भाग 3 (अंतिम भाग) (जून 2026)

डाटाबेस व्यायाम 4 भाग 3 (अंतिम भाग) (जून 2026)
Anonim

डेटाबेस में एक पारस्परिक निर्भरता एक ही तालिका में मानों के बीच अप्रत्यक्ष संबंध है जो कार्यात्मक निर्भरता का कारण बनती है। तीसरे सामान्य फॉर्म (3 एनएफ) के सामान्यीकरण मानक को प्राप्त करने के लिए, आपको किसी भी पारगमन निर्भरता को खत्म करना होगा।

अपनी प्रकृति से, एक संक्रमणीय निर्भरता के लिए तीन या अधिक विशेषताओं (या डेटाबेस कॉलम) की आवश्यकता होती है जिनके बीच एक कार्यात्मक निर्भरता होती है, जिसका अर्थ है कि तालिका में कॉलम ए कॉलम बी पर मध्यवर्ती कॉलम सी के माध्यम से निर्भर करता है।

चलो देखते हैं कि यह कैसे काम कर सकता है।

ट्रांजिटिव निर्भरता उदाहरण

लेखक

Author_IDलेखककिताबAuthor_Nationality
Auth_001ऑरसन स्कॉट कार्डख़त्म करने वाले का खेलसंयुक्त राज्य अमेरिका
Auth_001ऑरसन स्कॉट कार्डख़त्म करने वाले का खेलसंयुक्त राज्य अमेरिका
Auth_002मार्गरेट एटवुडहस्तनिर्मित कथाकनाडा

उपरोक्त लेखक उदाहरण में:

  • किताब → लेखक : यहां ही किताब विशेषता निर्धारित करता है लेखक विशेषता। यदि आप पुस्तक का नाम जानते हैं, तो आप लेखक का नाम सीख सकते हैं। हालाँकि, लेखक निर्धारित नहीं करता है किताब , क्योंकि एक लेखक कई किताबें लिख सकता है। उदाहरण के लिए, सिर्फ इसलिए कि हम लेखक के नाम ऑरसन स्कॉट कार्ड को जानते हैं, हम अभी भी पुस्तक का नाम नहीं जानते हैं।
  • लेखक → Author_Nationality : इसी तरह, लेखक विशेषता निर्धारित करता है Author_Nationality , लेकिन दूसरी तरफ नहीं; सिर्फ इसलिए कि हम राष्ट्रीयता को जानते हैं इसका मतलब यह नहीं है कि हम लेखक को निर्धारित कर सकते हैं।

लेकिन यह तालिका एक पारस्परिक निर्भरता पेश करती है:

  • किताब → Author_Nationality: अगर हम पुस्तक का नाम जानते हैं, तो हम लेखक कॉलम के माध्यम से राष्ट्रीयता निर्धारित कर सकते हैं।

ट्रांजिटिव निर्भरता से बचें

तीसरा सामान्य फॉर्म सुनिश्चित करने के लिए, चलिए ट्रांजिटिव निर्भरता को हटा दें।

हम लेखक तालिका से पुस्तक कॉलम को हटाकर और एक अलग पुस्तक तालिका बनाकर शुरू कर सकते हैं:

पुस्तकें

Book_IDकिताबAuthor_ID
Book_001ख़त्म करने वाले का खेलAuth_001
Book_001दिमाग के बच्चेAuth_001
Book_002हस्तनिर्मित कथाAuth_002

लेखक

Author_IDलेखकAuthor_Nationality
Auth_001ऑरसन स्कॉट कार्डसंयुक्त राज्य अमेरिका
Auth_002मार्गरेट एटवुडकनाडा

क्या यह ठीक है? आइए अब हमारी निर्भरताओं की जांच करें:

किताबें टेबल:

  • Book_ID → किताब: किताब पर निर्भर करता है Book_ID .
  • इस तालिका में कोई अन्य निर्भरता मौजूद नहीं है, इसलिए हम ठीक हैं। ध्यान दें कि विदेशी कुंजी Author_ID इस तालिका को अपनी प्राथमिक कुंजी के माध्यम से AUTHORS तालिका में लिंक करता है Author_ID । हमने एक संक्रमणीय निर्भरता, संबंधपरक डेटाबेस का एक प्रमुख डिजाइन से बचने के लिए एक रिश्ता बनाया है।

लेखक तालिका:

  • Author_ID → लेखक: लेखक पर निर्भर करता है Author_ID .
  • लेखक → Author_Nationality: राष्ट्रीयता लेखक द्वारा निर्धारित किया जा सकता है।
  • Author_ID → Author_Nationality: राष्ट्रीयता से निर्धारित किया जा सकता है Author_ID के माध्यम से लेखक विशेषता। हमारे पास अभी भी एक पारस्परिक निर्भरता है।

इस डेटा को सामान्य करने के लिए हमें एक तीसरी तालिका जोड़नी होगी:

देशों

country_idदेश
Coun_001संयुक्त राज्य अमेरिका
Coun_002कनाडा

लेखक

Author_IDलेखकcountry_id
Auth_001ऑरसन स्कॉट कार्डCoun_001
Auth_002मार्गरेट एटवुडCoun_002

अब टेबल के बीच लिंक करने के लिए विदेशी कुंजी का उपयोग करने के लिए हमारे पास तीन टेबल हैं:

  • पुस्तक तालिका की विदेशी कुंजी Author_ID AUTHORS तालिका में एक लेखक को एक पुस्तक से लिंक करता है।
  • लेखक तालिका की विदेशी कुंजी country_id COUNTRIES तालिका में किसी देश को लेखक से लिंक करता है।
  • COUNTRIES तालिका में कोई विदेशी कुंजी नहीं है क्योंकि इस डिज़ाइन में किसी अन्य तालिका से लिंक करने की आवश्यकता नहीं है।

क्यों ट्रांजिटिव निर्भरता खराब डेटाबेस डिजाइन हैं

3 एनएफ सुनिश्चित करने में मदद के लिए ट्रांजिटिव निर्भरताओं से बचने का क्या महत्व है? आइए हमारी पहली तालिका दोबारा विचार करें और इसके द्वारा बनाए गए मुद्दों को देखें:

लेखक

Author_IDलेखककिताबAuthor_Nationality
Auth_001ऑरसन स्कॉट कार्डख़त्म करने वाले का खेलसंयुक्त राज्य अमेरिका
Auth_001ऑरसन स्कॉट कार्डदिमाग के बच्चेसंयुक्त राज्य अमेरिका
Auth_002मार्गरेट एटवुडहस्तनिर्मित कथाकनाडा

इस प्रकार का डिज़ाइन डेटा विसंगतियों और असंगतताओं में योगदान दे सकता है, उदाहरण के लिए:

  • यदि आपने दो पुस्तकें "बच्चों के दिमाग" और "एन्डर गेम" को हटा दिया है, तो आप लेखक "ऑर्सन स्कॉट कार्ड" और उनकी राष्ट्रीयता को पूरी तरह से डेटाबेस से हटा देंगे।
  • जब तक आप कोई पुस्तक नहीं जोड़ते तब तक आप डेटाबेस में एक नया लेखक नहीं जोड़ सकते; क्या होगा यदि लेखक अभी तक अप्रकाशित है या आप उस पुस्तक के नाम को नहीं जानते हैं जिसे उसने लिखा है?
  • अगर "ऑरसन स्कॉट कार्ड" ने अपनी नागरिकता बदल दी है, तो आपको इसे सभी अभिलेखों में बदलना होगा जिसमें वह प्रकट होता है। एक ही लेखक के साथ कई रिकॉर्ड होने के कारण गलत डेटा हो सकता है: क्या होगा यदि डेटा प्रविष्टि व्यक्ति को यह नहीं पता कि उसके लिए कई रिकॉर्ड हैं और केवल एक रिकॉर्ड में डेटा बदलते हैं?
  • आप लेखक को पूरी तरह से हटाए बिना "द हैंडमाइड्स टेल" जैसी पुस्तक को हटा नहीं सकते हैं।

ये सामान्य कारण हैं, और सामान्य निर्भरताओं से परहेज करते हैं, डेटा की रक्षा करते हैं और स्थिरता सुनिश्चित करते हैं।