यह एक पुरानी पोस्ट है, लेकिन मैंने सोचा कि मैं एक वैचारिक, प्रक्रियात्मक और प्रदर्शन दृष्टिकोण से वजन करूंगा।
पहला सवाल मैं पूछता हूं कि व्यक्ति, विशेषज्ञ और उपयोगकर्ता के बीच संबंध है, और चाहे किसी के लिए दोनों एक विशेषज्ञ और उपयोगकर्ता एक साथ हो। या, 4 संभावित संयोजनों में से कोई भी (कक्षा ए + बी, कक्षा बी + सी, कक्षा ए + सी, या एक + बी + सी)। यदि यह वर्ग type
फ़ील्ड में मान के रूप में संग्रहीत है और इसलिए इन संयोजनों को ध्वस्त कर देगा, और वह पतन अस्वीकार्य है, तो मुझे लगता है कि एक से अधिक रिश्ते के लिए एक द्वितीयक तालिका की आवश्यकता होगी। मैंने सीखा है कि जब तक आप उपयोग का मूल्यांकन नहीं करते हैं और अपनी संयोजन जानकारी खोने की लागत का मूल्यांकन नहीं करते हैं।
अन्य कारक जो मुझे एक टेबल की तरफ झुकता है, वह परिदृश्य का आपका विवरण है। User
उपयोगकर्ता नाम के साथ एकमात्र इकाई है (वर्कर (30) कहें) और पासवर्ड (वर्कर (32) कहें)। यदि सामान्य फ़ील्ड की संभावित लंबाई 20 फ़ील्ड प्रति औसत 20 वर्ण है, तो आपके कॉलम आकार में वृद्धि 62 से अधिक 62 है, या लगभग 15% - 10 साल पहले यह आधुनिक आरडीबीएमएस सिस्टम के साथ अधिक महंगी होती, खासकर एक क्षेत्र प्रकार जैसे वर्चर (उदाहरण के लिए MySQL) उपलब्ध है।
और, यदि सुरक्षा आपके लिए चिंता का विषय है, तो credentials (user_id, username, password)
नामक माध्यमिक एक-से-एक तालिका होना फायदेमंद हो सकता है। इस तालिका को लॉगिन के समय पर प्रासंगिक रूप से जॉइन में शामिल किया जाएगा, लेकिन मुख्य तालिका में केवल "किसी भी" से संरचनात्मक रूप से अलग होगा। और, LEFT JOIN
उन प्रश्नों के लिए उपलब्ध है जो "पंजीकृत उपयोगकर्ता" पर विचार करना चाहेंगे।
वर्षों के लिए मेरा मुख्य विचार अभी भी डीबी के बाहर और वास्तविक दुनिया में वस्तु के महत्व (और इसलिए संभव विकास) पर विचार करना है। इस मामले में, सभी प्रकार के व्यक्तियों को दिल (मुझे उम्मीद है) मार रहा है, और एक दूसरे के लिए पदानुक्रमिक संबंध भी हो सकते हैं; इसलिए, मेरे दिमाग के पीछे, भले ही अब नहीं, हमें किसी अन्य तरीके से ऐसे रिश्तों को स्टोर करने की आवश्यकता हो सकती है।यह स्पष्ट रूप से यहां आपके प्रश्न से संबंधित नहीं है, लेकिन यह किसी ऑब्जेक्ट के रिश्ते की अभिव्यक्ति का एक और उदाहरण है। और अब तक (7 साल बाद) आपको अच्छी तरह से अंतर्दृष्टि होनी चाहिए कि आपका निर्णय कैसे काम करता है :)
स्रोत
2015-02-28 11:14:56
जब आप कहते हैं कि यह तेज़ है लेकिन spaces_ को बर्बाद कर देता है, तो क्या आपका मतलब तेजी से विकसित करना या प्रदर्शन-वार तेज़ होना है? – user3748908
दोनों, सभी डेटा एक तालिका में हैं (विकल्प 3 के विपरीत) इसलिए कोई भी शामिल होने की आवश्यकता नहीं है ताकि पढ़ने और लिखने के लिए उचित रूप से तेज़ हो, और यह विकसित करना आसान हो। अधिकांश या मैपर इस तरह की योजनाओं का समर्थन करते हैं। – Mendelt
तालिका-प्रति-प्रकार (जॉइन की वजह से) की तुलना में तेज़, लेकिन तालिका-प्रति-कंक्रीट की तुलना में धीमी है, क्योंकि तालिका-प्रति-कंक्रीट की तालिकाएं छोटी हैं और आप शायद ही कभी एक-दूसरे के साथ जुड़ने जा रहे हैं, सही ? – user3748908