6

मेरे पास एक सूची है, जहां प्रत्येक सूची प्रविष्टि को एकाधिक टैग के साथ टैग किया जाता है। प्रत्येक टैग में बाल टैग भी हो सकते हैं। सूची में प्रत्येक प्रविष्टि में एक से अधिक टैग हो सकते हैं।पदानुक्रमित टैग स्टोर करने का सबसे अच्छा तरीका

उदाहरण के लिए, कारों के बारे में बात करने वाली एक सूची प्रविष्टि में "कार", "वाहन", "फेरारी" नामक टैग हो सकते हैं।

मुझे टैग के पदानुक्रम को देखने में सक्षम होना चाहिए, जैसा कि नीचे दिखाया गया है। साथ ही, प्रति प्रविष्टि टैग की संख्या की कोई सीमा नहीं होनी चाहिए, और टैग कितने गहरे जा सकते हैं।

मैं इस डेटा को कैसे स्टोर करूं? मैं किसी भी प्रकार के डीबीएमएस का उपयोग करने के लिए खुला हूं।

enter image description here

+0

नोएसQL डाटाबेस के बारे में क्या? –

उत्तर

5

मूर्ख दृष्टिकोण माता-पिता/बाल समाधान होगा, लेकिन इस डेटा मॉडल के साथ कुशल प्रश्न लिखना बहुत मुश्किल है।

Managing Hierarchical Data in MySQL पदानुक्रमित डेटा संरचनाओं के बारे में एक बहुत अच्छा लेख है। मुझे लगता है कि इसमें से अधिकांश को अन्य डेटाबेस सिस्टम पर भी लागू किया जा सकता है।

+0

लिंक के लिए धन्यवाद! बहुत सूचनाप्रद। – ashwnacharya

+0

विचार साफ है लेकिन मुझे आश्चर्य है कि अगर पूरे पदानुक्रम समय के साथ विकसित हो रहा है तो यह कितना आसान होगा। – EFreak

0

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

<Menu> 
    <Menuitem1> 
     <submenu1> 
     <submenu1> 
      <submenu1.1/> 
      </submenu1>   
     </submenu1> 
    </Menuitem1> 

    <Menuitem1> 
     <submenu1> 
     </submenu1> 
    </Menuitem1> 
</Menu> 

मुझे लगता है कि यह आपकी मदद कर सकता है।

+0

मैं प्रत्येक आइटम को सूची में किसी प्रविष्टि से कैसे जोड़ूं? मुझे सूची प्रविष्टियों को भी स्टोर करने की आवश्यकता है। – ashwnacharya

4

मुझे लगता है कि यह किसी भी डेटाबेस के लिए सबसे आसान तरीका है: tag (id, name, parent_id), जहां parent_id पैरेंट टैग की id को दर्शाता है।

1

आप डेटा के 2 स्रोतों का उपयोग कर रहे हैं, लेकिन लगता है कि आप दोनों मिश्रण कर रहे हैं।

एक डेटा आपकी सूची प्रविष्टियां है, जो कि रैखिक, गैर पदानुक्रमिक प्रतीत होता है।

उदाहरण के लिए, फिल्मों की एक सूची।

डेटा का अन्य स्रोत, यह पदानुक्रमित डेटा ("टैग कैटलॉग") का संग्रह है।

उदाहरण के लिए फिल्म शैलियों की एक सूची।

 
+---Styles 
    +---Comedy 
    +---KidsComedy 
    +---SomeComedy 
    +---LOLComedy 
    +---Action 
    +---SomeAction 
    +---GrabYourCouchSofaAction 
    +---Drama 
    +---SomeDrama 
    +---LotsOfTearsDrama 
    +---EvenToughGuysWillCryDrama 
    +---Horror 
    +---SoftHorror 
    +---HardHorror 
    +---Gore 
    +---SciFi 

प्रत्येक फिल्म कई फिल्म शैलियों के साथ संबद्ध किया जा सकता:

  • "नक्षत्रयुद्ध: फैंटम मेनेस": { "SciFi," SomeDrama "," SoftHorror "," SomeAction "}
  • "startrek: सबसे पहले संपर्क": { "SciFi," SomeDrama "," SomeComedy "}

डाटाबेस डिजाइन के मामले में, आप 3 टेबल या इकाई वस्तुओं unleast होना चाहिए:

0,123,
  • सूची प्रविष्टियां = {ListEntryID, ListEntryTitle, ...}
  • मूवी विधाएं टैग/शैलियाँ = {TagID, TagTitle, ...} मूवी = {TagForListEntryID, ListEntryID, TagID लिए
  • शैलियाँ, .. ।}

शुभकामनाएं।

+0

हां। मेरे प्रश्न को समझने के लिए समय निकालने के लिए धन्यवाद। क्षमा करें अगर यह पहले स्पष्ट नहीं था। – ashwnacharya

0

इस प्रकार मैं समस्या से संपर्क करूंगा: सबसे पहले, मैं एक डोमेन मॉडल तैयार करूंगा। आपके मामले में ऐसा लगता है:

List(1)----contains----(0..*)-->ListItem 
ListItem(0..1)----hasTags--(0..*)-->Tag 
Tag(0..1)-----hasSubTags---(0..*)-->Tag 

इससे समस्याएं संदेह के लिए कोई जगह नहीं छोड़ती हैं।

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

इस चरण में आपके पास डेटा-मॉडल कार्यात्मक रूप से सही होना चाहिए, लेकिन प्रदर्शन समस्याएं हो सकती हैं। अब आपके लिए उन प्रश्नों पर ध्यान केंद्रित करने का समय है जो आप चाहते हैं और तालिका संरचना को अनुकूलित करें।

आशा इस दृष्टिकोण में मदद करता है (एक और इसी तरह के शोधन डोमेन मॉडल से शुरू यात्रा आप अंतिम वर्ग मॉडल के लिए डिजाइन भी मिल जाएगी)।

0

my answer here देखें। मैं माता-पिता को सभी स्तरों के लिए स्टोर करता हूं - वृक्षारोपण और सभी वंशजों से पूछताछ करना बेहद आसान है।

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