यदि किसी उपयोगकर्ता की कई भूमिकाएँ हो सकती हैं, तो संभवतः एक user_role
. होना बेहतर है तालिका जो इस जानकारी को संग्रहीत करती है। यह सामान्यीकृत है, और क्वेरी करना बहुत आसान होगा।
एक टेबल जैसे:
user_id | role
--------+-----------------
1 | Admin
2 | User
2 | Admin
3 | User
3 | Author
आपको किसी विशेष भूमिका वाले सभी उपयोगकर्ताओं के लिए क्वेरी करने की अनुमति देगा, जैसे SELECT user_id, user.name FROM user_role JOIN user WHERE role='Admin'
कॉलम से विवरण प्राप्त करने के लिए स्ट्रिंग पार्सिंग का उपयोग करने के बजाय।
अन्य बातों के अलावा, यह तेज़ होगा, क्योंकि आप कॉलम को ठीक से अनुक्रमित कर सकते हैं और किसी भी समाधान की तुलना में मामूली अधिक स्थान लेंगे जो एक ही कॉलम में एकाधिक मान रखता है - जो कि रिलेशनल डेटाबेस के लिए डिज़ाइन किए गए हैं, इसके विपरीत है।
इसे संग्रहीत नहीं करने का कारण यह है कि यह अक्षम है, क्योंकि DCoder पर टिप्पणी करता है यह उत्तर . यह जांचने के लिए कि क्या उपयोगकर्ता की कोई भूमिका है, उपयोगकर्ता तालिका की प्रत्येक पंक्ति को स्कैन करने की आवश्यकता होगी, और फिर स्ट्रिंग मिलान का उपयोग करके "भूमिकाएं" कॉलम को स्कैन करना होगा - चाहे यह क्रिया कैसे भी उजागर हो, RMDBS की आवश्यकता होगी सामग्री को पार्स करने के लिए स्ट्रिंग ऑपरेशन करें। ये बहुत महंगे ऑपरेशन हैं, और बिल्कुल भी अच्छे डेटाबेस डिज़ाइन नहीं हैं।
अगर आपको जरूरत एक कॉलम रखने के लिए, मैं दृढ़ता से सुझाव दूंगा कि अब आपके पास कोई तकनीकी समस्या नहीं है, बल्कि एक लोग प्रबंधन है . मौजूदा डेटाबेस में अतिरिक्त टेबल जोड़ना जो विकास के अधीन है, मुश्किल नहीं होना चाहिए। अगर यह ऐसा कुछ नहीं है जिसके लिए आप अधिकृत हैं, तो समझाएं कि सही व्यक्ति के लिए अतिरिक्त तालिका की आवश्यकता क्यों है - क्योंकि मुंगिंग एक कॉलम में कई मान खराब हैं, खराब विचार ।