बढ़िया सवाल!
सबसे पहले, आइए "बेहतर" के बारे में कुछ धारणाएँ बनाते हैं।
मुझे लगता है कि आप डिस्क स्थान के बारे में ज्यादा परवाह नहीं करते हैं - एक बिटमास्क अंतरिक्ष के दृष्टिकोण से कुशल है, लेकिन मुझे यकीन नहीं है कि यदि आप SQL सर्वर का उपयोग कर रहे हैं तो यह बहुत मायने रखता है।
मुझे लगता है कि आप गति की परवाह करते हैं। गणनाओं का उपयोग करते समय बिटमास्क बहुत तेज़ हो सकता है - लेकिन बिटमास्क को क्वेरी करते समय आप किसी अनुक्रमणिका का उपयोग करने में सक्षम नहीं होंगे। यह सब इतना महत्वपूर्ण नहीं होना चाहिए, लेकिन अगर आप जानना चाहते हैं कि किन उपयोगकर्ताओं ने एक्सेस बनाया है, तो आपकी क्वेरी कुछ इस तरह होगी
select * from user where permsission & CREATE = TRUE
(सड़क पर आज SQL सर्वर तक पहुंच नहीं है)। गणितीय प्रक्रिया के कारण वह क्वेरी किसी अनुक्रमणिका का उपयोग करने में सक्षम नहीं होगी - इसलिए यदि आपके पास उपयोगकर्ताओं की एक बड़ी संख्या है, तो यह काफी दर्दनाक होगा।
मुझे लगता है कि आप रखरखाव की परवाह करते हैं। रखरखाव के दृष्टिकोण से, बिटमास्क स्पष्ट अनुमतियों को संग्रहीत करने के रूप में अंतर्निहित समस्या डोमेन के रूप में अभिव्यंजक नहीं है। आपको लगभग निश्चित रूप से डेटाबेस सहित कई घटकों में बिटमास्क झंडे के मूल्य को सिंक्रनाइज़ करना होगा। असंभव नहीं है, लेकिन पीठ में दर्द है।
इसलिए, जब तक "बेहतर" का आकलन करने का कोई और तरीका नहीं है, मैं कहूंगा कि बिटमास्क मार्ग सामान्यीकृत डेटाबेस संरचना में अनुमतियों को संग्रहीत करने जितना अच्छा नहीं है। मैं इस बात से सहमत नहीं हूं कि यह "धीमा होगा क्योंकि आपको शामिल होना होगा" - जब तक कि आपके पास पूरी तरह से निष्क्रिय डेटाबेस न हो, आप इसे मापने में सक्षम नहीं होंगे (जबकि एक सक्रिय सूचकांक के लाभ के बिना पूछताछ विशेष रूप से बन सकती है कुछ हज़ार रिकॉर्ड के साथ धीमा)।