2009-09-01 6 views
10

क्या एक प्राथमिक कुंजी को संदर्भित करने वाली एक विदेशी कुंजी को PostgreSQL डेटाबेस में पूर्ण बाधा की आवश्यकता नहीं है?
डेटाबेस अत्यधिक सामान्यीकृत है और बहुत बड़ा होगा। मैं अतिरिक्त बाधाओं को जोड़ना नहीं चाहता हूं जो पूछे जाने वाले प्रश्न अनियंत्रित हैं, तो प्रश्नों को और भी धीमा कर देंगे।क्या पीके के संदर्भ में एक विदेशी कुंजी की आवश्यकता नहीं है?

+1

आपकी आवेदन गति में सहीता से वास्तव में अधिक महत्वपूर्ण है? आपको नॉन-चेक चेक के लिए लागत का एहसास नहीं होगा। आपके प्रश्न का उत्तर नहीं है, लेकिन मैं पकड़ने के लिए जाने वाली किसी भी बाधा को निर्दिष्ट करता हूं। –

उत्तर

11

यदि आप उस तालिका के एफके कॉलम में अज्ञात प्रतिनिधित्व करने में सक्षम होना चाहते हैं, तो इसे शून्य बना दें, अगर उसके पास कोई मूल्य हो, तो इसे शून्य न बनाएं।

आपके पास संदर्भित तालिका में नल FK मानों के साथ जितने रिकॉर्ड हो उतने रिकॉर्ड हो सकते हैं। रेफरेंसिंग टेबल (जहां एफके है) में पंक्तियों पर संदर्भित तालिका (जहां पीके है) में पंक्तियों पर अद्वितीय बाधा है।

+1

पर "शून्य नहीं" बाधा के बारे में पूछ रहा था यह सही है। इसे एक और तरीके से रखने के लिए, यह इस बात पर निर्भर करता है कि आप 1: एन रिलेशनशिप या 0..1: एन रिलेशनशिप मॉडलिंग कर रहे हैं या नहीं। यानी रिश्ते वैकल्पिक है? –

+0

1: 1 रिश्ते। जिस टेबल पर मैं काम कर रहा हूं वह एक पुल तालिका है। – WolfmanDragon

+1

यदि यह 1 है: एन तो एफके कॉलम पर उस पर नल की बाधा नहीं होनी चाहिए। –

-1

एक प्राथमिक कुंजी अद्वितीय होना चाहिए, और आदर्श रूप से इसे समेकन के साथ समस्याओं को सीमित करने के लिए डेटाबेस द्वारा चुना जाना चाहिए, इसलिए, यह अद्वितीय हो सकता है, 1 रिकॉर्ड के लिए, हर दूसरे रिकॉर्ड में एक मूल्य होना चाहिए।

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

तो, जैसा कि शहर में उल्लेख किया गया है, एनयूएलएल वैध होना चाहिए, लेकिन एक रिकॉर्ड के लिए, विशिष्टता बड़ी समस्या होगी।

संपादित करें: ओह, प्रश्न को गलत समझा।

मैंने पहले विदेशी कुंजी पर शून्य डाली है, लेकिन यदि आपके पास कैस्केड उदाहरण के लिए हटा दिया गया है तो शून्य काम नहीं करेगा, जब तक आपके पास प्राथमिक तालिका में शून्य मूल्य के साथ कुंजी न हो।

+2

ओपी _FOREIGN_ कुंजी – ChssPly76

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