मैं बताता हूं कि (कार्यात्मक रूप से) SCHEMA और DATA में साइकिल और / या कई रास्तों के बीच एक बड़ा अंतर है। हालांकि DATA में चक्र और शायद मल्टीपाथ निश्चित रूप से प्रसंस्करण को जटिल कर सकते हैं और प्रदर्शन समस्याओं ("ठीक से" हैंडलिंग की लागत) का कारण बन सकते हैं, स्कीमा में इन विशेषताओं की लागत शून्य के करीब होनी चाहिए।
चूंकि RDB में अधिकांश स्पष्ट चक्र पदानुक्रमित संरचनाओं (ऑर्ग चार्ट, भाग, सबपार्टर, आदि) में होते हैं, यह दुर्भाग्यपूर्ण है कि SQL सर्वर सबसे खराब मानता है; यानी, स्कीमा चक्र == डेटा चक्र। वास्तव में, यदि आप RI बाधाओं का उपयोग कर रहे हैं, तो आप वास्तव में डेटा में एक चक्र का निर्माण नहीं कर सकते हैं!
मुझे संदेह है कि मल्टीपाथ समस्या समान है; यानी, स्कीमा में कई पथ आवश्यक रूप से डेटा में कई पथ नहीं लगाते हैं, लेकिन मुझे बहुपथ समस्या के साथ कम अनुभव है।
बेशक अगर SQL सर्वर ने चक्रों की अनुमति दी थी तो यह अभी भी 32 की गहराई के अधीन होगा, लेकिन यह ज्यादातर मामलों के लिए पर्याप्त है। (हालांकि यह एक डेटाबेस सेटिंग नहीं है बहुत बुरा है!)
"हटाएँ के बजाय" ट्रिगर या तो काम नहीं करते हैं। दूसरी बार एक तालिका का दौरा किया जाता है, ट्रिगर को अनदेखा किया जाता है। इसलिए, यदि आप वास्तव में एक झरना का अनुकरण करना चाहते हैं, तो आपको चक्र की उपस्थिति में संग्रहीत प्रक्रियाओं का उपयोग करना होगा। इसके बजाय डिलीट-ट्रिगर मल्टीपैथ मामलों के लिए काम करेगा।
सेलको, पदानुक्रम का प्रतिनिधित्व करने के लिए एक "बेहतर" तरीका सुझाता है जो साइकिल का परिचय नहीं देता है, लेकिन ट्रेडऑफ़ हैं।