मेरे अनुभव में, मैंने पूर्व में पढ़ी गई कई परियोजनाओं को डेटाबेस में संबंध परिभाषा नहीं दी थी, इसके बजाय उन्होंने केवल स्रोत कोड में उन्हें परिभाषित किया था। इसलिए मैं सोच रहा हूं कि डेटाबेस और स्रोत कोड में तालिकाओं के बीच संबंधों को परिभाषित करने के क्या फायदे / नुकसान हैं? और व्यापक प्रश्न आधुनिक डेटाबेस में अन्य उन्नत सुविधाओं जैसे कैस्केड, ट्रिगर्स, प्रक्रियाओं के बारे में है ... मेरे विचार में कुछ बिंदु हैं:
डेटाबेस में:
डिजाइन से सही डेटा। एप्लिकेशन त्रुटियों को रोकें जो अमान्य डेटा का कारण बन सकती हैं।
डेटा को सम्मिलित / अद्यतन करते समय एप्लिकेशन के लिए नेटवर्क राउंड ट्रिप को कम करें क्योंकि डेटा अखंडता की जांच करने के लिए एप्लिकेशन को अधिक क्वेरी (एस) करनी होती है।
स्रोत कोड में:
अधिक लचीला।
बेहतर जब कई डेटाबेस के लिए स्केलिंग, कभी-कभी संबंध क्रॉस-डेटाबेस हो सकता है।
डेटा अखंडता पर अधिक नियंत्रण। डेटाबेस को हर बार यह जांचने की आवश्यकता नहीं होती है कि एप्लिकेशन डेटा को संशोधित करता है (जटिलता हो सकती है O (n) या O (n log n) (?))। इसके बजाय, इसे आवेदन के लिए सौंप दिया गया है। और मुझे लगता है कि एप्लिकेशन में डेटा अखंडता को संभालने से डेटाबेस का उपयोग करने की तुलना में अधिक वर्बोस त्रुटि संदेश हो जाएंगे। उदाहरण: जब आप एक एपीआई सर्वर बनाते हैं, यदि आप डेटाबेस में संबंधों को परिभाषित करते हैं, और कुछ गलत हो जाता है (जैसे संदर्भित इकाई मौजूद नहीं है), तो आपको एक संदेश के साथ एक SQL अपवाद मिलेगा। ग्राहक को 500 वापस करने का सरल तरीका यह होगा कि "आंतरिक सर्वर त्रुटि" है और ग्राहक को पता नहीं होगा कि क्या गलत है। या सर्वर यह पता लगाने के लिए संदेश को पार्स कर सकता है कि क्या गलत है, जो मेरी राय में एक बदसूरत, त्रुटि-रहित तरीका है। यदि आप एप्लिकेशन को इसे संभालने देते हैं,
क्या कुछ और है?
संपादित करें: जैसा कि किलियन बताते हैं, प्रदर्शन और डेटा अखंडता के बारे में मेरी बात बहुत ही गलत है। इसलिए मैंने अपनी बात वहीं सुधारने के लिए संपादन किया। मैं पूरी तरह से समझता हूं कि डेटाबेस को संभालने देना एक अधिक कुशल और मजबूत दृष्टिकोण होगा। कृपया अद्यतन प्रश्न की जाँच करें और इसके बारे में कुछ विचार दें।
संपादित करें: आप सभी को धन्यवाद। मुझे मिले जवाबों से संकेत मिलता है कि बाधाओं / संबंधों को डेटाबेस में परिभाषित किया जाना चाहिए। :)। मेरे पास एक और प्रश्न है, क्योंकि यह इस प्रश्न के दायरे से बाहर है, मैंने इसे एक अलग प्रश्न के रूप में पोस्ट किया है: एपीआई सर्वर के लिए डेटाबेस त्रुटि । कृपया कुछ अंतर्दृष्टि छोड़ दें।