क्या मेरा मल्टी-सर्वर आरडीबीएमएस या मेरा एप्लीकेशन डेटाबेस रेफ़रेंशियल इंटीग्रिटी संभाल सकता है?


16

डेटाबेस प्रबंधन प्रणाली (इस मामले में, एमएस एसक्यूएल 2005) या एप्लिकेशन के द्वारा विदेशी कुंजी, बाधाएं, डिफ़ॉल्ट मान और इस तरह की वस्तुओं को संभालना चाहिए? मैंने दोनों पक्षों से राय सुनी है और मुझे ईमानदारी से यकीन नहीं है कि किस रास्ते पर जाना है।

एक मौका है कि हम कई सर्वरों / डेटाबेसों को फैलाएंगे और मुझे नहीं लगता कि लिंक किए गए सर्वरों में विदेशी कुंजी का उपयोग किया जा सकता है। इसके अलावा, डेटाबेस डिजाइन में कुछ परिपत्र संदर्भ हैं जो मुझे ON UPDATE CASCADEहर चीज पर उपयोग करने से रोकता है ।

डेटाबेस MS SQL 2005 (संभवतः 2008) है और इसके साथ सभी इंटरैक्शन एप्लिकेशन के माध्यम से जाने चाहिए।


3
मेरे पास सीखने के लिए यहां कुछ है क्योंकि मैं आरडीबीएमएस का उपयोग नहीं कर सकता।
बिष्टांग

जवाबों:


10

यदि आपके आवेदन के बाहर डीबी को संशोधित करने का कोई मौका है, तो आप डेटाबेस में बाधाओं को चाहते हैं। यदि DB है और हमेशा आवेदन के पीछे के छोर से अधिक कुछ नहीं होगा, तो आप उन्हें छोड़ सकते हैं, हालांकि मैं उन्हें सिर्फ मामले में दस्तावेज दूंगा और शायद अगर प्रदर्शन हिट बहुत बुरा नहीं था तो बस उन्हें रखें। (पीपुल्सॉफ्ट सॉफ्टवेयर इस तरह से काम करता है - बाधाएं सॉफ्टवेयर में हैं, और (मैं इसे नहीं बना रहा हूं) यह सब कुछ Oracle पर SYS के रूप में चलाता है।)

आप इस तरह की चीजें चाहते हैं कि आवेदन पर नजर रखी जा सके, इसलिए यह समझदारी से प्रतिक्रिया कर सकता है और उपयोगकर्ता के लिए डेटाबेस त्रुटि संदेश को वापस तोता नहीं है।

और, हां, यह दोहरा कवरेज है, लेकिन इसके बिना आप संभवत: निवारक डेटा भ्रष्टाचार या खराब उपयोगकर्ता इंटरफ़ेस प्राप्त करने जा रहे हैं।


5

आदर्श रूप से, दोनों। आपके पास DB हैंडल नहीं होना चाहिए , लेकिन फिर, यदि ऐप डेटा के साथ आता है जिसे DB अस्वीकार कर देगा, तो यह एक रनटाइम त्रुटि है, इसलिए ऐप में कम से कम कुछ कोड होना चाहिए जो संदर्भात्मक अखंडता को संरक्षित करने के लिए समर्पित हो। इसके अलावा, DB में SQL में सही बाधाओं को सेट करना क्लाइंट-साइड के लिए कोड सेट करने की तुलना में बहुत सरल है, इसलिए DB पर इसे करने से आपके द्वारा किए जाने वाले काम की मात्रा बहुत कम हो जाती है।


1

यदि यह महत्वपूर्ण है, तो डेटाबेस को संभाल लें। इस तरह, आपको अपने आवेदन के बाहर डेटाबेस तक पहुँचने और किसी को बदलने या कुछ असंगत या डुप्लिकेट डेटा दर्ज करने के बारे में चिंता करने की ज़रूरत नहीं है। जब तक कि यह कुछ उच्च-स्तरीय अनुप्रयोग-विशिष्ट सामान (जैसे "केवल विभाग X के उपयोगकर्ताओं के पास ZZZ का एक एक्सेस क्लास समूह 999 के लिए होने की अनुमति होनी चाहिए), लेकिन इसे आमतौर पर" संदर्भात्मक "अखंडता के रूप में संदर्भित नहीं किया जाता है।


1

मैं कहूंगा कि डेटाबेस में रखो। यदि आप एक स्थायी ढांचे का उपयोग कर रहे हैं, तो यह स्वचालित रूप से चाबियाँ उठाएगा।


1

दोनों निश्चित रूप से जाने का रास्ता है। आप अपने कोड में सत्यापन तर्क को खराब अपडेट और आवेषण को रोकने के साथ-साथ उपयोगकर्ताओं को यह बताना चाहेंगे कि क्या गलत था और इसे कैसे ठीक किया जाए। और डेटाबेस को चीजों को बैक-स्टॉप करने के लिए अगर कुछ में आया और सत्यापन के माध्यम से नहीं चला तो यह चीजों को नहीं तोड़ देगा लाइन एक अच्छी बात है।

आपको डेटाबेस सामान को उच्च-स्तर पर रखना चाहिए। ईजी, संदर्भ योग्य पूर्णता लागू करते हैं और शायद कुछ शून्य नहीं होते हैं। लेकिन लंबाई या स्वरूपों को बाधित करने के बारे में चिंता न करें क्योंकि यह पूरी तरह से आवेदन पूरी तरह से प्रस्तुत किया गया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.