2011-11-14 12 views
17

मैं MongoDB का उपयोग कर एक छात्र प्रबंधन प्रणाली बनाने जा रहा हूँ। मेरे पास उपस्थिति के रिकॉर्ड के लिए छात्रों और दूसरे के लिए एक टेबल होगा। क्या नीचे उपस्थिति के अनुसार छात्रों की तालिका तक पहुंचने के लिए उपस्थिति तालिका में मेरी कुंजी हो सकती है? कैसे?क्या कोई मोंगोडीबी का उपयोग कर एक रिलेशनल डेटाबेस बना सकता है?

diagram of a relational database

उत्तर

26

MongoDB के पीछे विचार यह संबंधपरक डेटा को खत्म करने (या कम से कम कम से कम) है। क्या आपने केवल उपस्थिति डेटा को सीधे प्रत्येक छात्र रिकॉर्ड में एम्बेड करने पर विचार किया है? यह वास्तव में मोंगोडीबी के लिए पसंदीदा डिजाइन पैटर्न है और इसके परिणामस्वरूप बेहतर प्रदर्शन और स्केलेबिलिटी हो सकती है।

यदि आपको वास्तव में अत्यधिक संबंधपरक और सामान्यीकृत डेटा की आवश्यकता है, तो आप MongoDB का उपयोग करके पुनर्विचार करना चाहेंगे।

+0

आपके उत्तर के लिए धन्यवाद। मेरे प्रशिक्षक ने मुझे यह परियोजना मोंगो डीबी के साथ करने के लिए दी। तो मैं कुछ जानकारी/कहीं से (जैसे आप :)) से कुछ जानकारी खोजूंगा और मैं इसे करने की कोशिश करूंगा। फिर से धन्यवाद। –

+2

यदि आप मोंगोडीबी के लिए नए हैं, तो उनकी वेबसाइट पर एक बहुत अच्छा छोटा ट्यूटोरियल है: http://www.mongodb.org/ (बस "इसे आज़माएं" पर क्लिक करें और फिर खोल में 'ट्यूटोरियल' टाइप करें। –

+1

@MikeChristensen इस समय, यह सलाह अब मान्य नहीं है। उन्होंने शायद अपनी वेबसाइट बदल दी। – Kunok

17

उत्तर इस बात पर निर्भर करता है कि आप डेटा का उपयोग कैसे करना चाहते हैं। आपके पास वास्तव में 2 विकल्प हैं, उपस्थिति तालिका एम्बेड करें, या इसे लिंक करें। इन दृष्टिकोणों पर और अधिक विस्तृत विवरण दिया गया है: http://www.mongodb.org/display/DOCS/Schema+Design

सामान्य उपयोग-मामले के लिए, आप शायद इस विशेष संग्रह को एम्बेड करेंगे, इसलिए प्रत्येक छात्र रिकॉर्ड में एक एम्बेडेड "उपस्थिति" तालिका होगी। यह काम करेगा क्योंकि छात्रों के बीच उपस्थिति रिकॉर्ड साझा करने की संभावना नहीं है, और उपस्थिति डेटा को पुनर्प्राप्त करने के लिए छात्र की जानकारी भी आवश्यक है। उपस्थिति डेटा को पुनर्प्राप्त करना उतना आसान होगा जितना:

db.student.find({ login : "sean" }) 
{ 
    login : "sean", 
    first : "Sean", 
    last : "Hodges", 
    attendance : [ 
    { class : "Maths", when : Date("2011-09-19T04:00:10.112Z") }, 
    { class : "Science", when : Date("2011-09-20T14:36:06.958Z") } 
    ] 
} 
+0

धन्यवाद, मैंने स्कीमा डिजाइन पढ़ना शुरू कर दिया है। –

0

हां। कोई पक्के नियम नहीं हैं। आपको डेटा एम्बेड करने या संदर्भित करने के पेशेवरों और विपक्ष को देखना होगा। यह वीडियो निश्चित रूप से मदद करेगा (https://www.youtube.com/watch?v=-o_VGpJP-Q0&t=21s)। आपके उदाहरण में, फ़ोन नंबर विशेषता एक ही तालिका (दस्तावेज़ डेटाबेस में) पर होनी चाहिए, क्योंकि किसी व्यक्ति का फ़ोन नंबर शायद ही कभी बदलता है।