सामान्यकरण सुनिश्चित गर्न सहयोगको लागि पारदर्शी निर्भरताहरूबाट बचाउनुहोस्
डाटाबेसमा एक पारदर्शी निर्भरता एक समान तालिकामा मानहरू बीचको अप्रत्यक्ष सम्बन्ध हो जसले कार्यात्मक निर्भरता उत्पन्न गर्दछ । तेस्रो सामान्य फारम (3 एनएफ) को सामान्यकरण मानक प्राप्त गर्न, तपाईंले कुनै पनि पारस्परिक निर्भरता हटाउनु पर्छ।
यसको प्रकृति द्वारा, एक पारगमन निर्भरता को तीन या अधिक विशेषताहरु को आवश्यकता हो (या डेटाबेस स्तम्भहरु) जसको बीच एक कार्यात्मक निर्भरता हो, जिसका अर्थ छ कि स्तम्भ मा स्तम्भ ए स्तम्भ बी मा एक मध्यवर्ती स्तम्भ सी मा निर्भर गर्दछ।
आउनुहोस् यो कसरी काम गर्न सक्छ।
पारदर्शी निर्भरता उदाहरण
AUTHORS
लेखक_ID | लेखक | पुस्तक | Author_Nationality |
---|---|---|---|
Auth_001 | ओर्सन स्कट कार्ड | एन्डरको खेल | संयुक्त राज्य अमेरिका |
Auth_001 | ओर्सन स्कट कार्ड | एन्डरको खेल | संयुक्त राज्य अमेरिका |
Auth_002 | मार्गरेट एटवुड | ह्यान्डम्यामको कथा | क्यानाडा |
AUTHORS उदाहरण माथि:
- पुस्तक → लेखक : यहाँ, पुस्तक गुण लेखक विशेषता को निर्धारण गर्दछ। यदि तपाई पुस्तक नाम जान्नुहुन्छ भने, तपाईं लेखकको नाम सिक्न सक्नुहुन्छ। यद्यपि, लेखकले पुस्तक निर्धारण गर्दैन, किनभने एक लेखकले बहु पुस्तकहरू लेख्न सक्दछ। उदाहरणको लागि, किनकि हामी लेखकको नाम Orson स्कट कार्ड जान्दछौं, हामी अझै पुस्तक बुक नाम थाहा छैनौं।
- लेखक → Author_Nationality : त्यस्तै गरी, लेखक विशेषता Author_Nationality को निर्धारण गर्दछ, तर अर्को वरिपरि होइन; किनकि हामी जान्दछौं कि राष्ट्रीयता भनेको होइन कि हामी लेखक निर्धारण गर्न सक्छौं।
तर यो तालिका एक पारगमन निर्भरता परिचय:
- पुस्तक → लेखक_Nationality: यदि हामी किताबको नाम जान्दछौं, हामी लेखक स्तम्भ मार्फत राष्ट्रीयता निर्धारण गर्न सक्छौं।
पारदर्शी निर्भरताहरू रोक्न
तेस्रो सामान्य फारम निश्चित गर्न, चलो पारगमन निर्भरता हटाउनुहोस्।
लेखक लेखक तालिकाबाट पुस्तक कलम हटाउन र अलग पुस्तक पुस्तक तालिका सिर्जना गरेर हामी सुरु गर्न सक्दछौं:
किताबहरु
बुक_आईडी | पुस्तक | लेखक_ID |
---|---|---|
बुक_001 | एन्डरको खेल | Auth_001 |
बुक_001 | मनका छोराछोरी | Auth_001 |
Book_002 | ह्यान्डम्यामको कथा | Auth_002 |
AUTHORS
लेखक_ID | लेखक | Author_Nationality |
---|---|---|
Auth_001 | ओर्सन स्कट कार्ड | संयुक्त राज्य अमेरिका |
Auth_002 | मार्गरेट एटवुड | क्यानाडा |
के यो ठीक भयो? आउनुहोस् अब हाम्रो निर्भरता जाँच गर्नुहोस्:
पुस्तकहरु तालिका :
- बुक_ID → बुक: बुक बुकमा निर्भर गर्दछ Book_ID ।
- यस तालिकामा कुनै अन्य निर्भरताहरू अवस्थित छैनन्, त्यसैले हामी ठीक छौं। ध्यान दिनुहोस् कि विदेशी कुञ्जी लेखक_ID ले यो तालिका AUTHORS तालिकामा यसको प्राथमिक कुञ्जी लेखक_ID मार्फत लिङ्क लिङ्क गर्दछ। हामीले एक पारगमन निर्भरताबाट टाढा राख्नको लागि सम्बन्ध बनाएको छ, सम्बन्धी डेटाबेसको एक प्रमुख डिजाइन।
AUTHORS तालिका :
- लेखक_ID → लेखक: लेखकले लेखक_ID मा निर्भर गर्दछ।
- लेखक → Author_Nationality: राष्ट्रत्व लेखक द्वारा निर्धारण गर्न सकिन्छ।
- लेखक_ID → लेखकविद्यार्थी: राष्ट्रीयता Author_ID बाट लेखक विशेषताको माध्यमबाट निर्धारण गर्न सकिन्छ। हाम्रो अझै पनि पारगमन निर्भरता छ।
हामीले यो डेटा सामान्य गर्न तेस्रो तालिका थप्न आवश्यक छ:
COUNTRIES
Country_ID | देश |
---|---|
Coun_001 | संयुक्त राज्य अमेरिका |
Coun_002 | क्यानाडा |
AUTHORS
लेखक_ID | लेखक | Country_ID |
---|---|---|
Auth_001 | ओर्सन स्कट कार्ड | Coun_001 |
Auth_002 | मार्गरेट एटवुड | Coun_002 |
अब हामीसँग तीन तालिकाहरू छन्, बाह्य कुञ्जीहरूको प्रयोग तालिकाहरू बीच लिंक गर्न:
- बुक पुस्तक तालिकाको विदेशी कुञ्जी लेखक_ ID AUTHORS तालिकामा एक लेखकको लागि पुस्तक लिङ्क गर्दछ।
- AUTHORS तालिकाको विदेशी कुञ्जी Country_ID COUNTRIES तालिकामा एक देशको लिङ्क लिङ्क गर्दछ।
- COUNTRIES तालिकामा कुनै विदेशी कुञ्जी छैन किनकि यस डिजाइनमा अर्को तालिकामा लिङ्क गर्न आवश्यक पर्दैन।
किन पारदर्शी निर्भरता खराब डेटाबेस डिजाइन हो
3 एनएफ सुनिश्चित गर्न मद्दतको लागि पारस्परिक निर्भरताबाट टाढाको मूल्य के हो? आउनुहोस् हाम्रो पहिलो तालिका फेरि पुन: विचार गर्नुहोस् र यसले समस्याहरू देखाउँछ:
AUTHORS
लेखक_ID | लेखक | पुस्तक | Author_Nationality |
---|---|---|---|
Auth_001 | ओर्सन स्कट कार्ड | एन्डरको खेल | संयुक्त राज्य अमेरिका |
Auth_001 | ओर्सन स्कट कार्ड | मनका छोराछोरी | संयुक्त राज्य अमेरिका |
Auth_002 | मार्गरेट एटवुड | ह्यान्डम्यामको कथा | क्यानाडा |
यस प्रकारको डिजाइनले डाटा विषैले र विसंगतिमा योगदान गर्न सक्छ, उदाहरणका लागि:
- यदि तपाइँ "मनका बालिका" र "एन्डरको खेल" दुई पुस्तकहरू मेटाउनुभयो भने, "तपाईले लेखक" ओर्सन स्कट कार्ड "मेटाउनुहुनेछ र तिनको राष्ट्रीयताले डाटाबेसबाट पूर्ण रूपमा लिनेछ।
- तपाईंले डाटाबेसमा नयाँ लेखक थप्न सक्नुहुन्न जब सम्म तपाईले एक पुस्तक थप्न सक्नुहुन्न; के यदि लेखक अझै अप्रकाशित छ वा तपाईं पुस्तकको नामलाई थाहा छैन भने त्यो लेखिएको छ?
- यदि "ओसन स्कट कार्ड" ले आफ्नो नागरिकता परिवर्तन गर्यो भने, तपाईंले यसलाई सबै रेकर्डहरूमा परिवर्तन गर्नुपर्दछ जसमा उसले देखा पर्दछ। एउटै लेखकसँग धेरै रेकर्डहरू हुन सक्छ गलत डेटामा परिणाम हुन सक्छ: यदि डेटा प्रविष्टि व्यक्तिलाई थाहा छैन भने यसको लागि धेरै रेकर्डहरू छन् र केवल एक रेकर्डमा डेटा परिवर्तन गर्दछ?
- तपाईं "ह्यान्डमहिमको कथा" जस्तै पुस्तक मेटाउन सक्नुहुनेछ लेखकलाई पूर्ण रूपमा हटाउन पनि।
यी सामान्य कारणहरू हुन्, किन सामान्यकरण , र ट्राफिक निर्भरताबाट जोगिन्छन्, डाटाको सुरक्षा र स्थिरता सुनिश्चित गर्नुहोस्।