2011-01-05 12 views
21

मुझे आरडीबीएमएस में "विदेशी कुंजी बाधा लागू करने" का उद्देश्य पता है। लेकिन क्या कोई फायदा है जब यह "नहीं" पर सेट है?एसक्यूएल सर्वर: "नहीं" पर सेट होने पर "विदेशी कुंजी बाधा लागू करें" का उपयोग करने का क्या फायदा है?

+0

जब आपके पास दो तालिकाओं में दो समान प्राथमिक कुंजी होती है और आपको एक विदेशी कुंजी संबंध बनाना होता है, तो आपको "विदेशी कुंजी बाधा लागू करें" को "नहीं" पर सेट करना होगा। यह बहुत भ्रमित है, इसलिए मैं नीचे यूट्यूब यूआरएल दे रहा हूं, आप इस वीडियो के अंत के बाद स्पष्ट हो जाएंगे। https://www.youtube.com/watch?v=H7uGGg1BQ2Y –

उत्तर

21

सामान्य उत्पादन में, यह सेटिंग कभीNO पर सेट की जानी चाहिए।

लेकिन जब आप किसी डेटाबेस को विकसित या पुनर्गठन कर रहे हैं, या जब आप उदा। डेटा का एक बड़ा थोक भार जिसे आपको "sanitize" (साफ अप) करने की आवश्यकता होगी, फिर यह तालिका में "गैर-मान्य" डेटा लोड होने की अनुमति देने के लिए विदेशी कुंजी बाधाओं को बंद करने के लिए समझ में आता है। बेशक, जैसा कि मैंने कहा - आपको उस सेटिंग को लंबे समय तक बंद नहीं रखना चाहिए - फिर आपको डेटा को साफ करने के लिए आगे बढ़ना चाहिए, या तो उन पंक्तियों को हटाएं जो एफके बाधा के उल्लंघन में हैं, या उनके मूल्यों को अपडेट करें इसलिए वे एक मूल पंक्ति से मेल खाते हैं।

तो फिर से: "सामान्य" उत्पादन मोड में, यह सेटिंग कभी भी NO नहीं होनी चाहिए - लेकिन विशिष्ट कार्यों के लिए, यह नौकरी अधिक आसानी से करने में मदद कर सकती है। सावधानी के साथ इसका प्रयोग करें, और जितनी जल्दी हो सके एफके बाधाओं को हमेशा चालू करें!

+0

आपके नोट के लिए धन्यवाद, लेकिन ऐसी परिस्थितियां हैं जिन्हें हम कॉलम में डेटा इनपुट करते हैं ताकि उदाहरण के लिए सभी पूर्वनिर्धारित डेटा। मेरा मतलब है कि यदि मान्य डेटा 1,2 और 3 है तो उन सभी को कहने के लिए हम कॉलम में -1 डालते हैं। इस परिस्थितियों में हमें आरेख में "विदेशी कुंजी बाधा लागू करना" सेट करना चाहिए। सही? तो क्या रिश्ता बनाना वास्तव में जरूरी है? – odiseh

+1

@odiseh: नहीं। आपके मामले में विदेशी कुंजी को पूरी तरह से हटा देना बेहतर होगा क्योंकि यह कोई उपयोगी उद्देश्य नहीं दे रहा है। इसके बजाय आप डेटा मानों को सत्यापित करने के लिए एक जांच बाधा बना सकते हैं। – sqlvogel

+3

+1 इसे कहने के लिए +1 है। मुझे लगता है कि इस सेटिंग ने उन कंपनियों में हर समय दुर्व्यवहार किया है जिनके लिए मैं अनुबंध करता हूं। यह लगातार समस्याओं का कारण बनता है। मैं जोड़ूंगा कि मैं कभी-कभी इसे मध्यवर्ती चरण के रूप में उपयोग करता हूं जब एक विदेशी कुंजी जो मौजूद होनी चाहिए और मैं इसे जोड़ना नहीं चाहता हूं। कभी-कभी मुझे विश्वास नहीं है कि सभी संदर्भ आवेदन सही क्रम में अपने परिचालन कर रहे हैं, और इससे मुझे तुरंत संबंध परिभाषित करने, प्रश्नों के अनुप्रयोगों का परीक्षण करने (या उनके कोड को खोजने) की सुविधा मिलती है, और फिर प्रवर्तन चालू हो जाता है। –

3

रोज़ाना उपयोग में नहीं, जहां तक ​​मुझे पता है। कुछ समय के लिए मैंने विदेशी कुंजी को लागू नहीं किया है, जब डेटा में समस्याएं होती हैं और उन्हें ठीक करने के संबंध में संबंधों की जांच होती है।

थोक संचालन बाधाओं के दौरान प्रदर्शन को बढ़ाने के लिए अस्थायी रूप से अनदेखा किया जाता है।