टेबल और विदेशी कुंजी के बजाय संस्थाओं और संबंधों में सोचते हुए, इन अलग-अलग स्थितियां हैं:
- ग्राहक एक एक-से-कई संबंध जो ग्राहक का एक हिस्सा बनाता है, उदाहरण के लिए अपने फोन नंबर के लिए है। उन्हें कैस्केडिंग के माध्यम से भी हटाया जाना चाहिए।
- ग्राहक के पास एक-से-कई या कई से अधिक संबंध हैं जो ग्राहक का हिस्सा नहीं हैं, लेकिन वे ग्राहक द्वारा ज्ञात/पहुंच योग्य हैं।
- कुछ अन्य इकाई के पास ग्राहक से संबंध है। यह किसी भी प्रकार का हो सकता है (जो डेटाबेस में एक विदेशी कुंजी नहीं है)। उदाहरण के लिए ग्राहक के आदेश। आदेश ग्राहक द्वारा ज्ञात नहीं हैं। यह सबसे कठिन मामला है।
जहां तक मुझे पता है, NHHernate से कोई प्रत्यक्ष समाधान नहीं है। मेटा-डेटा एपीआई है, जो आपको रनटाइम पर मैपिंग परिभाषाओं का पता लगाने की अनुमति देती है। आईएमएचओ, यह करने का गलत तरीका है।
मेरी राय में, यह व्यवसाय तर्क की ज़िम्मेदारी है कि यह सत्यापित करने के लिए कि कोई इकाई हटाया जा सकता है या नहीं। (भले ही विदेशी कुंजी और बाधाएं हैं जो डेटाबेस की अखंडता सुनिश्चित करती हैं, फिर भी यह व्यवसाय तर्क है)।
हमने एक ऐसी सेवा लागू की जिसे किसी इकाई को हटाने से पहले कहा जाता है। सॉफ्टवेयर के अन्य हिस्सों कुछ प्रकार के लिए रजिस्टर करते हैं। वे हटाने के खिलाफ veto कर सकते हैं (उदाहरण के लिए एक अपवाद फेंक कर)।
उदाहरण के लिए, आदेश प्रणाली ग्राहकों के हटाने के लिए पंजीकृत करता है। यदि किसी ग्राहक को हटाया जाना चाहिए, तो ऑर्डर सिस्टम इस ग्राहक द्वारा ऑर्डर की खोज करता है और अगर उसे कोई फेंकता है तो फेंकता है।
स्रोत
2010-03-02 08:10:30
आप कहते हैं कि 'Customer'" अन्य तालिकाओं "में संदर्भित है। बहुवचन इरादा है? हां, * ग्राहक * संदर्भित * कई * अन्य इकाई वर्गों से है? (उत्तर संभव समाधान को प्रभावित करता है।) –
@Jorn, हाँ, यह कई अन्य तालिकाओं में संदर्भित किया जा रहा है। –