2011-08-12 6 views
5

मैं एक MySQL डेटाबेस बनाने पर काम कर रहा हूं जिसमें कई संबंधित तालिकाओं होंगे। मुझे पता है कि मैं एक प्राथमिक कुंजी बना सकता हूं जो अद्वितीय और ऑटो वृद्धि है, फिर संबंधित तालिका में एक विदेशी कुंजी के रूप में प्राथमिक कुंजी का संदर्भ लें। मेरा सवाल यह है कि प्राथमिक/विदेशी कुंजी डेटा प्रकारों (int, varchar, आदि ..) के लिए सर्वोत्तम प्रथाएं क्या हैं। मैं यह सुनिश्चित करना चाहता हूं कि मुझे यह पहली बार सही लगे।MySQL रिलेशनल टेबल और प्राथमिक कुंजी डेटा प्रकार

आप

उत्तर

10

धन्यवाद MySQL में सबसे अधिक इस्तेमाल किया डेटाप्रकार INT अहस्ताक्षरित है। यह 4 बाइट लंबा है और 4 बिलियन तक की संख्या स्टोर कर सकता है जो अधिकांश अनुप्रयोगों के लिए पर्याप्त है। बिगिनट (8 बी - 1844674407370 9 551615 रेंज) का उपयोग आमतौर पर आपके आवेदन से शुरू होने पर एक ओवरकिल होता है। आईएनटी प्राथमिक कुंजी के लिए आपका डेटाबेस बहुत बड़ा हो जाने से पहले, आपको अन्य मुद्दों के साथ मदद करने के लिए किसी भी पेशेवर डीबीए को किराए पर लेना होगा।

चार्ज या बिनरी डेटाटाइप का उपयोग किया जा सकता है, जब GUID प्रकार प्राथमिक कुंजी का उपयोग किया जाता है - ऐसी कुंजी कई डेटाबेस उदाहरणों में डेटा को शेड करना आसान बनाती है, हालांकि MySQL के साथ एक बहु मास्टर प्रतिकृति अधिक बार देखी जाती है।

इनो डीबी टेबल का उपयोग करते समय यह याद रखना अच्छा होता है कि पीके निश्चित तालिका पर बनाए गए सभी अन्य इंडेक्स में अंतिम कॉलम होगा। इससे पीके के लिए उचित रूप से लघु डेटाटाइप का उपयोग करना महत्वपूर्ण हो जाता है (फिर से 4 बी आईएनटी आमतौर पर अपना काम अच्छी तरह से करता है)।

+1

पीके इनओडीबी में किसी भी माध्यमिक सूचकांक में ** अंतिम ** कॉलम है। –

+0

दरअसल, ऐसा लगता है कि आप इसके बारे में सही हैं: http://www.bigdbahead.com/?p=150 – Mchl

+0

इंट को 4 बाइट्स के ठीक काम करना चाहिए। क्षेत्र के लिए मुझे अधिकतम लंबाई क्या उपयोग करनी चाहिए? – drpcken