3.1 डेटाबेस सामान्यीकरण

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

डेटाबेस संबंधों को एक ऐसे रूप में परिवर्तित करने की प्रक्रिया जो सामान्य रूपों के अनुरूप हो, सामान्यीकरण कहलाती है। सामान्यीकरण का उद्देश्य डेटाबेस की संरचना को एक ऐसे रूप में लाना है जो न्यूनतम तार्किक अतिरेक प्रदान करता है , और इसका उद्देश्य प्रदर्शन को कम करना या बढ़ाना या डेटाबेस की भौतिक मात्रा को कम करना या बढ़ाना नहीं है

सामान्यीकरण का अंतिम लक्ष्य डेटाबेस में संग्रहीत जानकारी की संभावित असंगति को कम करना है। सामान्यीकरण प्रक्रिया का सामान्य उद्देश्य इस प्रकार है:

  • कुछ प्रकार के अतिरेक का बहिष्करण;
  • कुछ अद्यतन विसंगतियों को ठीक करें;
  • एक डेटाबेस परियोजना का विकास जो वास्तविक दुनिया का पर्याप्त "उच्च-गुणवत्ता" प्रतिनिधित्व है, सहज ज्ञान युक्त है और बाद के विस्तार के लिए एक अच्छे आधार के रूप में काम कर सकता है;
  • आवश्यक अखंडता बाधाओं को लागू करने के लिए प्रक्रिया को सरल बनाना।

अतिरेक को आमतौर पर संबंधों को इस तरह से विघटित करके समाप्त कर दिया जाता है कि प्रत्येक संबंध में केवल प्राथमिक तथ्य ही संग्रहीत होते हैं (अर्थात, ऐसे तथ्य जो अन्य संग्रहीत तथ्यों से प्राप्त नहीं होते हैं)।

जबकि सामान्यीकरण के विचार डेटाबेस डिज़ाइन के लिए बहुत उपयोगी हैं, वे किसी भी तरह से डेटाबेस डिज़ाइन की गुणवत्ता में सुधार के लिए एक सार्वभौमिक या संपूर्ण साधन नहीं हैं। यह इस तथ्य के कारण है कि डेटाबेस संरचना में बहुत अधिक संभावित त्रुटियां और कमियां हैं जिन्हें सामान्यीकरण द्वारा समाप्त नहीं किया जा सकता है।

इन विचारों के बावजूद, सामान्यीकरण का सिद्धांत संबंधपरक सिद्धांत और व्यवहार की एक बहुत ही मूल्यवान उपलब्धि है, क्योंकि यह एक डेटाबेस परियोजना की गुणवत्ता और इस गुणवत्ता में सुधार के औपचारिक तरीकों के लिए वैज्ञानिक रूप से कठोर और उचित मानदंड प्रदान करता है। यह सामान्यीकरण सिद्धांत को विशुद्ध रूप से अनुभवजन्य डिजाइन दृष्टिकोण से अलग करता है जो अन्य डेटा मॉडल में पेश किए जाते हैं। इसके अलावा, यह तर्क दिया जा सकता है कि सूचना प्रौद्योगिकी के पूरे क्षेत्र में औपचारिक कठोरता के स्तर के संदर्भ में संबंधपरक डेटाबेस के सामान्यीकरण के सिद्धांत के साथ तुलनीय डिजाइन समाधानों के मूल्यांकन और सुधार के लिए व्यावहारिक रूप से कोई तरीका नहीं है।

सामान्यीकरण की कभी-कभी इस आधार पर आलोचना की जाती है कि "यह सिर्फ सामान्य ज्ञान है" और कोई भी सक्षम पेशेवर "स्वाभाविक रूप से" निर्भरता सिद्धांत को लागू किए बिना पूरी तरह से सामान्यीकृत डेटाबेस डिज़ाइन करेगा।

हालाँकि, जैसा कि प्रोफेसर क्रिस्टोफर डेट ने उल्लेख किया है, सामान्यीकरण ठीक सामान्य ज्ञान के सिद्धांत हैं जो एक परिपक्व डिजाइनर को उनके दिमाग में मार्गदर्शन करते हैं, अर्थात सामान्यीकरण के सिद्धांत औपचारिक सामान्य ज्ञान हैं । इस बीच, सामान्य ज्ञान के सिद्धांतों की पहचान करना और औपचारिक रूप देना एक बहुत ही मुश्किल काम है, और इसे हल करने में सफलता एक महत्वपूर्ण उपलब्धि है।

3.2 पहला सामान्य रूप

पहला सामान्य रूप (1NF) संबंधपरक डेटा मॉडल में संबंध का मूल सामान्य रूप है।

एक संबंध चर पहले सामान्य रूप में होता है यदि और केवल तभी, उस चर के किसी मान्य मान में, प्रत्येक संबंध टपल में प्रत्येक विशेषता के लिए बिल्कुल एक मान होता है।

संबंधपरक मॉडल में, संबंध की अवधारणा की परिभाषा के अनुसार, संबंध हमेशा पहले सामान्य रूप में होता है।

जहां तक ​​विभिन्न सारणियों का संबंध है, वे संबंधों का सही निरूपण नहीं हो सकते हैं और तदनुसार, 1NF में नहीं हो सकते हैं। ऐसे मामले के लिए क्रिस्टोफर डेट की परिभाषा के अनुसार, एक तालिका सामान्यीकृत है (समतुल्य रूप से, पहले सामान्य रूप में है) अगर और केवल अगर यह किसी संबंध का प्रत्यक्ष और सही प्रतिनिधित्व है। अधिक विशेष रूप से, विचाराधीन तालिका को निम्नलिखित पाँच शर्तों को पूरा करना चाहिए:

  • ऊपर से नीचे तक पंक्तियों का कोई क्रम नहीं है (दूसरे शब्दों में, पंक्तियों का क्रम कोई जानकारी नहीं देता है)।
  • स्तंभों का कोई बाएँ से दाएँ क्रम नहीं है (दूसरे शब्दों में, स्तंभों के क्रम में कोई जानकारी नहीं है)।
  • कोई डुप्लिकेट लाइन नहीं।
  • पंक्ति और स्तंभ के प्रत्येक चौराहे में संबंधित डोमेन से ठीक एक मान होता है (और कुछ नहीं)।
  • सभी कॉलम "नियमित" हैं।

किसी तालिका के सभी स्तंभों की "नियमितता" का अर्थ है कि तालिका में कोई "छिपा हुआ" घटक नहीं है जिसे केवल नियमित स्तंभ नामों का संदर्भ देने के बजाय कुछ विशेष ऑपरेटर के आह्वान में ही एक्सेस किया जा सकता है, या जो पंक्तियों के लिए साइड इफेक्ट का कारण बनता है या मानक ऑपरेटरों का आह्वान करते समय टेबल।

मूल गैर-सामान्यीकृत (अर्थात, कुछ संबंधों का सही प्रतिनिधित्व नहीं) तालिका:

कर्मचारी फ़ोन नंबर
इवानोव आई.आई.

283-56-82

390-57-34

पेट्रोव पी.पी. 708-62-34
सिदोरोव एस.एस.

तालिका को घटाकर 1NF कर दिया गया है, जो किसी संबंध का सही प्रतिनिधित्व है:

कर्मचारी फ़ोन नंबर
इवानोव आई.आई. 283-56-82
इवानोव आई.आई. 390-57-34
पेट्रोव पी.पी. 708-62-34

3.3 दूसरा सामान्य रूप

एक संबंध चर दूसरे सामान्य रूप में होता है यदि और केवल अगर यह पहले सामान्य रूप में होता है और प्रत्येक गैर-कुंजी विशेषता अपने उम्मीदवार कुंजी (प्रत्येक) पर अपरिवर्तनीय रूप से निर्भर होती है

इरेड्यूसबिलिटी का अर्थ है कि संभावित कुंजी में विशेषताओं का एक छोटा उपसमुच्चय नहीं होता है जिससे यह कार्यात्मक निर्भरता भी प्राप्त की जा सकती है। एक अलघुकरणीय कार्यात्मक निर्भरता के लिए, "पूर्ण कार्यात्मक निर्भरता" की समकक्ष अवधारणा का प्रयोग अक्सर किया जाता है।

यदि उम्मीदवार कुंजी सरल है, अर्थात, इसमें एक विशेषता शामिल है, तो उस पर कोई भी कार्यात्मक निर्भरता इरेड्यूसिबल (पूर्ण) है। यदि उम्मीदवार कुंजी एक समग्र कुंजी है, तो दूसरे सामान्य रूप की परिभाषा के अनुसार, संबंध में कोई गैर-कुंजी विशेषता नहीं होनी चाहिए जो समग्र उम्मीदवार कुंजी के भाग पर निर्भर करती है।

एक संबंध को दूसरे सामान्य रूप में बदलने का एक उदाहरण

माना {कंपनी शाखा, स्थिति} विशेषताओं की जोड़ी निम्नलिखित संबंध में प्राथमिक कुंजी बनाती है:

आर
कंपनी शाखा नौकरी का नाम वेतन कंप्यूटर की उपलब्धता
टॉम्स्क में शाखा सफाई वाला 20000 नहीं
मास्को में शाखा प्रोग्रामर 40000 खाना
टॉम्स्क में शाखा प्रोग्रामर 25000 खाना

मान लीजिए कि वेतन शाखा और स्थिति पर निर्भर करता है, और कंप्यूटर की उपलब्धता केवल स्थिति पर निर्भर करती है।

एक कार्यात्मक निर्भरता स्थिति है -> एक कंप्यूटर होना, जिसमें बाईं ओर (निर्धारक) प्राथमिक कुंजी का केवल एक हिस्सा है, जो दूसरे सामान्य रूप की स्थिति का उल्लंघन करता है।

2NF को कम करने के लिए, मूल संबंध को दो संबंधों में विघटित किया जाना चाहिए:

आर 1
कंपनी शाखा नौकरी का नाम वेतन
टॉम्स्क में शाखा सफाई वाला 20000
मास्को में शाखा प्रोग्रामर 40000
टॉम्स्क में शाखा प्रोग्रामर 25000
आर 2
नौकरी का नाम कंप्यूटर की उपलब्धता
सफाई वाला नहीं
प्रोग्रामर खाना
प्रोग्रामर खाना

3.4 तीसरा सामान्य रूप (3 एनएफ)

एक रिलेशन वेरिएबल R 3NF में है अगर और केवल अगर निम्नलिखित स्थितियाँ सत्य हैं:

  • आरदूसरे सामान्य रूप में है।
  • कोई गैर-महत्वपूर्ण विशेषता नहींआरउम्मीदवार कुंजी पर सकर्मक कार्यात्मक निर्भरता में नहीं हैआर.

परिभाषा के लिए स्पष्टीकरण:

संबंध R की एक गैर-महत्वपूर्ण विशेषता एक विशेषता है जो R की किसी भी उम्मीदवार कुंजी से संबंधित नहीं है।

विशेषता X के सेट पर विशेषता Z के सेट की कार्यात्मक निर्भरता (लिखा हुआ X → Z, उच्चारण "x निर्धारित करता है") सकर्मक है यदि विशेषताओं का ऐसा सेट है कि X → Y और Y → Z। इसमें मामले में, कोई भी सेट X, Y और Z दूसरे का उपसमुच्चय नहीं है, यानी कार्यात्मक निर्भरताएँ X → Z, X → Y, और Y → Z तुच्छ नहीं हैं, और कोई कार्यात्मक निर्भरता Y → X भी नहीं है।

3NF की एक परिभाषा, Codd's के समतुल्य लेकिन भिन्न शब्दों में, 1982 में कार्लो Zaniolo द्वारा दी गई थी। इसके अनुसार, एक रिलेशन वेरिएबल 3NF में होता है अगर और केवल अगर इसकी प्रत्येक कार्यात्मक निर्भरता X → A निम्नलिखित शर्तों में से कम से कम एक को संतुष्ट करती है:

  • X में A है (अर्थात, X → A एक तुच्छ कार्यात्मक निर्भरता है)
  • एक्स - सुपर की
  • ए एक महत्वपूर्ण विशेषता है (यानी, ए उम्मीदवार कुंजी का हिस्सा है)।

Zaniolo की परिभाषा स्पष्ट रूप से 3NF और अधिक कठोर बॉयस-कॉड नॉर्मल फॉर्म (BCNF) के बीच के अंतर को परिभाषित करती है: BCNF में तीसरी शर्त शामिल नहीं है ("A एक प्रमुख विशेषता है")।

Codd की 3NF परिभाषा का एक यादगार और पारंपरिक रूप से वर्णनात्मक सारांश बिल केंट द्वारा दिया गया था: प्रत्येक गैर-कुंजी विशेषता "कुंजी, पूर्ण कुंजी, और कुछ भी नहीं बल्कि कुंजी के बारे में जानकारी प्रदान करनी चाहिए "

गैर-महत्वपूर्ण विशेषताओं की "पूर्ण कुंजी" पर निर्भर होने की शर्त यह सुनिश्चित करती है कि संबंध दूसरे सामान्य रूप में है; और उनके लिए "और कुछ नहीं बल्कि कुंजी" पर निर्भर रहने की शर्त यह है कि वे तीसरे सामान्य रूप में हैं।

क्रिस डेट केंट के सारांश को 3NF की "सहज रूप से आकर्षक विशेषता" के रूप में बोलते हैं, और देखते हैं कि, थोड़े से संशोधन के साथ, यह सख्त बॉयस-कॉड सामान्य रूप की परिभाषा के रूप में भी काम कर सकता है: "प्रत्येक विशेषता को एक कुंजी के बारे में जानकारी प्रदान करनी चाहिए , एक पूर्ण कुंजी, और कुछ भी नहीं बल्कि कुंजी।

3NF परिभाषा का केंट का संस्करण डेटा के सूत्रीकरण के बॉयस-कॉड सामान्य फॉर्म संस्करण की तुलना में कम सख्त है, क्योंकि पूर्व में केवल यह कहा गया है कि गैर-कुंजी गुण कुंजियों पर निर्भर करते हैं।

प्राथमिक गुण (जो कुंजी या उनके भाग हैं) को कार्यात्मक रूप से बिल्कुल भी निर्भर नहीं होना चाहिए; उनमें से प्रत्येक कुंजी को स्वयं या उसके भाग को प्रदान करके कुंजी के बारे में जानकारी प्रदान करता है। यहां यह ध्यान दिया जाना चाहिए कि यह नियम केवल गैर-कुंजी विशेषताओं के लिए मान्य है, क्योंकि इसे सभी विशेषताओं पर लागू करने से सभी जटिल वैकल्पिक कुंजियों को पूरी तरह से अक्षम कर दिया जाएगा, क्योंकि ऐसी कुंजी का प्रत्येक तत्व "पूर्ण कुंजी" स्थिति का उल्लंघन करेगा।

एक उदाहरण के रूप में संबंध चर R1 पर विचार करें:

आर 1
कर्मचारी विभाग टेलीफ़ोन
ग्रिशिन लेखांकन 11-22-33
वसीलीव लेखांकन 11-22-33
पेत्रोव आपूर्ति 44-55-66

प्रत्येक कर्मचारी विशेष रूप से एक विभाग से संबंधित होता है; प्रत्येक विभाग के पास एक ही टेलीफोन है। कर्मचारी विशेषता प्राथमिक कुंजी है। कर्मचारियों के पास व्यक्तिगत फ़ोन नहीं होते हैं, और कर्मचारी का फ़ोन नंबर पूरी तरह से विभाग पर निर्भर करता है।

उदाहरण में, निम्नलिखित कार्यात्मक निर्भरताएँ मौजूद हैं: कर्मचारी → विभाग, विभाग → फ़ोन, कर्मचारी → फ़ोन।

रिलेशन वेरिएबल R1 दूसरे सामान्य रूप में है क्योंकि प्रत्येक विशेषता में संभावित कुंजी कर्मचारी पर एक अलघुकरणीय कार्यात्मक निर्भरता है।

संबंध कर्मचारी → फोन सकर्मक है, इसलिए संबंध तीसरे सामान्य रूप में नहीं है।

R1 को विभाजित करने से दो रिलेशन वेरिएबल्स बनते हैं जो 3NF में हैं:

आर 2
विभाग टेलीफ़ोन
लेखांकन 11-22-33
आपूर्ति 44-55-66

R3
कर्मचारी विभाग
ग्रिशिन लेखांकन
वसीलीव लेखांकन
पेत्रोव आपूर्ति

प्रारंभिक संबंध R1, यदि आवश्यक हो, संबंधों R2 और R3 में शामिल होने के संचालन के परिणामस्वरूप आसानी से प्राप्त किया जाता है।