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