/ / PostgreSQL के उत्तराधिकार का उपयोग कर उपयोगकर्ता की अनुमति डेटाबेस डिजाइन - डेटाबेस, postgresql, विरासत, डेटाबेस-डिजाइन, अनुमतियाँ

PostgreSQL की विरासत का उपयोग कर उपयोगकर्ता अनुमति डेटाबेस डिज़ाइन - डेटाबेस, postgresql, विरासत, डेटाबेस-डिज़ाइन, अनुमतियां

मेरे पास PostgreSQL का उपयोग करके एक डेटाबेस बनाने का कार्य है। मुझे वंशानुक्रम के माध्यम से उपयोगकर्ता की अनुमति को लागू करना होगा। मुझे लगता है कि ऐसा करने के लिए एक स्पष्ट दृष्टिकोण नहीं है। मान लीजिए कि मेरे पास 3 उपयोगकर्ता भूमिकाएं हैं: प्रशासक, मध्यस्थ तथा पंजीकृत उपयोगकर्ता। मैं क्या सोच रहा था एक है उपयोगकर्ताओं तालिका जो उपयोगकर्ता के बारे में मानक डेटा रखती है (पहला नाम, अंतिम नाम, ईमेल, पासवर्ड ...)। तालिका उपयोगकर्ताओं wold है a FK एक समूह के साथ एक तालिका जो एक उपयोगकर्ता (मॉडरेटर, व्यवस्थापक या पंजीकृत उपयोगकर्ता) के पास है, इसलिए मुझे पता है कि अनुमतियाँ प्राप्त करने के लिए किस तालिका को क्वेरी करना है।

जबसे प्रशासक तथा मध्यस्थ अनुमति है कि ए पंजीकृत उपयोगकर्ता क्या मैंने ऐसा सोचा है प्रशासक तथा मध्यस्थ तालिकाओं की अनुमति प्राप्त होगी पंजीकृत उपयोगकर्ता और उनके लिए अपनी विशिष्ट अनुमतियाँ जोड़ें। तालिकाएँ केवल उन अनुमतियों के लिए होंगी जिनमें उनका किसी अन्य तालिकाओं के साथ कोई संबंध नहीं होगा।

फिर बाद में मैं क्वेरी करूँगा यूजर ग्रुप तालिका यह देखने के लिए कि उपयोगकर्ता किस समूह से संबंधित है और फिर अनुमतियों को प्राप्त करने के लिए सही तालिका को क्वेरी करें (जो कि टाइप बूलियन होगी)।

लेकिन इस दृष्टिकोण के साथ, मैं एक विशिष्ट उपयोगकर्ता के लिए एक निश्चित अनुमति को प्रतिबंधित करने का एक तरीका नहीं देखता (उदाहरण के लिए टिप्पणियां पोस्ट करना)। मुझे पूरे समूह के लिए अनुमति को प्रतिबंधित करना होगा।

यह करने के लिए सबसे अच्छा तरीका पर किसी भी सुझाव अत्यधिक सराहना की जाएगी।

उत्तर:

उत्तर № 1 के लिए 1

एक विशिष्ट ACL आधारित सुरक्षा स्कीमा बहुत अच्छा लगता है जैसा आपने वर्णित किया है। एक उपयोगकर्ता के पास एक या अधिक रोल्स हो सकते हैं, एक भूमिका की अनुमति हो सकती है (एक भूमिका आपके समूह के समान ही लगती है)।

आपके प्रश्न का उत्तर बहुत कुछ निर्भर करता हैदानेदारता के स्तर पर जिसकी आपको ज़रूरत है (एक परियोजना में मैंने काम किया है हमें ऊपर वर्णित शास्त्रीय उदाहरण के लिए एक अतिरिक्त स्तर की आवश्यकता थी)। जैसा कि मैंने आपका उदाहरण देखा, आपके पास दो विकल्प हैं:

  1. उपयोगकर्ताओं को सीधे अनुमति दें। Doesn "t मामला लगता है क्योंकि आपको भूमिकाओं (व्यवस्थापक, मॉडरेटर) आदि की आवश्यकता होती है और अगर किसी भूमिका की पोस्टिंग टिप्पणियों तक पहुंच होती है, तो आप इसे कुछ उपयोगकर्ताओं तक सीमित नहीं करना चाहते हैं (यदि आप इसे अधिक उपयोगकर्ताओं के लिए करना चाहते हैं हो सकता है कि किसी अन्य भूमिका के लिए इसका मामला हो)

  2. यदि आपको इसकी आवश्यकता है, तो शायद एक अपवाद होतंत्र काम कर सकता है। एक उपयोगकर्ता की एक भूमिका होती है, लेकिन अपवादों को संग्रहीत करने के लिए एक अलग तालिका हो सकती है, अनुमतियाँ उसके लिए अनुमति नहीं है, भले ही यह एक निश्चित भूमिका हो