user_table
id, etc
permission table
id, user_id, permission_type
इस संरचना के साथ, प्रत्येक उपयोगकर्ता के पास उनके खाते से संबद्ध कई अनुमति प्रकार हो सकते हैं, प्रत्येक उन सुविधाओं के सेट के लिए एक जो वे कर सकते थे प्रवेश की अनुमति। नए प्रकार की अनुमतियों को जोड़ने के लिए आपको कभी भी तालिका संरचना को बदलने की आवश्यकता नहीं होगी।
इसे एक कदम आगे ले जाने के लिए, आप प्रत्येक प्रकार की अनुमति को एक बाइनरी नंबर बना सकते हैं। इस तरह आप बिटवाइज़ ऑपरेटरों का उपयोग करके अनुमतियों के एक सेट को एक पूर्णांक द्वारा प्रदर्शित कर सकते हैं।
उदाहरण के लिए यदि आपके पास स्थिरांक थे
PERMISSION_CHANGE_PERMISSIONS = bindec('001') = 1
PERMISSION_MAKE_CHANGES = bindec('010') = 2
PERMISSION_ACCEPT_CHANGES = bindec('100') = 4
आप एक बिटवाइज़ ऑपरेटर "|" का उपयोग करके इन मानों को एक पूर्णांक में जोड़ सकते हैं।
(PERMISSION_CHANGE_PERMISSIONS | PERMISSION_MAKE_CHANGES) = bindec('011') = 3 = $users_combined_permissions
फिर यह जांचने के लिए कि क्या उनके पास कोई विशिष्ट अनुमति है, बिटवाइज़ ऑपरेटर "&" का उपयोग करें
($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true
यदि आपने ऐसा किया है, तो आपको अनुमतियों के प्रत्येक सेट के लिए केवल एक डीबी रिकॉर्ड की आवश्यकता होगी।