अच्छा, अंतर उस डिज़ाइन में है जिसे आप ऑब्जेक्ट्स का उपयोग करके प्रतिबिंबित करने का प्रयास कर रहे हैं।
आपके मामले में, प्रत्येक Question
को कई Categories
पर असाइन किया जा सकता है - तो यह @*ToMany
संबंध का संकेत है। अब आप अगर तय करने के लिए है:
- प्रत्येक
Category
केवल एक Question
(यह एक अद्वितीय बाधा जिसका अर्थ है कि कोई अन्य श्रेणी में एक ही प्रश्न उल्लेख कर सकते हैं में परिणाम होगा) यह करने के लिए आवंटित कर सकते हैं - यह होगा इस @ManyToMany
संबंध होगा - हो @OneToMany
संबंध,
- प्रत्येक
Category
कई Questions
में डाला गया हो सकता है (वहाँ Category
तालिका में कोई अद्वितीय बाधा हो जाएगा)।
@OneToMany (प्रश्न -> श्रेणी)
इस संबंध तालिका केवल यदि आप स्पष्ट रूप से @JoinTable
का उपयोग कर तो परिभाषित या में शामिल होने के द्वारा दर्शाया जा सकता है जब यह एक यूनिडायरेक्शनल रिश्ता है जो मालिक पक्ष में 'वन' पक्ष है (इसका मतलब है कि Question
इकाई में आपके पास Categories
का संग्रह है, लेकिन Categories
में आपके पास Question
का कोई संदर्भ नहीं है)।
यदि आप इसके बारे में सोचते हैं, तो यह काफी उचित लगता है कि जॉइन टेबल का उपयोग किया जाता है। Categories
तालिका में एकाधिक पंक्तियों के साथ Question
तालिका में एक पंक्ति के बीच कनेक्शन को सहेजने का कोई अन्य तरीका नहीं है।
हालांकि, यदि आप एक द्विपक्षीय संबंध मॉडल करना चाहते हैं तो आपको यह निर्दिष्ट करने की आवश्यकता है कि Category
('कई' पक्ष) संबंधों का स्वामित्व पक्ष है।इस मामले में डीबीएमएस Category
तालिका में विदेशी कुंजी के साथ एक कॉलम कॉलम बना सकता है क्योंकि प्रत्येक Category
पंक्ति केवल एक Question
से जुड़ा जा सकता है।
इस तरह आपके पास कोई भी टेबल नहीं है लेकिन सरल विदेशी कुंजी (अभी भी, जैसा कि शुरुआत में इंगित किया गया है, आप @JoinTable
का उपयोग करके शामिल तालिका बनाने के लिए मजबूर कर सकते हैं)।
@ManyToMany
यह रिश्ता एक मेज में शामिल होने के रूप में प्रतिनिधित्व किया जाना चाहिए। यह मूल रूप से unidirectional @OneToMany
संबंधों के समान ही काम करता है, लेकिन इस मामले में आपके पास Question
से कई पंक्तियां हो सकती हैं Categories
से कई पंक्तियों में शामिल हो गईं।
स्रोत
2011-11-19 11:56:14
बहुत बढ़िया स्पष्टीकरण। बहुत अधिक अपवित्र होना चाहिए। – LppEdd