5

मैं MySQL में निम्नलिखित 2 टेबल: ग्राहक (क्रमांक, प्रथम नाम, अंतिम नाम ...) बोनस (आईडी, ग्राहक आईडी, मूल्य, ...)एक से एक रिश्ते में मुझे तालिका के आईडी कॉलम में से एक को छोड़ना चाहिए?

संबंध एक-से-एक है, हर ग्राहक केवल एक बोनस है (ग्राहक आईडी बोनस तालिका में अद्वितीय है)

प्रश्न:। मैं बोनस तालिका के आईडी कॉलम ड्रॉप करना चाहिए? (मुझे पता होना चाहिए क्यों या क्यों नहीं)

उत्तर

4

मैं Bonus.Id coulmn को दूर होता है और बोनस बनाओ। ग्राहक पीके। ऐसा करने से बोनस पर कस्टम बाधा की आवश्यकता को हटा दिया जाएगा। ग्राहक आईडी कॉलम, क्योंकि अब यह एक पीके होगा। तालिका में देखे जाने वाले किसी भी व्यक्ति को बोनस के बिना एक से अधिक स्पष्ट रूप से दिखाई देगा। आईडी कॉल्मन। आपको बोनस पर एक इंडेक्स की आवश्यकता नहीं होगी। ग्राहक आईडी, पीके इंडेक्स की आपको आवश्यकता होगी, इसलिए कम डिस्क स्पेस और मेमोरी कैश बर्बाद हो जाएगा। इसके अलावा, अगर आप कभी भी बोनस तालिका में एक FK जरूरत है, तो आप आप ग्राहक आईडी मूल्य (नया पी) है, जो ग्राहक या बोनस टेबल, न सिर्फ बोनस को वापस पाने के लिए इस्तेमाल किया जा सकता का प्रयोग करेंगे।

+0

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

0

यदि यह एक-दूसरे के लिए है, तो कोई अतिरिक्त तालिका क्यों है? आप इसके बजाय अपनी ग्राहक तालिका में "बोनसवैल्यू" डाल सकते हैं।

(बाकी: हाँ, आप बोनस-तालिका के आईडी ड्रॉप कर सकते हैं, ग्राहक आईडी प्राथमिक कुंजी और "आईडी" है पूरी तरह से बेमानी है)

+0

एक एक-से-एक रिश्ता अच्छा है। उदाहरण के लिए, यदि आप एक मुख्य "व्यक्ति" तालिका और फिर एक एक-से-एक मेज "DoctorInfo" और एक और एक-से-एक "StudentInfo", आदि है .. आप सभी DoctorInfo या StudentInfo स्तंभों में शामिल नहीं करना चाहते स्वयं"? मैं नहीं, मैं उन्हें एक-से-एक टेबल में विभाजित कर दूंगा। –

+0

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

+0

यह अनावश्यक है, लेकिन मैं सब कुछ एक टेबल में डालने, पते के बारे में क्या करने के लिए सहमत नहीं हूं, भले ही यह एक से एक हो। मैं अपनी टेबल बनाना पसंद करता हूं जैसे कि मैं अपनी वस्तुएं करता हूं, केवल इसकी आवश्यकता होती है। मुझे जितनी जरूरत है उतनी कक्षाएं/टेबल। – Vlad

1

मुझे लगता है कि यह वास्तव में एक सत्य नहीं है क्योंकि संभवत: बिना बोनस पंक्ति के ग्राहक हो सकता है। एसक्यूएल-शैली विदेशी कुंजी बाधाएं किसी भी रिश्ते के संदर्भ पक्ष पर हमेशा वैकल्पिक होती हैं।

मैं Bonus.Id स्तंभ पूरी तरह से बेमानी हो गया लगता है सहमत हैं। जब मुख्य तालिका के सबसे पंक्तियों दूसरी तालिका में सब पर एक पंक्ति की जरूरत नहीं है

+0

आप सही हैं, सभी ग्राहकों के पास बोनस नहीं है। – Vlad

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