2012-12-14 16 views
7

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

अब, यह केवल तभी संभव लगता है जब आप नई कार्डिनिटी 1: 1 के बजाय नई कार्डिनालिटी 1: n को संभालने के लिए उपयोगकर्ता_पिक्चर जैसे नई तालिका जोड़ते हैं। अक्सर यह बहुत जटिल हो सकता है। जब भी मैं इस समस्या को पूरा करता हूं, मुझे आश्चर्य है कि हम उन सभी तीन आयामों का उपयोग क्यों नहीं करते हैं जिन्हें हम सोच सकते हैं। एक दो आयामी तालिका इस तरह से सीमित है कि यह कुछ अपूर्ण है - क्या होगा यदि प्रोफ़ाइल चित्र के साथ हमारी समस्या का जिक्र है दोबारा, उपयोगकर्ता तालिका में चित्र फ़ील्ड में गहराई थी, और उस गहराई ने फ़ील्ड को एक सरणी बना दी जो पूरी तरह से दोनों कार्डिनियलिटी 1: 1 और 1: n दोनों का प्रतिनिधित्व करती थी।

टेबल फ़ील्ड बस सरणी बन जाएंगे और स्वचालित रूप से दोनों कार्डिनियलिटी का समर्थन करेंगे - क्या ऐसा कुछ नहीं होगा? कम से कम मैं इसका इस्तेमाल करूंगा। क्या वहां पहले से कुछ ऐसा है?

+0

डेटाबेस में "चीजों" के बीच सभी संभावित संबंध (एक-से-एक, एक से कई, कई से कई), कवर किए गए हैं। "त्रि-आयामी" तालिका के लिए उपयोग केस क्या होगा - जिसका अर्थ है? – NullUserException

+0

एक उदाहरण का उपयोग केस प्रोफाइल चित्रों के ऊपर एक है: आपको एक नई तालिका जोड़ने की आवश्यकता होगी, लेकिन यह स्पष्ट रूप से बोझिल है। मॉडल संबंधों को बदलने की आवश्यकता होगी, तदनुसार अद्यतन प्रश्न, आदि - जिसमें बहुत सारे दर्द और काम शामिल हैं। मुझे लगता है कि हम उससे बेहतर करने में सक्षम हैं। एक दो आयामी क्षेत्र नहीं होगा, तालिका को तीन आयामी बना देगा, इसे हल करें? – weltschmerz

+1

रिलेशनल डेटाबेस एक बहुत ही ठोस नींव - [रिलेशनल बीजगणित] (http://en.wikipedia.org/wiki/Relational_algebra) द्वारा समर्थित हैं। यह सुनिश्चित करता है कि वे दोनों तेज़ और सही हैं। यही कारण है कि वे अभी भी आसपास क्यों हैं जब अन्य प्रकार के डेटाबेस आए और वर्षों से चले गए। जो टूटा नहीं है उसे ठीक न करें। – NullUserException

उत्तर

7

ओरेकल arrays के साथ-साथ nested tables के लिए समर्थन करता है। या तो आपकी आवश्यकताओं के अनुरूप लगते हैं। इन दिनों हालांकि लोग चीजों को सरल और सुसंगत रखने के लिए तालिकाओं और रिश्तों के रूप में सब कुछ मॉडल करना पसंद करते हैं और इसलिए आधुनिक आरडीबीएमएस आमतौर पर इस सामान का समर्थन नहीं करते हैं और मुझे विश्वास नहीं है कि यह कभी भी मानक एसक्यूएल में बना है।

+0

ग्रेट उत्तर, लिंक के लिए धन्यवाद! इंडेक्सिंग का उल्लेख करने के लिए – weltschmerz

4

मानक कई-से-अनेक दृष्टिकोण, कई उपयोगकर्ताओं कई प्रोफ़ाइल चित्रों को, आसानी से तीन तालिका दृष्टिकोण से आच्छादित है:

तालिका: उपयोगकर्ता
तालिका: चित्र
तालिका: User_Pictures

हालांकि, यदि आप नोएसक्यूएल दृष्टिकोण पर जाते हैं, तो आप एक उपयोगकर्ता दस्तावेज़ (आमतौर पर जेएसओएन प्रारूप में) स्टोर कर सकते हैं, जो उस उपयोगकर्ता के लिए एक ही तालिका में प्रोफ़ाइल चित्रों की एक सरणी संग्रहीत करता है।

ओरेकल लिंक के लिए @gordy +1। मुझे यकीन नहीं था कि क्या कोई आरडीबीएस एरे मानता है।

2

आप एक denormalization तकनीक (एक फ़ील्ड के उदाहरणों के लिए एकाधिक कॉलम) का वर्णन कर रहे हैं और यह आमतौर पर आँसू की ओर जाता है जब तक कि आप बुनियादी संबंध सिद्धांतों का उल्लंघन करने के परिणामों को पूरी तरह से समझते हैं।

क्लासिक कठिनाई तब आती है जब आप फ़ील्ड पर पूछना चाहते हैं ("उस उपयोगकर्ता को ढूंढें जिसकी यह तस्वीर है") और आप पाते हैं कि "और चित्र IN (pic1, pic2, pic3)" के साथ एक SQL कथन नहीं हो सकता अनुक्रमित किया जाना चाहिए और आपका अनुकूलक अपने बदला लेने की योजना बनाना शुरू कर देता है।

+0

+1 – weltschmerz

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