2012-10-01 14 views
14

क्या पोस्टग्रेज़ में किसी तालिका के लिए प्राथमिक कुंजी नहीं होने पर कोई कमी है? चूंकि सभी डेटा ढेर में अनियंत्रित रूप से संग्रहीत किया जाता है, वैसे भी प्राथमिक कुंजी एक अद्वितीय कुंजी और एक ही समय में एक इंडेक्स को लागू करने का एक तरीका है? या क्या कोई मौलिक विशेषता है कि एक प्राथमिक कुंजी तालिका में एक तालिका के विपरीत प्रदान करती है जिसमें प्राथमिक कुंजी नहीं है?पोस्टग्रेस कोई प्राथमिक कुंजी ड्रॉबैक

+1

प्राथमिक कुंजी के बिना किसी तालिका में रिकॉर्ड अपडेट करने में आप कैसे संभालेंगे? – Olaf

+0

एकल पंक्तियों को पुनर्प्राप्त करने की आवश्यकता नहीं है और पंक्तियां कभी अपडेट नहीं की जाती हैं, केवल डाली जाती हैं। हालांकि पंक्तियों में व्यक्तिगत पहचान (यूयूआईडी) होती है, फिर भी वे केवल श्रेणियों में ही पकड़ लेते हैं। मेरे पास श्रेणियों पर इंडेक्स हैं, लेकिन अनन्य कुंजी पर इंडेक्स रखने में कोई बात नहीं है अगर इसे टाला जा सके। – AlexGad

+1

मैं विशिष्ट प्रश्न पूछ रहा हूं, क्योंकि मैं एक SQL सर्वर पृष्ठभूमि से आया हूं और यह तय करता हूं कि किसी तालिका पर क्लस्टर्ड इंडेक्स होना है या केवल ढेर बनाने के लिए एक महत्वपूर्ण निर्णय है। पोस्टग्रेज़ के साथ, यह निर्णय व्यर्थ लगता है क्योंकि डेटा हमेशा तालिका में अनियंत्रित रूप से संग्रहीत होता है। हालांकि, मैं यह सुनिश्चित करना चाहता हूं कि मैं इस धारणा में सही हूं। पोस्टग्रेस बनाम में पीके का लाभ क्या है, एक अद्वितीय बाधा और एक अलग इंडेक्स कहें? क्या कोई भेद है या क्या यह उन सुविधाओं को प्रदान करने के लिए सिर्फ एक शॉर्टेंड तरीका है? – AlexGad

उत्तर

15

प्रति Postgres प्रलेखन (http://www.postgresql.org/docs/9.2/static/sql-createtable.html):

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

अनुभव से, मैंने उनके बिना बहुत सारी टेबल बनाई हैं। प्राथमिक कुंजी नहीं होने के लिए सबसे बड़ी कमी में से एक यह है कि आपके पास विदेशी कुंजी के माध्यम से कोई संदर्भित अखंडता जांच नहीं हो सकती है - क्योंकि उस संबंध के लिए एक की आवश्यकता होती है। मुझे लगता है कि कुछ प्रतिकृति समाधानों के लिए प्राथमिक कुंजी, या प्रति पंक्ति एकल स्तंभ पहचानकर्ता की आवश्यकता होती है।

+0

आह, प्रतिकृति मुद्दे के बारे में अच्छा बिंदु। वह पूरी तरह से मेरे दिमाग फिसल गया। हालांकि मेरे पास प्रत्येक पंक्ति में एक अद्वितीय यूयूआईडी है, मुझे यह सुनिश्चित करना चाहिए कि कोई पीके प्रतिकृति समस्या नहीं होगी (इसके लिए कोई विदेशी कुंजी नहीं है, इसलिए कोई समस्या नहीं है)। धन्यवाद। – AlexGad

+1

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

+8

एक विदेशी कुंजी बाधा लक्ष्य कॉलम पर 'अद्वितीय' सूचकांक की आवश्यकता होती है। प्राथमिक कुंजी नहीं है। –

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