2009-07-14 26 views
8

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

जिस तरह से मैं इसे देखता हूं, वहां कुछ विकल्प हैं: 1) डेटाबेस टेबल का एक सेट है। प्रत्येक तालिका में, 'उपयोगकर्ता' कॉलम या ऐसा कुछ शामिल करें जो प्रत्येक पंक्ति को उचित उपयोगकर्ता खाते में मैप करेगा। 2) प्रत्येक उपयोगकर्ता के लिए एक पूरी तरह से अलग डेटाबेस बनाएँ। यह प्रदर्शन कारणों के लिए एक बहुत अच्छा विचार प्रतीत नहीं होता है। 3) प्रत्येक उपयोगकर्ता के लिए एक ही डेटाबेस के भीतर एक अलग स्कीमा बनाएं। प्रत्येक स्कीमा में प्रत्येक उपयोगकर्ता के लिए टेबल होंगे।

आप इस समस्या को कैसे संभालेंगे? क्या कोई विकल्प है जो मुझे याद आ रहा है? मैं PostgreSQL का उपयोग अपने डेटाबेस के रूप में कर रहा हूं यदि इससे कोई फर्क पड़ता है कि आप इस समस्या को कैसे संभालेंगे।

+0

संभावित डुप्लिकेट [क्या यह मेरी साइट पर प्रत्येक उपयोगकर्ता को MySQL डेटाबेस असाइन करने के लिए अनुचित है?] (Http://stackoverflow.com/q/327787/90527)। – outis

उत्तर

6

मैं लगभग हमेशा विकल्प # 1 के साथ चला गया है। यदि आप इसे सही तरीके से डिज़ाइन करते हैं तो आपको केवल अपने 'उपयोगकर्ता' कॉलम को कुछ महत्वपूर्ण तालिकाओं में ही आवश्यकता हो सकती है जो आपके प्रवेश बिंदु हैं और फिर बाकी सब कुछ उन महत्वपूर्ण तालिकाओं से जुड़ सकते हैं।

5

अंगूठे के सामान्य नियम के रूप में, आप बहुत अधिक संरचनाओं के साथ कई तालिकाओं (या डेटाबेस) नहीं चाहते हैं। यदि आप खुद को अलग stuff_for_user_a और stuff_for_user_b तालिकाओं (जो आपके विकल्प # 2 और # 3 ध्वनि की तरह है) के निर्माण पर विचार करते हैं, तो आप शायद stuff तालिका बनाना चाहते हैं जिसमें user कॉलम शामिल है (यानी, आपका विकल्प # 1)।

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

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