2012-02-17 21 views
7

मेरे पास कई से अधिक टेबल हैं जो उपयोगकर्ता द्वारा दी गई प्रत्येक अनुमत भूमिका के लिए रिकॉर्ड संग्रहीत करती हैं। यदि कोई उपयोगकर्ता अपनी भूमिकाओं को जोड़ता है (जोड़ता है, और निकाल देता है) भूमिकाओं को मैं इसे कैसे संभालना चाहिए?कई से कई रिश्ते में अपडेट करना

क्या मुझे पहले सभी उपयोगकर्ताओं की भूमिकाओं को हटा देना चाहिए और फिर चुने गए लोगों को जोड़ना चाहिए? या कुछ प्रकार के मिलान करते हैं?

+0

यही कारण है कि हमारे पास पैरामीटर क्यों हैं, आप उपयोगकर्ता आईडी और रोलआईडी को पैरामीटर के रूप में पास करते हैं और फिर आप करते हैं: 'MyTable से हटाएं जहां उपयोगकर्ता आईडी = @UserID और roleID = @ RoleID' – JonH

+1

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

उत्तर

6

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

2. परिवर्तन के रखें ट्रैक और लागू केवल परिवर्तन
यह इस मामले में, अधिक काम, लेकिन और अधिक कुशल है, भले ही बस थोड़ा सा। ORMs जैसे टूल्स इस तरह के परिवर्तनों को एक हवा को ट्रैक और लागू करते हैं।

3. उपयोगकर्ता के रूप में परिवर्तन
इस मामले में मुझे लगता है कि यह अंत उपयोगकर्ता सहयोगियों की भूमिका निभाने के लिए उपयोगकर्ता के रूप में डीबी परिवर्तनों को लागू करने से स्वीकार्य है बनाता परिवर्तन लागू करें। शायद यह एक स्थानीय डेटाबेस है और प्रत्येक लेनदेन अल्पकालिक है। लेकिन मुझे लगता है कि यह एक असंभव परिदृश्य है।

मुझे नहीं लगता कि इस विशेष मामले को हटाने और पुनः सम्मिलित करने के लिए कुछ भी गलत है।

1

यदि कोई व्यक्ति भूमिका निभाता है तो userID और roleID पास क्यों न करें और उस रिकॉर्ड को हटा दें? आप एक विशिष्ट userID के लिए सभी रोलआईडी को क्यों हटाना चाहते हैं और फिर उन्हें फिर से पढ़ना चाहते हैं?

मेरी टिप्पणी ऊपर से, पारित दो पैरामीटर: UserID और RoleID

तो आप हटाना/कि एक टपल निकाल सकते हैं।

1. सभी भूमिकाओं को हटाएँ और फिर से डालने
यह एक सीधी-सपाट दृष्टिकोण है:

+0

में संपादन किया था, जबकि यूई सेटअप की गई भूमिकाओं को चेक बॉक्स के माध्यम से सेट किया गया है, जहां आप कई – chobo

+0

@chobo को चेक या अनचेक कर सकते हैं - तो एकाधिक पैरामीटर भेजें , आप 'IN' इत्यादि का उपयोग कर सकते हैं। किसी भी तरह से अगर बहुत अधिक भूमिकाएं नहीं हैं तो आप केवल सभी को हटा सकते हैं और केवल चेक किए गए लोगों को पढ़ सकते हैं। – JonH

+0

@ जोनएच: चटकी पर चंकी, है ना? – micahhoover

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