2010-08-27 11 views
5

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

समाधान जो मन में आता है:

=========================== 
| Id | ParentId | Name | 
=========================== 
| 1 | 0  | USA  | 
--------------------------- 
| 2 | 1  | Alabama | 
--------------------------- 

मैं अगर वहाँ इस तरह के एक समाधान के साथ किसी भी संभावित समस्याओं कर रहे हैं सोच रहा हूँ। धन्यवाद।

उत्तर

3

यदि आप विभिन्न प्रकार के आइटम (शहर राज्य के देशों) को जानते हैं, तो आपको अलग-अलग टेबल बनाना चाहिए। उन्हें एक टेबल में रखकर क्वेरी करना अधिक कठिन हो जाएगा।

यदि आप विभिन्न तालिका प्रकारों का उपयोग करते हैं, तो आप रेफरेंसियल अखंडता को लागू कर सकते हैं, इसलिए आपको अनाथ नहीं मिलते हैं।

बच्चों के बारे में सोचें!

+0

आप स्वयं में शामिल होने में रेफरेंसियल अखंडता को लागू कर सकते हैं। आपको केवल माता-पिता के संदर्भ में, या तो स्वयं, या नामित "रूट" रिकॉर्ड के बिना पंक्तियों के लिए नियम बनाना होगा। –

+2

मुझे नहीं लगता कि मैं सभी प्रकार के सामानों को जानता हूं। विभिन्न देश भौगोलिक वर्गों को अलग करते हैं। मुझे एक ऐसा डिज़ाइन होना चाहिए जो पदानुक्रम के एन-स्तर का समर्थन करता हो। – StackOverflowNewbie

+0

@StackOverflowNewbie - मैं देखता हूं, तो आपका डिज़ाइन अच्छा है और समझ में आता है। लेकिन क्या डाउनवॉटर की व्याख्या करने की देखभाल होगी? मैं अपने उत्तर पोस्ट करने से पहले मैं उनकी टिप्पणी दिव्य नहीं कर सका ... –

0

यह स्केलेबिलिटी के लिए काफी उपयुक्त लगता है, हालांकि मैं वास्तविक पंक्ति/प्रविष्टि (यदि आप चाहें तो इकाई का प्रकार) की पहचान करने के लिए एक अतिरिक्त कॉलम शामिल कर सकते हैं।

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

अंत में, डिज़ाइन आपके द्वारा प्राप्त होने वाले उप-वर्गों की ज्ञात संख्या पर निर्भर करेगा, और इस तरह के सामान्यीकरण को गीला करने से वास्तव में जीवन अधिक भिन्न हो सकता है।

+0

यदि मुझे पहले से पता नहीं है कि मेरे पास "प्रकार" क्या है? – StackOverflowNewbie

0

मैं कुछ इसी तरह का उपयोग करता हूं और इसके साथ बहुत सफलता मिली है। हाल ही में Question of mine काम में आ सकता है।

कुछ मामलों में (जैसे इस) मैं एक टेबल संरचना से बंधना नहीं चाहता हूं। आत्म संदर्भ एक महान बात हो सकती है। मैं समझ नहीं पा रहा हूं कि कोड में उसी ऑब्जेक्ट प्रकार का उपयोग करके वृक्ष जैसी संरचनाएं क्यों स्वीकार्य हैं, लेकिन जब डेटाबेस की बात आती है तो प्रोग्रामर द्वारा इसे छोड़ दिया जाता है।

0

अपने दर्शकों के आधार पर, आप नाम मूल्यों को अलग-अलग टाइप करने पर भी विचार करना चाहेंगे ताकि उन्हें पदानुक्रमित संरचना को डुप्लिकेट किए बिना स्थानीयकृत किया जा सके।

+0

क्या आप कृपया विस्तृत कर सकते हैं? डीबी डिजाइन में नाम/मूल्य जोड़े भी अपनी समस्याएं पेश करते हैं। – StackOverflowNewbie

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