2010-05-12 5 views
7

मुझे डेटा वेयरहाउसिंग में मेरा पहला एक्सपोजर मिल रहा है, और मुझे आश्चर्य है कि तथ्यों और आयामों के बीच विदेशी कुंजी बाधाएं आवश्यक हैं। क्या उन्हें रखने के लिए कोई बड़ी डाउनसाइड्स नहीं हैं? मैं वर्तमान में एक रिलेशनल स्टार स्कीमा के साथ काम कर रहा हूं। पारंपरिक अनुप्रयोगों में मुझे उनका उपयोग करने के लिए उपयोग किया जाता है, लेकिन मुझे आश्चर्य हुआ कि क्या इस मामले में उनकी आवश्यकता है। मैं वर्तमान में एक SQL सर्वर 2005 वातावरण में काम कर रहा हूँ।एक स्टार स्कीमा में, तथ्यों और आयामों के बीच विदेशी कुंजी बाधाएं हैं?

अद्यतन: रुचि रखने वालों के लिए मैं एक ही प्रश्न पूछने पर poll पर आया।

+0

संभावित डुप्लिकेट [क्या यह डेटावेयर हाउस (रिश्ते) में विदेशी कुंजी रखने का अच्छा अभ्यास है?] (Http://stackoverflow.com/questions/2690818/is-it-good-practice-to-have-foreign- चाबियाँ-इन-ए-डाटावायरहाउस-रिश्तों) –

उत्तर

14

अधिकांश डेटा-गोदामों (DW) की कमी के रूप में लागू विदेशी चाबियाँ, की जरूरत नहीं है क्योंकि:

  • सामान्य, विदेशी कुंजी बाधा में पर ट्रिगर करेगा: एक तथ्य तालिका में एक सम्मिलित करें, किसी भी कुंजी-अपडेट , और एक आयाम तालिका से एक हटा दें।

  • लोडिंग प्रक्रिया के दौरान लोडिंग, इंडेक्स और बाधाओं को छोड़ने के दौरान, ईटीएल आवेदन द्वारा डेटा अखंडता लागू की जाती है।

  • एक बार टेबल लोड होने के बाद, डीडब्ल्यू अनिवार्य रूप से केवल पढ़ने के लिए है - बाधा पढ़ने पर ट्रिगर नहीं होती है।

  • लोडिंग के बाद किसी भी आवश्यक अनुक्रमणिका को फिर से बनाया गया है।

  • डीडब्लू में हटाना एक नियंत्रित प्रक्रिया है। आयामों से पंक्तियों को हटाने से पहले, पंक्तियों की चाबियों को हटाने के लिए तथ्य सारणी पूछी जाती है - हटाना केवल तभी अनुमति दी जाती है जब वे कुंजी किसी भी तथ्य तालिका में मौजूद न हों।

बस मामले में, तथ्यों की तालिका में अनाथ रिकॉर्ड का पता लगाने के लिए समय-समय पर चलने वाले प्रश्नों के लिए आम बात है।

+0

महान प्रतिक्रिया दमिर के लिए धन्यवाद। तथ्य यह है कि सिस्टम अनिवार्य रूप से केवल पढ़ा गया था जिससे मुझे बाधाओं की आवश्यकता पर सवाल उठाना शुरू हो गया। – Garett

+2

मुझे यकीन नहीं है कि मुझे यहां या इसी तरह के प्रश्न में जोड़ना चाहिए, लेकिन ... यदि अखंडता एक मुद्दा है तो आप हमेशा अखंडता कार्यों या संग्रहीत प्रक्रियाओं को सही कर सकते हैं जो "अनाथाश्रम" तथ्यों की तलाश में हैं। (पंक्तियां जहां विदेशी कुंजी समझ में नहीं आती हैं)। फिर आप अपने डेटाबेस पर लोड के अगले चक्र के बाद/उसके बाद/बाद में उन्हें साफ़ कर सकते हैं। – Markus

+0

"बाधा को पढ़ने पर ट्रिगर नहीं होता है" जबकि एक बाधा असफल होने की संभावना एक पठन पर नहीं हो सकती है, क्योंकि एफके आरआई को आम तौर पर एक इंडेक्स का उपयोग करके कार्यान्वित/लागू किया जाता है, जो पढ़ने पर निष्पादन योजना में कारक हो सकता है - सभी बाधाओं की तरह, निष्पादक निष्पादन योजना को प्रभावित करने के लिए संभावित रूप से किसी भी बाधा का उपयोग कर सकते हैं। –

2

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

3

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

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

+0

मैं ज्यादातर सहमत हूं। हालांकि मैंने यह कहा होगा कि "विदेशी कुंजी होने से डेटाबेस को सही सूचकांक चुनने की अनुमति मिलती है क्योंकि यह पता चलता है कि संबंध मौजूद हैं।" तो मुझे लगता है कि आपको उनका होना चाहिए, लेकिन मुझे नहीं लगता कि आपको उनकी आवश्यकता है। – MJB

+0

हाँ, जैसा कि मैंने कहा था, हमें उच्च प्रदर्शन और अखंडता के कारण होना चाहिए। लेकिन अगर हमें उनसे छुटकारा पाना है, तो आगे बढ़ना :) – vodkhang

+0

+1 अनुक्रमण और प्रदर्शन के बारे में अच्छा अंक। – Garett

2

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

8

हम उनका उपयोग करते हैं, और हम इसके साथ खुश हैं।

Is it good practice to have foreign keys in a datawarehouse (relationships)?

वहाँ भूमि के ऊपर है, लेकिन आप हमेशा उसे पुन: सक्षम लोड होने के दौरान बाधा अक्षम कर सकते हैं।

जगह में बाधा होने से ईटीएल कीड़े और मॉडलिंग दोषों को पकड़ सकते हैं।

1

आशा है कि यह धागा अभी भी सक्रिय है। मेरी सोच है: कई आयामों और अभिलेखों के साथ बड़ी तथ्य सारणी के लिए, विदेशी कुंजी आवेषण और अपडेट धीमा कर देगी ताकि एक तथ्य तालिका लोड हो जाए, विशेष रूप से यह आकार में बढ़ जाती है। तालिका लोड होने के बाद पूछताछ के लिए इंडेक्स का उपयोग किया जाता है, इसलिए उन्हें आवेषण/अपडेट के दौरान अक्षम किया जा सकता है और फिर पुनर्निर्मित किया जा सकता है। विदेशी कुंजी संबंध महत्वपूर्ण नहीं है विदेशी कुंजी: यह वास्तव में ईटीएल प्रक्रिया में निहित है। मैंने पाया है कि विदेशी चाबियाँ असली दुनिया डाटावायरहाउस में चीजों को धीमा कर देती हैं। आपको एक वर्टिकल विदेशी कुंजी का उपयोग करने की आवश्यकता है: संबंध उनका है लेकिन बाधा नहीं है। यदि आप डाटावायरहाउस में विदेशी प्रमुख संबंधों को नुकसान पहुंचाते हैं तो आप कुछ गलत कर रहे हैं। यदि आप उन्हें आवेषण के दौरान अक्षम करते हैं और एक विसंगति या अनाथ है, तो आप उन्हें पुन: सक्षम नहीं कर पाएंगे, तो बिंदु क्या है। डीडब्ल्यू का पूरा बिंदु तेजी से पहुंच और पूछताछ है। विदेशी कुंजी असंभव बनाती है। दिलचस्प बहस: नेट कीव

2

पर जहाँ तक मुझे पता है FKS इस सवाल का पता लगाने के लिए आसान नहीं, प्रश्नों में तेजी लाने के। इसके अलावा, कई बीआई समाधान उन्हें एकीकरण परत में उनका फायदा उठाते हैं। तो मेरे लिए वे डीडब्ल्यू में जरूरी हैं।

संबंधित मुद्दे