2010-03-02 28 views
26

मुझे वाक्यविन्यास मिल गया है लेकिन मुझे आश्चर्य है कि कोई व्यक्ति एक उदाहरणपूर्ण उपयोग केस प्रदान कर सकता है जहां डेटाबेस समानार्थी बहुत उपयोगी हैं।डेटाबेस समानार्थी शब्द का उपयोग कब किया जाना चाहिए?

+2

लिंक: http://www.dba-oracle.com/concepts/synonyms.htm –

+1

उदारता से बेकार फ़ीचर: http://vadimtropashko.wordpress.com/2012/12/12/synonyms-do-we-need -टेम/ –

उत्तर

16

परीक्षण करते समय नकली तालिकाओं को व्यवस्थित करने के लिए यह उत्कृष्ट है। उदाहरण के लिए, यदि आपकी स्रोत तालिका में लाखों रिकॉर्ड्स हैं और आप डेटा के एक छोटे से सबसेट का परीक्षण करना चाहते हैं, तो आप स्रोत तालिका को फिर से निर्देशित करने के लिए समानार्थी शब्द का उपयोग कर सकते हैं ताकि आप नियंत्रित कर सकें कि आप विभिन्न परिदृश्यों को मंचित कर सकते हैं।

इस तरह, आप अपनी स्रोत तालिका को प्रभावित किए बिना नकली तालिका में डेटा को अपडेट/हटा सकते हैं। जब आप स्रोत तालिका का उपयोग करने के लिए तैयार होते हैं, तो आपको केवल समानार्थी को फिर से निर्देशित करने की आवश्यकता होती है।

+0

बेशक, सार्वजनिक समानार्थी शब्द आपको PLMA/SQL और SQL कोड की पठनीयता बढ़ाने की schema.object वाक्यविन्यास की आवश्यकता के बिना किसी ऑब्जेक्ट को संदर्भित करने की अनुमति देते हैं। –

+2

@ डैरेन एटकिन्सन: और यदि आप कभी डेटाबेस को समेकित करने का निर्णय लेते हैं तो सार्वजनिक समानार्थी नाम उपनिवेशों का मौका बढ़ाते हैं। –

+0

पैकेज के मामले में वे कितने उपयोगी हैं, हाल ही में मैं अपने आवेदन से पैकेज तक पहुंच नहीं पा रहा था, भले ही निष्पादन अनुदान वहां था। समानार्थी बनाने के बाद मैं एप्लिकेशन से पैकेज तक पहुंचने में सक्षम था। – viveksinghggits

0

कहें, जब आपको किसी अन्य स्कीमा के खिलाफ काम करने के लिए खराब लिखित एप्लिकेशन (ALTER SESSION SET CURRENT_SCHEMA जारी नहीं करता है) कहने की आवश्यकता है।

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

+0

मैं इस विचार से असहमत हूं कि समानार्थी "ठीक से लिखे गए" अनुप्रयोगों के लिए बेकार हैं। मैं अपने आवेदन में हार्डकोडिंग स्कीमा नामों से बचने के लिए हर समय उनका उपयोग करता हूं। उदाहरण के लिए, मेरे पास एक दृश्य हो सकता है जो दो तालिकाओं में शामिल हो; अगर मुझे किसी तालिका को किसी अन्य स्कीमा में स्थानांतरित करने की आवश्यकता है, तो 'वैकल्पिक सत्र SET CURRENT_SCHEMA' काम नहीं करेगा। –

2

जब आपके पास डेटाबेस ऑब्जेक्ट नाम मौजूदा कोड के भीतर हार्ड-कोड किए गए हैं।

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

मैंने देखा है, उदाहरण के लिए, एक कोड जो कुछ उत्पादन सर्वर के लिए लिखा गया था। कोडर ने मुख्य तालिका के नाम को आसानी से हार्ड कोड किया है test_data, जिसने अपने वर्कस्टेशन पर ठीक काम किया। अपने कोड को फिर से लिखने के बजाय समानार्थी शब्दों का उपयोग करके मुझे घर जल्दी मिल गया।

5

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

एक उदाहरण मैंने हाल ही में देखा है: एक ही कंपनी द्वारा चलाए जा रहे कई वेब ऐप्स। उपयोगकर्ताओं के पास आमतौर पर इन ऐप्स में से एक से अधिक तक पहुंच होती है, और इन ऐप्स तक पहुंचने के लिए केवल एक उपयोगकर्ता खाता होगा। उपयोगकर्ता-खाता जानकारी USER_ACCOUNTS स्कीमा में संग्रहीत की जाती है, और अन्य सभी ऐप्स अपने स्वयं के स्कीमा में हैं और समानार्थी के माध्यम से USER_ACCOUNTS स्कीमा तक पहुंचते हैं।

10

Oracle documentation on synonyms देखें।

  • , दूरस्थ तालिकाओं के लिए नामों का उपयोग करने यानी अधिक डेटाबेस
  • टेबल्स है कि आप सभी के लिए सुलभ होने की जरूरत लिंक आसान प्रदान करना:

    अन्य उत्तर यहाँ के अलावा, वे भी आमतौर पर इस्तेमाल किया जाता है उपयोगकर्ताओं, यानी सार्वजनिक समानार्थी शब्द

1

सामान्य तौर पर, यह बुरा व्यवहार एसक्यूएल या पी एल * एसक्यूएल में स्कीमा नाम एम्बेड करने के लिए है। तो यदि आप कुछ कोड लिख रहे हैं जो किसी अन्य स्कीमा में किसी तालिका को संदर्भित करना चाहिए: "अन्य स्कैमा.ऑथटेबल से आईडी का चयन करें" आप तालिका के समानार्थी को परिभाषित करने के लिए सबसे अच्छे हैं (अन्य नाम के लिए समानार्थी अन्य व्यर्थ बनाओ। अन्यथा) और "चयन आईडी अन्यटेबल से "।

इस तरह, यदि अन्यटेबल एक अलग स्कीमा नाम पर चलता है, या आपके पास सिस्टम की एक और स्थापना है जो एक अलग स्कीमा नाम का उपयोग करती है तो आप कोड को बदलने के बजाय समानार्थी को फिर से परिभाषित कर सकते हैं।

इसका उपयोग समानार्थी को दोबारा परिभाषित करके उसी कोड के साथ दो स्कीमा के बीच स्विच करने के लिए भी किया जा सकता है।

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