2009-12-03 4 views
5

मेरे पास दो टेबल हैं, products और categories जिनमें कई रिश्ते हैं, इसलिए मैं products_categories तालिका जोड़ रहा हूं जिसमें category_id और product_id होगा।क्या मुझे कई "लिंक" तालिका में इंडेक्स कॉलम का उपयोग करना चाहिए?

क्या मुझे एक और (ऑटो-वृद्धिशील) इंडेक्स कॉलम जोड़ना चाहिए या दो मौजूदा लोगों को प्राथमिक कुंजी के रूप में उपयोग करना चाहिए?

उत्तर

9

यह निर्भर करता है।

  • आप अधिक वस्तुओं के सेट के रूप में अपने डेटा को दिखाई दे रहा है या तथ्यों के सेट के रूप में प्रतिनिधित्व और संबंधपरक बीजगणित द्वारा मूल रूप का विश्लेषण किया है (और रिलेशनल डाटाबेस सिर्फ एक भंडारण माध्यम है)।

  • कुछ ओआरएम/फ्रेमवर्क/उपकरण बहुआयामी प्राथमिक कुंजी के लिए अच्छा समर्थन नहीं है। यदि आप उनमें से किसी एक का उपयोग करते हैं, तो आपको अतिरिक्त आईडी कॉलम की आवश्यकता होगी।

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

  • यदि आप इस संगठन में कुछ अतिरिक्त जानकारी जोड़ना चाहते हैं, तो यह बन जाएगा और फिर दो इकाइयों के कई से अधिक रिश्ते बन जाएंगे। तो यह अपने आप में इकाई बन जाता है और यह अधिक सुविधाजनक होगा अगर इसकी अपनी आईडी इकाइयों से स्वतंत्र हो।

+0

+1 सभी अड्डों को कवर करता है। – APC

1

मैं प्राथमिक कुंजी category_id और product_id बनाउंगा। एक ऑटो वृद्धि केवल तभी जोड़ें जब आदेश बाद में उपयोगों में जारी किया जाएगा।

2

नहीं, यह बिल्कुल जरूरी नहीं है, बशर्ते कि ये दो कॉलम पहले से ही प्राथमिक कुंजी के कार्य को निष्पादित कर रहे हैं।

यह तीसरा कॉलम सिर्फ आपकी तालिका में और स्थान जोड़ सकता है।

लेकिन ... आप शायद उस ऑर्डर को देखने के लिए इसका उपयोग कर सकते हैं जिसमें आपके रिकॉर्ड को आपके टेबल में जोड़ा गया था। यह एकमात्र ऐसा कार्य है जिसे मैं इस कॉलम में देख सकता हूं।

2

आपको ऑटो-इंक्रिमेंटिंग इंडेक्स कॉलम जोड़ने की आवश्यकता नहीं है। मानक अभ्यास एम: एम एसोसिएशन टेबल के लिए आपकी प्राथमिक कुंजी के रूप में केवल दो मौजूदा कॉलम का उपयोग करना है जैसा कि आप वर्णन करते हैं।

5

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

+0

पंक्तियों पर प्राकृतिक कालक्रम क्रम लगाने के लिए ऑटोनंबर सुविधा का उपयोग न करें।ऑटोनंबर के कार्यान्वयनकर्ता इस एल्गोरिदम को लागू करने के लिए स्वतंत्र हैं जो इस सहसंबंध को तोड़ देता है। –

0

एक वैचारिक प्रश्न है - क्या उत्पादों की श्रेणियां एक इकाई है या केवल एक सारणी है जो दो इकाइयों के बीच संबंध का प्रतिनिधित्व करती है? यदि यह एक इकाई है, तो यहां तक ​​कि यदि कोई अतिरिक्त विशेषता नहीं है, तो भी मैं इकाई के लिए एक अलग आईडी कॉलम के लिए वकालत करता हूं। यदि यह एक रिश्ते है, यदि अतिरिक्त विशेषताएं हैं (कहें, start_date, end_date या ऐसा कुछ), तो मैं एक बहु-स्तंभ प्राथमिक कुंजी रखने का समर्थन करता हूं।

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

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