हे दोन सोप्या नियम आपल्या डेटाबेसचे सामान्यीकरण करण्यात मदत करतील
फर्स्ट नॉर्मल फॉर्म (1 एनएफ) एका संगठित डेटाबेससाठी मूलभूत नियम सेट करते:
- त्याच सारणीमधील डुप्लिकेट स्तंभ हटवा.
- संबंधित डेटाच्या प्रत्येक समूहासाठी स्वतंत्र सारण्या तयार करा आणि प्रत्येक पंक्तिला एका अनन्य स्तंभासह (प्राथमिक की) ओळखा.
डेटाबेसचे व्यावहारिक रचना विचारात घेताना या नियमाचा अर्थ काय आहे? हे प्रत्यक्षात बरेच सोपे आहे.
1. डुप्लिकेट हटवा
पहिला नियम अशी आज्ञा देतो की आपण टेबलच्या एकाच ओळीतील डेटाची नक्कल करू नये. डेटाबेस समाजात, ही संकल्पना सारणीच्या परमाणू म्हणून ओळखली जाते. या नियमांचे अनुपालन करणार्या टेबल्स परमाणु असे म्हणतात. चला एक आदर्श उदाहरण म्हणून हे तत्त्व शोधा: मानव संसाधन डेटाबेसमधील एक टेबल जे व्यवस्थापकास-अधीनस्थ संबंध संचयित करते. आमच्या उदाहरणाच्या हेतूसाठी, आम्ही व्यवसाय नियम लादू की प्रत्येक मॅनेजरकडे एक किंवा एकपेक्षा जास्त सहपरिवर्तन असेल तर प्रत्येक गौणस्थानाकडे केवळ एकच व्यवस्थापक असेल.
अंतर्ज्ञानाने, या माहितीचा मागोवा घेण्यासाठी सूची किंवा स्प्रेडशीट तयार करताना, आम्ही खालील फील्डसह एक सारणी तयार करू शकू:
- व्यवस्थापक
- अधीनस्थ 1
- उपनगरीय 2
- उप-मंडळ 3
- अधीनस्थ 4
तथापि, 1 एनएफ द्वारा लादलेला पहिला नियम आठवा: त्याच सारणीमधील डुप्लिकेट स्तंभ हटवा. स्पष्टपणे, subordinate1-subordinate4 स्तंभ डुप्लिकेटिव्ह आहेत. एक क्षण घ्या आणि या परिस्थितीत मांडलेल्या समस्या विचारात घ्या. जर व्यवस्थापकाकडे फक्त एक गौण असेल तर उपनगरी 2 subordinate4 स्तंभ केवळ साठवणीची जागा वाया घालवतात (एक मौल्यवान डेटाबेस कमोडिटी). शिवाय, एखाद्या व्यवस्थापकाकडे आधीच्या 4 उपनिधींचाही समावेश आहे अशा परिस्थितीची कल्पना करा - ती एखाद्या अन्य कर्मचा-यावर घेतल्यास काय होते? संपूर्ण टेबल संरचना बदल आवश्यक आहे
या टप्प्यावर, दुसरी चमकदार कल्पना सामान्यत: डेटाबेसची सुरुवात करतात: आम्हाला एकापेक्षा अधिक स्तंभ नको आहेत आणि आम्ही एक लवचिक डेटा स्टोरेजसाठी परवानगी देऊ इच्छितो. असे काहीतरी करण्याचा प्रयत्न करूया:
- व्यवस्थापक
- निदोषित
आणि सबडोनेटस फील्डमध्ये "मेरी, बिल, जो" या स्वरूपात अनेक नोंदी असतील.
हे समाधान अधिक जवळ आहे, पण ते मार्क कमी पडते. उपअभियंता स्तंभ अजूनही दुप्पट आणि अ-परमाणु आहे. आपल्याला एक गौण व्यक्ती जोडण्याची किंवा काढून टाकण्याची आवश्यकता असताना काय होते? आपल्याला टेबलमधील संपूर्ण सामग्री वाचणे आणि लिहिणे आवश्यक आहे या परिस्थितीत हा मोठा करार नाही, पण जर एक मॅनेजरकडे शंभर कर्मचारी असतील तर? तसेच, ते भविष्यातील क्वेरींमध्ये डेटाबेसमधून डेटा निवडण्याची प्रक्रिया गुंतागुंतीत करते.
येथे एक सारणी आहे जी 1NF चे प्रथम नियम पूर्ण करते:
- व्यवस्थापक
- दुय्यम
या प्रकरणात, प्रत्येक गौण एक एकल प्रविष्ट आहे, पण व्यवस्थापकांना एकाधिक प्रविष्ट्या असू शकतात.
2. प्राथमिक की ओळखा
आता, दुसर्या नियमांबद्दल काय: प्रत्येक पंक्ती एका अनन्य स्तंभात किंवा स्तंभ ( प्राथमिक की ) च्या सेटसह ओळखा? आपण उपरोक्त सारणीवर एक कटाक्ष टाकू शकता आणि प्राथमिक कोड म्हणून गौण स्तंभाचा वापर सुचवू शकता. खरं तर, गौण स्तंभ हे प्राथमिक कीसाठी एक चांगले उमेदवार आहे कारण आमच्या व्यावसायिक नियमानुसार प्रत्येक गौणस्थानाकडे केवळ एकच व्यवस्थापक असू शकतो. तथापि, आम्ही आमच्या टेबलमध्ये संचयित करण्यासाठी निवडलेला डेटा हे आदर्श समाधानापेक्षा कमी आहे. आम्ही जिम नावाचे आणखी एक कर्मचारी भाड्याने घेतल्यास काय होईल? डेटाबेसमध्ये आपण व्यवस्थापकाचे-अधीनस्थ नाते कसे संचयित करू शकतो?
एक प्राथमिक अद्वितीय म्हणून एक खरोखर अद्वितीय ओळखकर्ता (जसे की कर्मचारी ID) वापरणे सर्वोत्तम आहे आमची अंतिम सारणी अशी दिसेल:
- व्यवस्थापक आयडी
- अधीनस्थ आयडी
आता, आमचे टेबल प्रथम सामान्य स्वरूपात आहे! आपण सामान्यीकरण शिकणे सुरू ठेवू इच्छित असल्यास, या मालिकेतील अन्य लेख वाचा: