2012-01-06 14 views
6

मैं हर संबंधित टेबल विदेशी कुंजी का उपयोग या मैं नहीं करना चाहिए करना चाहिए? अगर मुझे उपयोग करना चाहिए, तो क्यों?क्या मुझे वास्तव में विदेशी कुंजी का उपयोग करना चाहिए?

+0

संभव डुप्लिकेट [वास्तव में जरूरी विदेशी कुंजी एक डेटाबेस डिजाइन में हैं?] (Http://stackoverflow.com/प्रश्न/18,717/हैं-विदेशी कुंजी-सच-आवश्यक में एक-डेटाबेस डिजाइन) – cHao

उत्तर

6

"सभी संबंधित टेबल" हमेशा स्पष्ट नहीं है, तो यह एक स्पष्ट स्थिति नहीं है। ऐसी सारणी हो सकती है जिनमें एक आम कॉलम हो लेकिन वे एक-दूसरे को कभी न देख सकें।

यह काम है, तथापि, त्रुटियों कि पिछले अपनी प्राथमिक गढ़ पर्ची को रोकने और डेटा है कि आसानी से मिल नहीं है दर्ज किए जाने की अनुमति देने के लिए है।

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

यदि आप डिज़ाइनिंग डेटाबेस के साथ सहज महसूस कर रहे हैं, तो आपके पास बुनियादी माता-पिता/बाल संबंध होने के बाद, बहुत अधिक समय में चिंता करने और परिष्कृत करने में कुछ समय नहीं है।

यहाँ कुछ background--

What's wrong with foreign keys?

4

हाँ, आप should.Foreign कुंजी सिर्फ रोकें जो तुम में मदद करता है रिश्तों बनाने के लिए और सुनिश्चित करें कि आप अपने database.You में सही जानकारी किसी से गलत डेटा प्रवेश को रोकने के लिए उन्हें का उपयोग करना चाहिए है कि होने के लिए कर रहे हैं।

6

आप ऐसा करना चाहिए। वहाँ तीन मुख्य बिंदु निम्न हैं:

  • अपने डीबी प्रणाली के आधार पर, आप बेहतर प्रदर्शन मिल सकता है
  • विदेशी कुंजी सुनिश्चित डेटा अखंडता, उदा अनाथ रिकॉर्ड आदि
  • वे एक स्पष्ट तरीका है अपने DB संरचना है, जो दृश्य के लिए उपकरण के द्वारा प्रयोग किया जा सकता है, कोड पीढ़ी आदि
6

हाँ दस्तावेज़ के लिए से बचने के लिए कर सकते हैं। लेकिन मध्यम स्तर पर। जब आप डेटा पूछताछ करते हैं तो इससे मदद मिलती है। यह आपके डेटा को अनुक्रमणित करने में मदद करता है, इतनी तेज क्वेरी। इसके अलावा यह संस्थाओं के बीच संबंधों को बनाए रखने में मदद करता है।

5

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

  1. डेटा सत्यापन और अखंडता के सुनिश्चित करें

पहले एक एक क्षेत्र है कि जा रहा है करने के लिए मैन्युअल बजाय एक मूल्य जोड़ने के का मतलब है अतिरिक्त जगह की

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

    दूसरा मतलब है कि आपको हर बार "संयुक्त राज्य अमेरिका" लिखना नहीं है, जो "संयुक्त राज्य अमेरिका" की आईडी लिखने से कहीं अधिक जगह लेगा।

  • 1

    वास्तव में इस समय विदेशी कुंजी आधारित संबंधपरक डेटाबेस से बढ़ती हुई चाल है। दस्तावेज़ डेटाबेस सिस्टम जैसे मोंगोडीबी अधिक लोकप्रिय हो रहे हैं।यह काफी हद तक है क्योंकि दुनिया बादल के साथ ज्यादा वितरित हो रही है।

    इसका मतलब है कि तत्काल डेटा स्थिरता मानने के लिए कभी-कभी उचित या निष्पादक नहीं होता है।

    यदि आप रुचि रखते हैं तो नोएसक्यूएल आधारित डेटाबेस, मोंगोडीबी कॉच डीबी और घटनात्मक consistancy पर पढ़ा है।

    इसके थोड़े हमारे रिलेशनल प्रशिक्षित मन को समझने के लिए एक अजीब बात है, लेकिन बड़े पैमाने पर वेब समाधान का एक बहुत

    की
    संबंधित मुद्दे