2011-08-25 5 views
5

मुझे अपने स्क्लाइट डेटाबेस के लिए प्राथमिक कुंजी के रूप में एक टेक्स्ट कॉलम का उपयोग करने की आवश्यकता है। मेरे पास मेरे टेक्स्ट मानों से 32 बिट/64 बिट int प्राप्त करने के लिए हैश फ़ंक्शन का उपयोग करने की संभावना है (मैं प्राथमिक कुंजी के रूप में उपयोग करना चाहता हूं)। इसलिए मैं इन int हैश मानों का उपयोग प्राथमिक टेक्स्ट के रूप में अपने टेक्स्ट मान के बजाय कर सकता था। लेकिन फिर मुझे तालिका में कच्चे पाठ मूल्य को अतिरिक्त रूप से स्टोर करने की आवश्यकता है।sqlite: क्या मुझे प्राथमिक कुंजी के रूप में टेक्स्ट कॉलम का उपयोग करना चाहिए, या इसे हैश फ़ंक्शन द्वारा कनवर्ट करना चाहिए?

लेकिन मैंने पढ़ा है कि एसक्लाइट आंतरिक रूप से एक पंक्ति का उपयोग कर रहा है, इसलिए मुझे नहीं पता कि हैश फ़ंक्शन का उपयोग करने से वैसे भी मदद मिलेगी।

क्या एसकलाइट अपने पृष्ठों में पंक्ति या टेक्स्ट मान (जब मैं हैश मान के बजाय इसका उपयोग करता हूं) स्टोर करता हूं? जब यह टेक्स्ट मान संग्रहीत करता है तो मुझे लगता है कि यह पृष्ठों को उड़ा सकता है और हैश मान का उपयोग करना बेहतर होगा।

लेकिन मुझे यहां ज्ञान की कमी है। मुझे आशा है कि आप मेरी मदद कर सकते हैं।

+0

* प्राथमिक * कुंजी के रूप में आपको टेक्स्ट कॉलम का उपयोग करने की आवश्यकता क्यों है? – Tim

+0

@ टिम, क्योंकि यह वह कुंजी है जिसे मैं डेटा लाता हूं। यह लगभग 30 वर्ण लंबी स्ट्रिंग है। – Chris

+0

यदि मैं उस तालिका को किसी अन्य या अन्य से संदर्भित करने जा रहा था, तो मैं पीके के रूप में एक ऑटोइनक्रिकमेंटिंग पूर्णांक और लांगटेक्स्टफील्ड पर एक इंडेक्स के साथ जाऊंगा: 'आईडी का चयन करें, जहां से longtextvalue =?'। – Tim

उत्तर

1

दुर्भाग्य से हाँ, तारों पर किसी भी इंडेक्स (प्राथमिक कुंजी के रूप में उपयोग सहित) डबल स्पेस लेते हैं। एक बार पंक्ति में मूल्य के लिए, सूचकांक में मूल्य के लिए दूसरी बार।

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

1

यदि टेक्स्ट कॉलम में मान अद्वितीय होना चाहिए, तो आपको वैसे भी उस कॉलम पर एक अद्वितीय अनुक्रमणिका डालना होगा।

असली प्रश्न प्राथमिक कुंजी के साथ नहीं करना है, इसे विदेशी कुंजी संदर्भों के साथ करना है। यदि किसी तालिका में अद्वितीय पूर्णांक का स्तंभ होता है और अद्वितीय पाठ का स्तंभ होता है, तो आप किसी एक को विदेशी कुंजी संदर्भ के लिए लक्ष्य के रूप में उपयोग कर सकते हैं। पूर्णांक के सभी विदेशी कुंजी संदर्भों में शामिल होने की आवश्यकता होगी; पाठ के कुछ विदेशी कुंजी संदर्भों में शामिल होने की आवश्यकता नहीं होगी। (क्योंकि महत्वपूर्ण जानकारी कुंजी में ही ली जाती है। केवल उन प्रश्नों को जिन्हें टेक्स्ट कुंजी के अलावा अधिक कॉलम की आवश्यकता होती है, उन्हें शामिल होने की आवश्यकता होगी।)

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

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