मैं इस महीने के काम के दो अलग-अलग टुकड़ों में एक ही समस्या हुई:वहाँ एक दोहरी संबंध स्टोर करने के लिए एक सुंदर तरीका है (यानी 1 उपयोगकर्ता और 2 उपयोगकर्ता दोस्त हैं)
Version 1: User 1 & User 2 are friends
Version 2: Axis 1 & Axis 2 when graphed should have the quadrants colored...
समस्या है , मुझे इस जानकारी को स्टोर और क्वेरी करने के लिए आरडीबीएमएस का उपयोग करके एक सुरुचिपूर्ण तरीका नहीं दिख रहा है।
दृष्टिकोण: 1:
दो स्पष्ट दृष्टिकोण हैं
store the information twice (i.e. two db rows rows per relationship):
u1, u2, true
u2, u1, true
u..n, u..i, true
u..i, u..n, true
have rules to always look for the inverse on updates:
on read, no management needed
on create, create inverse
on delete, delete inverse
on update, update inverse
Advantage: management logic is always the same.
Disadvantage: possibility of race conditions, extra storage (which is admittedly cheap, but feels wrong)
दृष्टिकोण 2:
store the information once (i.e. one db row per relationship)
u1, u2, true
u..n, u..i, true
have rules to check for corollaries:
on read, if u1, u2 fails, check for u2, u1
on create u1, u2: check for u2, u1, if it doesn't exist, create u1, u2
on delete, no management needed
on update, optionally redo same check as create
Advantage: Only store once
Disadvantage: Management requires different set of cleanup depending on the operation
वहाँ एक 3 दृष्टिकोण है कि की तर्ज पर चला जाता है कि अगर मैं सोच रहा हूँ " एफ (एक्स, वाई) का उपयोग करके कुंजी जहां एफ (एक्स, वाई) प्रत्येक एक्स, वाई संयोजन के लिए अद्वितीय है और जहां एफ (एक्स, वाई) === एफ (वाई, एक्स) "
मेरा आंत मुझे बताता है कि बिटवाई ऑपरेशंस का कुछ संयोजन होना चाहिए जो इन आवश्यकताओं को पूरा कर सके। एक दो-स्तंभ की तरह कुछ:
कुंजी 1 = एक्स & & y कुंजी 2 = x + y
मैं आशा करती हूं कि जो लोग समाजशास्त्र विभाग में कम समय गणित विभाग में अधिक समय बिताया है, और इसकी संभावना या असंभवता का सबूत देखा गया है और यह एक त्वरित "[आप मूर्ख,] आसानी से साबित (आईएम) प्रदान कर सकता है, यह लिंक देखें" (नाम वैकल्पिक नाम)
कोई अन्य सुरुचिपूर्ण दृष्टिकोण भी बहुत होगा स्वागत हे।
धन्यवाद
क्या आप ग्राफ आधारित डेटाबेस का उपयोग नहीं कर सकते? उदाहरण के लिए Neo4j। यह आपको अपने ग्राफ संबंधों को पूरी तरह से कैप्चर करने की अनुमति देगा। आप मोंगो का भी उपयोग कर सकते हैं और इसे सभी को जेसन ऑब्जेक्ट में स्टोर कर सकते हैं। – Steve
यह कुछ भी 'दस्तावेज उन्मुख' उर्फ 'नोएसक्यूएल' डेटाबेस सुंदरता का समर्थन नहीं करता है। –
@steve yes, Neo4j एक असली विकल्प है (हालांकि मैं उनके लाइसेंस का बड़ा प्रशंसक नहीं हूं)। Neo4j यह सार तत्वों, लेकिन उन्हें किसी भी तरह मौलिक समस्या को हल करने के लिए है। मैं समझना चाहता हूं कि कैसे। – Ted