2010-06-28 9 views
9

मैंने हस्ताक्षर किए गए बनाम हस्ताक्षरित कुंजी मानों के संबंध में आजकल क्या कर रहा था, इसके बारे में कुछ धागे देखे हैं। ऐसा प्रतीत होता है कि हस्ताक्षरित इष्टतम है क्योंकि यह एक ही कीमत के लिए पंक्तियों की संख्या से दोगुना है। क्या हस्ताक्षरित कुंजी के साथ कोई लाभ है?आम सहमति? MySQL, हस्ताक्षरित वीएस बिना हस्ताक्षर किए गए प्राथमिक/विदेशी कुंजी

क्या कोई मानक आम सहमति है? ऐसा लगता है कि हस्ताक्षर की तरह यह जवाब है "यह हमेशा ऐसा ही रहा है"

उत्तर

8

यदि मैं नकारात्मक नहीं हो सकता तो मैं अपने कॉलम को unsigned के रूप में सेट करना पसंद करता हूं। आपके द्वारा वर्णित श्रेणी कारक के अलावा, यह तालिका परिभाषा को पढ़ते समय इसे स्पष्ट बनाता है।

-2

एक हस्ताक्षरित 32-बिट int 2 अरब से अधिक संख्याओं का प्रतिनिधित्व कर सकता है, इसलिए मुझे संदेह है कि अधिकांश लोगों के लिए यह मुद्दा मज़बूत है। उस ने कहा, मैं अक्सर नकारात्मक संख्याओं का उपयोग करता हूं जब मैं यह इंगित करना चाहता हूं कि एक रिकॉर्ड उद्देश्यपूर्ण रूप से अनाथ है।

+2

GAHH! क्षमा करें, मैं एक ऐसे एप्लिकेशन के साथ काम करता हूं जहां कोई (कंपनी के साथ नहीं) सोचा था कि यह एक अच्छा विचार होगा। सचमुच, सप्ताह में कम से कम एक बार, हमें इस पागल डिजाइन निर्णय के कारण किसी प्रकार का मुद्दा (या तो नए कोड के साथ चुनौती, या मौजूदा कोड में बग) मिलती है। ** आपको मुख्य कुंजी से परे प्राथमिक कुंजी नहीं देना चाहिए, और आपको प्राथमिक कुंजी मानों को कभी नहीं बदलना चाहिए **। यदि आप सॉफ्ट-डिलीट को इंगित करना चाहते हैं, तो स्थिति कॉलम या सॉफ्टडिलेटेड कॉलम रखें। चूंकि यह सॉफ़्टवेयर के मौलिक टुकड़े में था, इसलिए हम केवल एक प्रमुख पुनर्लेखन के हिस्से के रूप में इसे ठीक कर रहे हैं। – gregmac

+0

@gregmac s'ok, मुझे पता था कि यह विवादास्पद होगा। काफी विडंबना यह है कि 'अनाथ' एक बेहतर शब्द 'अस्तित्व' होगा। यह शर्तों का एक विडंबनापूर्ण विकल्प था क्योंकि मैं इस योजना के साथ लोगों का प्रतिनिधित्व करने के लिए आया था कि मुझे केवल इतना पता होना चाहिए कि अस्तित्व में होना चाहिए। मेरा आवेदन उपयोगकर्ता को यह कहने की इजाजत देता है कि बॉब और चार्ली भाई हैं लेकिन आंतरिक रूप से उन्हें संग्रहीत किया गया है जिनके माता-पिता के कॉलम दोनों नकारात्मक कुंजी के साथ संदर्भित रिकॉर्ड हैं। अगर किसी ने जेन को बॉब की माँ के रूप में जोड़ा तो मैं चार्ली को भी अपडेट कर सकता था। आम तौर पर मैं पैटर्न का उपयोग करता हूं जब मैं कहना चाहता हूं कि कुछ चीज मौजूद है कि अन्य चीजें निकट होनी चाहिए। –

+2

इसके अलावा, मैं इस सिद्धांत से बहुत परिचित हूं कि प्राथमिक कुंजी का अर्थ नहीं होना चाहिए। एक बेहतर अधिकतम यह है कि अर्थ encapsulated किया जाना चाहिए। पीके के आवेदन परत के लिए कुछ भी मतलब नहीं होना चाहिए, लेकिन वे डेटाबेस (प्रबंधन प्रणाली) के लिए चीजों का मतलब है। जिस योजना में मैंने ऊपर वर्णित किया है, मैं बस पीके को मेटाडेटा के रूप में उपयोग कर रहा हूं। संयोग से, मैंने पहले यहां इस पर चर्चा की: http://stackoverflow.com/questions/2023988/modeling-existential-facts-in-a-relational- डाटाबेस –

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