डेटाबेस में, कई से अधिक रिश्तों का प्रतिनिधित्व करने के लिए टूल एक एसोसिएशन टेबल है। तालिका में प्रत्येक पंक्ति दो वस्तुओं के बीच एक एसोसिएशन का प्रतिनिधित्व करता है।इस प्रकार यदि 1, 2, और 3 की आईडी के साथ सूची में 1 प्रकट होता है की एक आईडी के साथ एक नोट, वहाँ संघ तालिका में तीन पंक्तियों होगा:
ID NoteID ListID
-- ------ ------
1 1 1
2 1 2
3 1 3
आप एक नोट और इससे संबंधित सभी सूचियों को प्राप्त कर सकते हैं इस तरह एक प्रश्न के साथ:
SELECT [columns] FROM Association
JOIN Notes ON Note.ID = Association.NoteID
JOIN Lists ON List.ID = Association.ListID
WHERE Association.NoteID = @NoteID
और यह सब एक सूची के लिए नोट:
SELECT [columns] FROM Association
JOIN Notes ON Note.ID = Association.NoteID
JOIN Lists ON List.ID = Association.ListID
WHERE Association.ListID = @ListID
है यही कारण है कि आप इसे कैसे एक्सएमएल में प्रतिनिधित्व चाहते हैं:
<Lists>
<List ID='1'>...</List>
<List ID='2'>...</List>
<List ID='3'>...</List>
...
<Lists>
<Notes>
<Note ID='1'>...</Note>
</Notes>
<Associations>
<Association ID='1' NoteID='1' ListID='1'/>
<Association ID='2' NoteID='1' ListID='2'/>
<Association ID='3' NoteID='1' ListID='3'/>
</Associations>
में, XSLT, तो आप इस तरह इस संघ पहुंच सकता है:
<xsl:template match="List" mode="AssociatedNotes">
<xsl:variable name="Associations" select="/*/Associations/Association[@ListID=current()/@ID]"/>
<xsl:apply-templates select="/*/Notes[@ID=$Associations/@NoteID]"/>
</xsl:template>
<xsl:template match="Note" mode="AssociatedLists">
<xsl:variable name="Associations" select="/*/Associations/Association[@NoteID=current()/@ID]"/>
<xsl:apply-templates select="/*/Lists[@ID=$Associations/@ListID]"/>
</xsl:template>
(mode
विशेषता के उपयोग के लिए एक दूसरे को कॉल करने से इन खाकों रखने के लिए ध्यान दें जब तक आप एक ढेर अतिप्रवाह मिलता है।)
स्रोत
2010-06-18 19:07:37
अंतिम सुझाव यहां बताया गया है कि डेटाबेस कितने रिलेशनल करेंगे: आप दो टेबल, "नोट्स" और "सूचियां" परिभाषित करते हैं और फिर एक साथ तालिका में शामिल होते हैं प्राथमिक नोट (और संभवतः केवल डेटा) के रूप में "नोटआईडी", "listId"। यहां समस्या यह है कि अधिकांश एक्सएमएल आधारित समाधान ऐसी चीजों को क्वेरी करने में कठोर बना देंगे जो एक संबंधपरक डेटाबेस होगा। अगर मुझे एक्सएमएल का उपयोग करने के लिए मजबूर किया गया था तो मैं "note_ref" दृष्टिकोण से चिपकेगा (यह मानते हुए कि सूचियां डिस्प्ले ड्राइव करती हैं और नोट्स कुछ ऐसी चीज हैं जो आप स्मृति में रख सकते हैं)। अन्यथा मैं डेटाबेस में स्विच और टेबल में शामिल हो जाऊंगा। एक्सएमएल कुछ चीजों के लिए बहुत अच्छा है, लेकिन हर चीज नहीं। – Godeke
@Godeke डेटा पहले से ही एक संबंधपरक डेटाबेस में संग्रहीत है। यह बस एक निर्यातित फ़ाइल प्रारूप है। – CodeFusionMobile
@CSharperWithJava उस स्थिति में 99% मेरी टिप्पणी को हल किया गया है और मैं बस सहमत हूं कि उपरोक्त नोट_आरफ दृष्टिकोण आपको यह सुनिश्चित करने की अनुमति देगा कि आप मूल की विस्तृत संरचना खो नहीं पाएंगे (तथ्य नोट एकवचन इकाइयां थीं जो कि उससे जुड़ी थीं)। – Godeke