तेस्रो सामान्य फारम (3 एनएफ) मा डाटाबेस राख्नु

तेस्रो सामान्य रूप (3 एनएफ) एक डेटाबेस सिद्धान्त हो जुन पहिलो सामान्य फारम (1 एनएफ) र दोस्रो साधारण फारम (2 एनएफ) द्वारा प्रदान गरिएको डेटाबेस सामान्यता सिद्धान्तहरू निर्माण गरेर डेटाको सत्यतालाई समर्थन गर्दछ।

तेस्रो सामान्य फाराम आवश्यकताहरू

डाटाबेसको लागि तेस्रो सामान्य रूपमा दुई आधारभूत आवश्यकताहरू छन्:

प्राथमिक कुञ्जी निर्भरताको बारेमा

चल्नुको अर्को अर्थ हामीले अन्वेषण गरौं कि सबै स्तम्भहरू प्राथमिक कुञ्जीमा निर्भर हुनुपर्छ।

यदि एक स्तम्भको मान प्राथमिक कुञ्जी र तालिकामा अर्को स्तम्भबाट व्युत्पन्न गर्न सकिन्छ भने, यो 3NF उल्लङ्घन गर्दछ। यी स्तम्भहरूसँग कर्मचारी तालिकालाई विचार गर्नुहोस्:

अन्तिम नाम र FirstName दुवै EmployeeID को मानमा मात्र निर्भर छ? ठीक छ, अन्तिम नाम सक्छ FirstName मा निर्भर छ? होइन, किनकि LastName मा निहित केहि पनि FirstName को मान बताउनेछ। पहिलो नाम LastName मा निर्भर हुन सक्छ? कुनै पनि होइन, किनभने यो सत्य हो: जो अन्तिम नाम हुन सक्छ, यसले FirstName को मानको रूपमा संकेत संकेत गर्न सकेन। यसैले, यो तालिका 3 एनएफ अनुपालन हो।

तर यो सवारी तालिकालाई विचार गर्नुहोस्:

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

यसलाई अनुपालन गर्नको लागि, हामी अर्को निर्भर स्तम्भ अर्को तालिकामा सार्न आवश्यक छ र यसलाई विदेशी कुञ्जी प्रयोग गरेर सन्दर्भ गर्न आवश्यक छ। यो परिणाम दुई तालिकामा हुनेछ:

वाहन तालिका

तल तालिकामा, ModelID मोडेल तालिकामा विदेशी कुञ्जी हो:

मोडेल तालिका

यो नयाँ तालिका निर्माताहरू मा नक्सा मोडेलहरू। यदि तपाईं मोडेलको लागि निर्दिष्ट कुनै पनि गाडी जानकारी अपडेट गर्न चाहानुहुन्छ, तपाईले तालिका तालिकामा बरु यो तालिकामा गर्नु पर्छ।

3 एनएफ मोडेलमा व्युत्पन्न फिल्डहरू

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

कुल ब्रेक 3 एनएफ अनुपालन हुन्छ किनभने यो मुख्य कुञ्जीमा पूर्णतया निर्भर हुनुको सट्टा मात्रामा एकाइ मूल्य गुणा गरेर व्युत्पन्न गर्न सकिन्छ। हामीले तेस्रो सामान्य रूपको पालन गर्न तालिकाबाट हटाउनुपर्दछ।

वास्तवमा, यो व्युत्पन्न भएकोले, यो सबै डेटाबेसमा भण्डारण गर्न राम्रो छ।

डाटाबेस प्रश्नहरू प्रदर्शन गर्दा हामी सजिलै "फ्लाईमा" कम्पोज गर्न सक्छौं। उदाहरणका लागि, हामीले पहिले नै यो क्वेरी प्रयोग गर्नका लागि अर्डर नम्बर र कुल प्राप्त गर्न:

चयन अर्डरम्बर, विजेट देखि कुल ओभरर्स

हामी निम्न प्रश्नहरू प्रयोग गर्न सक्छौं:

चुनेको क्रमम्बर, यूनिटमूल्य * मात्रा AS विजेटबाट कुल ओभरर्स

सामान्यीकरण नियमहरू उल्लङ्घन नगरे पनि परिणामहरू प्राप्त गर्न।