2012-10-27 7 views
10

उपयोगकर्ता तालिका में उपयोगकर्ता अनुमतियों का बेहतर प्रतिनिधित्व कर रहा है या अपनी अनुमति तालिका में बेहतर है? उपयोगकर्ता तालिका
मेंडेटाबेस में उपयोगकर्ता भूमिकाओं का प्रतिनिधित्व करने के लिए बेहतर तरीका

अनुमतियां उपयोगकर्ता तालिका में अनुमतियाँ लाना उपयोगकर्ता तालिका में प्रत्येक अनुमति के लिए एक कॉलम बनाने का मतलब है। एक फायदा यह है कि क्वेरी तेजी से चलनी चाहिए क्योंकि उपयोगकर्ताओं को उपयोगकर्ता अनुमतियों से संबंधित होने पर कोई भी जरूरी नहीं है। एक नुकसान यह है कि कई अनुमति कॉलम उपयोगकर्ता तालिका को अव्यवस्थित करते हैं। अनुमति तालिका में

अनुमतियां कई-से-अनेक संबंध
यह इस तरह से सफाई से उपयोगकर्ता मेज से अनुमतियों से अलग कर के साथ उपयोगकर्ता तालिका में शामिल हो गए, लेकिन एक उपयोगकर्ता अनुमतियों का उपयोग करने के दो तालिकाओं भर में शामिल होने की आवश्यकता है। डेटाबेस का उपयोग धीमा हो सकता है, लेकिन डेटाबेस डिज़ाइन क्लीनर लगता है।

शायद कई अनुमतियों के दौरान एक अलग तालिका में अनुमतियां रखना बेहतर होता है। इस निर्णय में अन्य विचार क्या हैं, और विभिन्न स्थितियों में कौन सा डिज़ाइन बेहतर है?

उत्तर

20

अभिगम नियंत्रण के लिए मानक पैटर्न भूमिका आधारित सुरक्षा कहा जाता है। दोनों के रूप में उन और की संख्या अनुमतियों की जरूरत के विभिन्न प्रकार की संख्या बढ़ता जाएगा, आपके उपयोगकर्ता-से-अनुमतियों लिंक के प्रबंधन तेजी से मुश्किल हो सकता है।

उदाहरण के लिए, यदि आपके पास पांच प्रशासक और पचास उपयोगकर्ता हैं, तो आप प्रत्येक समूह के समन्वय में अनुमति कैसे रखते हैं? जब आपके उपयोगकर्ताओं में से एक को व्यवस्थापक को पदोन्नत किया जाता है, तो आपको कितने संपादन करने की आवश्यकता होती है? जवाब दो चौराहे बनाने के लिए है: उपयोगकर्ता-टू-रोल और भूमिका-से-अनुमति

यह समाधान this question को वर्णन किया गया है (इकाई संबंध आरेख सहित) मेरा उत्तर में। दो बातें मैं के बारे में सोच नहीं किया -

enter image description here

+2

यह एक और जटिल अनुप्रयोग के लिए एक मजबूत जवाब है।@Nurkeiwicz नोट्स के रूप में, एक साधारण एप्लिकेशन को रोल टेबल या अनुमति तालिका की भी आवश्यकता नहीं हो सकती है। – steampowered

+0

अच्छा आरेख, आप किस उपकरण का उपयोग करते थे? – dangerousdave

+1

@ डेंजरसडेव - देरी से प्रतिक्रिया के लिए खेद है, मैं शहर से बाहर हूं। मैं कस्टम स्मार्ट आकृतियों के साथ Visio का उपयोग करता हूं जिसे मैंने जेम्स मार्टिन ईआरडी दृश्य सम्मेलन और एक कस्टम लाइन पैटर्न का उपयोग करने के लिए बनाया है जो इसे हाथ से तैयार दिखता है। –

4

आपकी पहली दृष्टिकोण संभव है जब विभिन्न भूमिकाओं/अनुमतियों की संख्या अपेक्षाकृत छोटी है। उदाहरण के लिए यदि आपके पास केवल दो प्रकार के उपयोगकर्ता हैं: सामान्य और व्यवस्थापक, एक अलग तालिका एक ओवरकिल की तरह दिखती है। सिंगल is_admin कॉलम पर्याप्त और सरल है।

हालांकि भूमिकाओं की संख्या कुछ से अधिक होने के बाद यह दृष्टिकोण स्केल नहीं होता है। यह कई कमियां भी हैं:

  • उपयोगकर्ता तालिका बहुत "विस्तृत" हो जाता है उपयोगकर्ता तालिका में फेरबदल की आवश्यकता है खाली कॉलम (बर्बाद कर अंतरिक्ष)

  • व्यवस्था करने के लिए नई भूमिका को जोड़ने का एक बहुत हो रही है। यह बोझिल है और बड़े उपयोगकर्ता डेटाबेस

  • उपयोगकर्ता भूमिकाओं को सूचीबद्ध करने के लिए समय-समय पर उपभोग करने की आवश्यकता है, जो कि सरल डेटाबेस क्वेरी के विपरीत सभी स्तंभों पर गणना करने की आवश्यकता है।

+0

गणना कर रहा है अनुमतियाँ कॉलम सभी रोल और डाटाबेस पर चल रहे वेदी आदेश दिखाने के लिए। अलग मेज जल्दी और अधिक वांछनीय हो जाता है। – steampowered

संबंधित मुद्दे

 संबंधित मुद्दे