सामान्यीकरण सुनिश्चित करण्यासाठी संक्रमणशील अवलंबित्वे टाळा
डेटाबेसमध्ये सक्रीय अवलंबन समान सारणीमधील मूल्यांमधील अप्रत्यक्ष संबंध आहे ज्यामुळे फंक्शनल अवलंबन होते . थर्ड नॉर्मल फॉर्म (3 एनएफ) चे सामान्यीकरण मानक प्राप्त करण्यासाठी, आपण कोणत्याही सकर्मक अवलंबन दूर करणे आवश्यक आहे.
त्याच्या स्वभावामुळे एका सक्रीय अवलंबनास तीन किंवा त्यापेक्षा जास्त गुणधर्म (किंवा डेटाबेस स्तंभ) आवश्यक असतात ज्यांच्यामध्ये त्यांच्यात फंक्शनल अवलंबन आहे, म्हणजे एखाद्या स्तंभात स्तंभ A हे मध्यवर्ती स्तंभ सी द्वारे स्तंभ बी वर अवलंबून आहे.
हे कसे कार्य करू शकते ते पाहू या.
सक्रीय अवलंबन उदाहरण
लेखक
Author_ID | लेखक | पुस्तक | लेखक- राष्ट्रीयता |
---|---|---|---|
Auth_001 | ऑरसन स्कॉट कार्ड | Ender's Game | संयुक्त राष्ट्र |
Auth_001 | ऑरसन स्कॉट कार्ड | Ender's Game | संयुक्त राष्ट्र |
Auth_002 | मार्गारेट एटवुड | हँडमैड्सची कथा | कॅनडा |
उपरोक्त AUTHORS उदाहरणामध्ये:
- पुस्तक → लेखक : येथे पुस्तक विशेषता लेखक विशेषता निर्धारित करते. जर तुम्हाला पुस्तकचे नाव माहित असेल तर तुम्ही लेखकांचे नाव जाणून घेऊ शकता. तथापि, लेखक पुस्तक निर्धारित करत नाही कारण लेखक बरेच पुस्तके लिहू शकतो. उदाहरणार्थ, आम्हाला लेखकाचे नाव ऑरसन स्कॉट कार्ड माहित आहे म्हणून, आम्हाला अद्याप पुस्तकांचे नाव माहित नाही.
- लेखक → लेखक_राष्ट्रीयत्व : त्याचप्रमाणे, लेखक विशेषता लेखक-राष्ट्रीयता निर्धारित करते, परंतु इतर मार्गाने नाही; कारण राष्ट्रीयत्व माहित आहे याचा अर्थ आम्ही लेखक निश्चित करू शकत नाही.
पण हे सारणी एका सक्रीय अवलंबनचा परिचय देते:
- Book → Author_Nationality: जर आपल्याला पुस्तकचे नाव माहित असेल तर आपण लेखक स्तंभ द्वारे राष्ट्रीयत्व ठरवू शकतो.
पारंपारिक अवलंबित्वे टाळणे
थर्ड नॉर्मल फॉर्मची खात्री करण्यासाठी, चला सक्रीय अवलंबन काढूया.
आम्ही लेखक स्तंभ मधून पुस्तक स्तंभ काढून टाकून स्वतंत्र पुस्तके तयार करून प्रारंभ करू शकतो:
पुस्तके
Book_ID | पुस्तक | Author_ID |
---|---|---|
Book_001 | Ender's Game | Auth_001 |
Book_001 | मनाची मुले | Auth_001 |
Book_002 | हँडमैड्सची कथा | Auth_002 |
लेखक
Author_ID | लेखक | लेखक- राष्ट्रीयता |
---|---|---|
Auth_001 | ऑरसन स्कॉट कार्ड | संयुक्त राष्ट्र |
Auth_002 | मार्गारेट एटवुड | कॅनडा |
हे निराकरण केले का? चला आता आपली अवलंबीता बघूया:
पुस्तके सारणी :
- Book_ID → बुक करा: पुस्तक Book_ID वर अवलंबून असते
- या सारणीतील कोणत्याही अन्य अवलंबनांमध्ये अस्तित्वात नाही, म्हणून आम्ही ठीक आहे. लक्षात घ्या की परदेशी कि लेखक_आयडी या तत्त्वावर त्याची प्राथमिक की Author_ID द्वारे AUTHORS सारणीला लिंक करते . आम्ही संबंधिक अवलंबन टाळण्यासाठी नाते निर्माण केले आहे, रिलेशन्शनल डेटाबेसचे एक मुख्य डिझाइन.
लेखक सारणी :
- Author_ID → लेखक: लेखक Author_ID वर अवलंबून असतो.
- लेखक → लेखक_राष्ट्रीयता: राष्ट्रीयत्व लेखकाने ठरविले जाऊ शकते.
- Author_ID → Author_Nationality: राष्ट्रीयत्व लेखक एडिट्रीमार्फत लेखकाने ओळखले जाऊ शकते. आमच्याकडे अजूनही सकर्मनीय अवलंबन आहे.
हा डेटा सामान्य करण्यासाठी आम्हाला एक तृतीय सारणी जोडण्याची आवश्यकता आहे:
देश
देश_आयडी | देश |
---|---|
Coun_001 | संयुक्त राष्ट्र |
Coun_002 | कॅनडा |
लेखक
Author_ID | लेखक | देश_आयडी |
---|---|---|
Auth_001 | ऑरसन स्कॉट कार्ड | Coun_001 |
Auth_002 | मार्गारेट एटवुड | Coun_002 |
आता आपल्या कडे तीन टेबल्स आहेत, टेबल्समध्ये जोडण्यासाठी परदेशी कीज वापरणे:
- पुस्तकाचे सारणी विदेशी की लेखक_आयडी AUTHORS सारणीतील लेखकांना एक पुस्तक जोडते.
- AUTHORS सारणीचे परदेशी की देश_ID COUNTRIES सारणीमधील एका देशामध्ये लेखक लिंक्स देते.
- COUNTRIES सारणीकडे परदेशी की नाही कारण या डिझाइनमधील दुसर्या सारणीशी दुवा साधण्याची आवश्यकता नाही.
Transitional अवलंबन खराब डेटाबेस डिझाइन का आहेत?
3 एनएफ निश्चित करण्यासाठी सक्रीय अवलंबन टाळण्याचे मूल्य काय आहे? आता आपली पहिली टेबल्स पुन्हा पाहू आणि ती तयार करणारी समस्या पहा.
लेखक
Author_ID | लेखक | पुस्तक | लेखक- राष्ट्रीयता |
---|---|---|---|
Auth_001 | ऑरसन स्कॉट कार्ड | Ender's Game | संयुक्त राष्ट्र |
Auth_001 | ऑरसन स्कॉट कार्ड | मनाची मुले | संयुक्त राष्ट्र |
Auth_002 | मार्गारेट एटवुड | हँडमैड्सची कथा | कॅनडा |
अशा प्रकारची रचना डेटा विसंगती आणि विसंगतींमध्ये योगदान देऊ शकते, उदाहरणार्थ:
- आपण "चिल्ड्रन ऑफ द माइंड" आणि "एन्डर द गेम" नावाचे दोन पुस्तके हटवलीत तर आपण लेखक "ऑरसन स्कॉट कार्ड" आणि त्यांचे राष्ट्रीयत्व पूर्णपणे डेटाबेसमधून हटवाल.
- जोपर्यंत आपण पुस्तक जोडत नाही तोपर्यंत आपण डेटाबेसला नवीन लेखक जोडू शकत नाही; जर लेखक अद्याप अप्रकाशित झाला असेल किंवा तिला लिहिलेल्या एखाद्या पुस्तकाचे नाव माहीत नसेल तर?
- जर "ऑरसन स्कॉट कार्डास" यांनी त्यांची नागरिकत्व बदलली असेल तर आपल्याला ते त्या सर्व नोंदींमध्ये बदलणे आवश्यक आहे ज्यात ते दिसते एकाच लेखकाने अनेक नोंदी केल्यामुळे चुकीचा डेटा होऊ शकतो: जर डेटा एंट्रीला व्यक्तीला कळले नाही की त्याच्यासाठी एकापेक्षा जास्त रेकॉर्ड आहेत आणि केवळ एकाच रेकॉर्डमध्ये डेटा बदलला तर?
- आपण "हँडमैड्सच्या कथा" सारखी पुस्तके पूर्णपणे हटविल्याशिवाय पूर्णपणे हटवू शकत नाही.
सामान्यीकरण आणि संक्रमित होणारी अवलंबन टाळण्यामुळे, डेटाचे संरक्षण करणे आणि सुसंगतता सुनिश्चित करण्यासाठी हे काही कारणे आहेत.