अपने डेटाबेस को सामान्य बनाना: पहला सामान्य फॉर्म

ये दो सरल नियम आपके डेटाबेस को सामान्य बनाने में मदद करेंगे

पहला सामान्य फॉर्म (1 एनएफ) एक संगठित डेटाबेस के लिए मूल नियम निर्धारित करता है:

डेटाबेस के व्यावहारिक डिजाइन पर विचार करते समय इन नियमों का क्या अर्थ है? यह वास्तव में काफी सरल है।

1. डुप्लिकेशन को हटा दें

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

सहजता से, इस जानकारी को ट्रैक करने के लिए कोई सूची या स्प्रेडशीट बनाते समय, हम निम्न फ़ील्ड के साथ एक तालिका बना सकते हैं:

हालांकि, 1 एनएफ द्वारा लगाए गए पहले नियम को याद करें: उसी तालिका से डुप्लीकेटिव कॉलम हटाएं। स्पष्ट रूप से, अधीनस्थ 1-अधीनस्थ 4 कॉलम डुप्लिकेटिव हैं। एक पल लें और इस परिदृश्य से उठाई गई समस्याओं पर विचार करें। यदि किसी प्रबंधक के पास केवल एक अधीनस्थ होता है, तो Subordinate2-Subordinate4 कॉलम बस स्टोरेज स्पेस बर्बाद कर रहे हैं (एक बहुमूल्य डेटाबेस कमोडिटी)। इसके अलावा, उस मामले की कल्पना करें जहां एक प्रबंधक के पास पहले से ही 4 अधीनस्थ हैं - यदि वह किसी अन्य कर्मचारी को लेती है तो क्या होता है? पूरे टेबल संरचना में संशोधन की आवश्यकता होगी।

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

और अधीनस्थ क्षेत्र में "मैरी, बिल, जो" फ़ॉर्म में कई प्रविष्टियां होंगी।

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

यहां एक सारणी है जो 1 एनएफ के पहले नियम को पूरा करती है:

इस मामले में, प्रत्येक अधीनस्थ में एक एकल प्रविष्टि होती है, लेकिन प्रबंधकों में एकाधिक प्रविष्टियां हो सकती हैं।

2. प्राथमिक कुंजी की पहचान करें

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

एक प्राथमिक कुंजी के रूप में वास्तव में अद्वितीय पहचानकर्ता (जैसे एक कर्मचारी आईडी) का उपयोग करना सबसे अच्छा है। हमारी अंतिम तालिका इस तरह दिखेगी:

अब, हमारी मेज पहले सामान्य रूप में है! यदि आप सामान्यीकरण के बारे में सीखना जारी रखना चाहते हैं, तो इस श्रृंखला में अन्य लेख पढ़ें: