यह निश्चित रूप से एक अच्छा विचार है, क्योंकि आप डेटाबेस को सामान्य कर रहे हैं। मैंने एक ऐप में एक समान डिज़ाइन किया है जिसे मैं लिख रहा हूं, जहां मेरे पास कर्मचारी तालिका और उपयोगकर्ता तालिका है। उपयोगकर्ता बाहरी कंपनी या कर्मचारी से हो सकते हैं, इसलिए मेरे पास अलग-अलग टेबल हैं क्योंकि कर्मचारी हमेशा उपयोगकर्ता होता है, लेकिन उपयोगकर्ता कर्मचारी नहीं हो सकता है।
आपके द्वारा चलाए जाने वाले मुद्दों यह है कि जब भी आप उपयोगकर्ता तालिका का उपयोग करते हैं, तो आप लगभग हमेशा व्यक्ति को उस नाम या अन्य सामान्य विशेषताओं को प्राप्त करना चाहते हैं जिन्हें आप दिखाना चाहते हैं।
कोडिंग दृष्टिकोण से, यदि आप सीधे एसक्यूएल का उपयोग कर रहे हैं, तो यह चुनिंदा कथन का मानसिक रूप से विश्लेषण करने के लिए थोड़ा और प्रयास करेगा। यदि आप ओआरएम लाइब्रेरी का उपयोग कर रहे हैं तो यह थोड़ा और जटिल हो सकता है। मेरे पास उन लोगों के साथ पर्याप्त अनुभव नहीं है।
मेरे आवेदन में, मैं इसे रूबी पर रूबी में लिख रहा हूं, इसलिए मैं लगातार कर्मचारी.यूसर.नाम जैसी चीजें कर रहा हूं, जहां मैं उन्हें एक साथ रखता हूं, तो यह केवल कर्मचारी होगा। नाम या उपयोगकर्ता नाम ।
एक प्रदर्शन दृष्टिकोण से, आप एक के बजाय दो टेबल मार रहे हैं, लेकिन उचित इंडेक्स दिए गए हैं, यह नगण्य होना चाहिए। यदि आपके पास एक इंडेक्स था जिसमें प्राथमिक कुंजी और व्यक्ति का नाम था, उदाहरण के लिए, डेटाबेस उपयोगकर्ता तालिका को हिट करेगा, फिर व्यक्ति तालिका के लिए सूचकांक (लगभग प्रत्यक्ष हिट के साथ), तो प्रदर्शन लगभग समान होगा एक टेबल है
आप अतिरिक्त प्रदर्शन संवर्द्धन देने के लिए दोनों तालिकाओं को एक साथ रखने के लिए डेटाबेस में भी एक दृश्य बना सकते हैं। मैं ओरेकल के बाद के संस्करणों में जानता हूं कि प्रदर्शन बढ़ाने के लिए आवश्यक होने पर आप एक इंडेक्स को भी देख सकते हैं।
स्रोत
2008-09-18 14:29:00
ध्यान दें कि यूयूआईडीएस (एमएस भूमि में GUID) वास्तव में कई मामलों में खराब कुंजी बनाते हैं क्योंकि उनकी यादृच्छिकता और आकार इंडेक्सिंग तंत्र को हरा देता है। जब संभव हो तो एक सरल पूर्णांक का उपयोग करना बेहतर होता है। –