मैं वर्तमान में एक संगीत स्ट्रीमिंग एप्लिकेशन विकसित करने की योजना बना रहा हूं। और मैं सोच रहा हूं कि सर्वर पर मेरी टेबल में प्राथमिक कुंजी के रूप में बेहतर क्या होगा। एक आईडी int या एक अद्वितीय स्ट्रिंग।डेटाबेस डिज़ाइन प्राइमे कुंजी, आईडी बनाम स्ट्रिंग
तरीके 1:
गीत तालिका: SongID (पूर्णांक), शीर्षक (स्ट्रिंग), * कलाकार ** (स्ट्रिंग), लम्बाई (पूर्णांक), * एल्बम ** (स्ट्रिंग)
शैली टेबल शैली (स्ट्रिंग), नाम (स्ट्रिंग)
SongGenre: *** SongID **** (पूर्णांक), *** जीई एनआरई **** (स्ट्रिंग)
विधि 2
गीत तालिका: SongID (पूर्णांक), शीर्षक (स्ट्रिंग), * ArtistID ** (पूर्णांक), लम्बाई (पूर्णांक) , * ALBUMID ** (int)
शैली टेबल GenreID (पूर्णांक), नाम (स्ट्रिंग)
SongGenre: *** SongID **** (पूर्णांक), *** GenreID **** (int)
कुंजी: बोल्ड = प्राथमिक कुंजी, * फील्ड ** = विदेशी कुंजी
मैं वर्तमान में विधि 2 का उपयोग कर रहा हूँ डिजाइनिंग के रूप में मैं इस पर विश्वास लुकअप प्रदर्शन को तेज करेगा और कम जगह का उपयोग करेगा क्योंकि एक int स्ट्रिंग के बाद बहुत कम जगह लेता है।
क्या कोई कारण नहीं है कि यह एक अच्छा विचार नहीं है? क्या मुझे कुछ पता होना चाहिए?
+1 बिल्कुल के उपयोग को सक्षम करने। एक आईडी (लगभग हमेशा) एक आईएनटी होना चाहिए - और कुछ भी बहुत समझ में नहीं आता है (कुछ चुनिंदा मामलों को छोड़कर) –
मैं जोड़ूंगा कि आपको शैली के नाम पर एक अद्वितीय इंडेक्स भी रखना चाहिए 'ब्लूज़' नामक तीन शैलियों। यदि कोई मौजूद है तो हमेशा प्राकृतिक कुंजी पर एक अद्वितीय अनुक्रमणिका डालें। – HLGEM
-1: ये डिजाइन निर्णय लेने के गलत कारण हैं। डिज़ाइन निर्णय लें कि यह सही _design_ है या नहीं। फिर, यदि प्रदर्शन समस्याएं हैं, तो आवश्यकतानुसार ट्यून करें और फिर से डिज़ाइन करें। –