ओरेकल टेबल / कॉलम / इंडेक्स नाम 30 अक्षरों तक सीमित क्यों हैं?


149

मैं समझ सकता हूं कि कई साल पहले इस तरह की सीमा होगी, लेकिन आजकल निश्चित रूप से इस सीमा को आसानी से बढ़ाया जा सकता है। हमारे पास वस्तुओं के लिए नामकरण परंपराएं हैं, लेकिन हमेशा एक ऐसा मामला होता है, जहां हम इस सीमा तक पहुंच जाते हैं - विशेष रूप से विदेशी कुंजियों के नामकरण में।

क्या किसी को वास्तव में पता है कि यह बड़ा आकार क्यों नहीं है - या यह 11 जी में बड़ा है?


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

जब भी मैं घर में इस तरह की आपत्ति देखता हूं, मुझे लगता है कि यह गोली को काटने और इसे छांटने का समय है। यदि लोग ऐसी स्क्रिप्ट्स चला रहे हैं, जो ओरेकल वर्जन को अपग्रेड करते समय उन्हें चेक या मेंटेन नहीं करते हैं, तो उन्हें उस पसंद के परिणाम भुगतने दें। उन्हें एक अनुकूलता ध्वज प्रदान करें, आकार 4000 तक, फिर मुझे व्यर्थ समय बचाएं जब मैं नाम की जांच करने के लिए लगातार 30 से गिनती करने की वस्तुओं का निर्माण कर रहा हूं तो नाम 'ठीक है'।


3
चूंकि एक सीमा होने की आवश्यकता है? इसे 64 अक्षर बनाएं और आप शायद किसी से पूछेंगे कि यह 128 आदि क्यों नहीं है .. स्ट्रिंग का एक टुकड़ा कितना लंबा है?
अध्यक्ष

45
सच है, लेकिन 30 स्ट्रिंग का एक बहुत छोटा टुकड़ा है। यह क्यों नहीं किया जा सकता है 4000 - एक Varchar2 का आकार - क्या Oracle वास्तव में परवाह करता है कि एक बार क्वेरी को पार्स करने के बाद यह कितना समय है?
क्रिस गिल

22
@ TheChairman PostgreSQL मुझे 63 वर्णों तक सीमित करता है, और मुझे उस लंबाई सीमा के साथ कभी कोई समस्या नहीं हुई। यह काफी बड़ा है कि मेरे नाम फिट होंगे, और अगर मैं एक लंबे नाम पर विचार कर रहा हूं, तो यह पठनीयता पर नकारात्मक प्रभाव के बारे में सोचना शुरू करने का समय है। दूसरी तरफ, मैं अक्सर ओरेकल में नाम की लंबाई सीमा में चलता हूं और 30 चरित्र की सीमा के कारण अपने नाम की पठनीयता को कम करने के लिए मजबूर हूं। कुछ लोगों को 64 सीमा के बारे में शिकायत हो सकती है, लेकिन बहुत से लोगों को पहले से ही 30 चरित्र की सीमा के कारण समस्या है। यह उपयोग के मामलों में से 99% को पूरा करने के बारे में है, और Oracle यहां विफल रहता है।
jpmc26

1
आओ, ओरेकल, आप एक डायनासोर बन गए हैं! Microsoft SQL सर्वर को अधिक अनुकूल बनाने के लिए एक अच्छा काम कर रहा है। अब नाम लंबाई प्रतिबंध को आराम दें।
user3454439

1
Oracle 12cR2 के लिए फास्ट-फॉरवर्ड, यह अब 30 के बजाय 128 बाइट्स है। docs.oracle.com/en/database/oracle/oracle-database/12.2/newft/…
Stefan L

जवाबों:


71

मेरा मानना ​​है कि यह एएनएसआई मानक है।

संपादित करें:

वास्तव में, मुझे लगता है कि यह SQL-92 मानक है।

मानक का बाद का संस्करण 128 वर्ण नामों के लिए वैकल्पिक रूप से अनुमति देता प्रतीत होता है, लेकिन ओरेकल अभी तक इसका समर्थन नहीं करता है (या इसके लिए आंशिक समर्थन है, यह 30 अक्षरों की अनुमति देता है, इंफ़ार। एचएमएम।)

इस पृष्ठ पर "F391, लंबे पहचानकर्ता" के लिए खोजें ... http://stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/ap_standard_sql001 .htm

(रेफरी की तलाश)


1
हम्म, यह नहीं है कि मैं उस दस्तावेज़ को कैसे पढ़ता हूं। यह मेरे लिए कहता है कि F391 SQL / Foundation कल्पना (जो भी हो) में एक आइटम है, और उस Oracle के पास इसके लिए आंशिक समर्थन है, जिसमें 30 चरित्र की सीमा है।
स्केफमैन

21
आंशिक रूप से अनुपालन। क्या मजाक है। "हमारे पेंच आंशिक रूप से मीट्रिक मानकों का पालन करते हैं, सिवाय इसके कि वे मीट्रिक नहीं हैं।"
जेन्स शॉउडर

5
मैंने F391 युक्ति को विस्तार से नहीं पढ़ा है, लेकिन मैं (शायद गलत तरीके से) यह मान रहा हूं कि "लॉन्ग आइडेंटीफायर" का मतलब है, पहचानकर्ता की लंबाई 30 से 128 तक बढ़ जाना। इसलिए यह कहना कि आप "आंशिक रूप से" 30 अक्षरों की अनुमति देकर इसका समर्थन करते हैं। थोड़ा सा चुटीला। आप नए मानक का समर्थन नहीं करते हैं, आप अभी भी पुराने मानक का समर्थन करते हैं (यद्यपि नए मानक का 25% तरीका) जो कि समझ में आता है? !!?
cagcowboy

7
SQL-92 मानक यहां contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt है , लेकिन यदि आप "17.1 SQL आइटम डिस्क्रिप्टर क्षेत्रों का वर्णन" पढ़ते हैं तो यह नाम और स्कीमा जैसे पहचानकर्ता को कम से कम 128 की अनुमति देनी चाहिए। पात्र।
रिक

46
ओरेकल के फैनबॉय को 30+ चार पहचानकर्ताओं की उपयोगिता दिखाई नहीं देती है। "अपने नाम को सार्थक / वर्णनात्मक बनाएं, ऊंट मामले के बजाय अंडरस्कोर का उपयोग करें, और 30 वर्णों के नीचे रहें"। यह 30 से अधिक वर्ण कभी नहीं जाएगा । Amirite? अपने संक्षिप्ताक्षर को और अधिक पसंद करते हैं और जब कोई भी नाम समझ में नहीं आता है, तो पूरे दिन को पढ़ने / प्रलेखन को अपडेट करने में खर्च करें।
एडम जोन्स

45

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

  l_table_name VARCHAR2(30);
BEGIN
  SELECT table_name
    INTO l_table_name
    FROM dba_tables
   WHERE ...

अचानक तोड़ने के लिए क्योंकि DBA 15 साल पहले DBA_TABLES.TABLE_NAME%TYPEस्क्रिप्ट में VARCHAR2 (30) का इस्तेमाल करता था, जिससे बड़े पैमाने पर विद्रोह होता था। मैं बताता हूं कि ओरेकल के पास हजारों जगह हैं जहां इस तरह के काम विभिन्न पैकेजों और घटकों में वर्षों से किए गए हैं। सभी Retrofitting मौजूदा अब पहचानकर्ता समर्थन करने के लिए कोड एक जबरदस्त परियोजना है कि लगभग निश्चित रूप से उत्पन्न होगा कि जिस तरह से डेवलपर समय में अधिक लागत, गुणवत्ता आश्वासन समय, और नव शुरू की कीड़े की तुलना में यह लाभ उत्पन्न होगा।


13
+1 यह लगभग निश्चित रूप से ओरेकल के कई विरासत डिजाइन क्रिप्स में से एक है।
स्केफमैन

43
निश्चित रूप से एक जोड़ी को विकसित करने और इसे बढ़ाने के लिए इसका समय - एक ध्वज जोड़ें ताकि डीबीए इसे वापस 30 तक परिष्कृत कर सकें। इस तरह की विरासत के मुद्दों को हमेशा सामना करना चाहिए और हल करना चाहिए अन्यथा आप पूरे कोड आधार को अपंग कर देते हैं, और लोग बस चले जाएंगे कुछ और पर
क्रिस गिल

6
DBA लिखित कोड की सिर्फ लाखों पंक्तियाँ नहीं, बल्कि बहुत सारे oracle internal code भी इसमें कोई संदेह नहीं है। यह विषय स्टीवन फ्यूरस्टीन के साथ एक सत्र में आया और उन्होंने कहा कि उन्हें नहीं लगता कि वे इसे कभी बदलेंगे।
मैथ्यू वाटसन

10
वे इसे एक नई सुविधा के रूप में ट्रम्पेट नहीं कर सकते, या तो ... वे सीमा को विस्तारित करने में बहुत समय बिताएंगे, और फिर "अब आप 30 वर्णों से अधिक लंबे नामों का उपयोग कर सकते हैं" की घोषणा करते हैं। वे हंसी का पात्र होंगे।
स्केफमैन

9
यदि आप अभी भी 15 वर्ष पुरानी स्क्रिप्ट का उपयोग कर रहे हैं, तो कुछ बेहद गलत है । इसके अलावा, उन्हें ठीक करना एक समय की लागत (संभवतः निरंतर रखरखाव के लिए कुछ और के साथ) होगा, जबकि डेवलपर्स समय को बेकार में संक्षिप्त रूप से संक्षिप्त नामों को अनिश्चित काल तक क्राफ्ट करना जारी रखेंगे। @skaffman वे पहले से ही इसे ठीक नहीं करने के लिए एक हंसी का भंडार हैं (और अन्य डिजाइन निर्णयों के एक मेजबान जो आधुनिक युग में दयनीय हैं, जैसे कोई बूलियन या ऑटो-इंक्रीमेंटिंग प्रकार नहीं), जहां तक ​​मेरा संबंध है।
jpmc26

11

मैं इसे देख रहा था और Google के माध्यम से यह प्रश्न पाया, लेकिन यह भी पता चला कि Oracle 12c रिलीज़ 2 (12.2) के रूप में, यह अब सख्ती से मामला नहीं है। ( https://oracle-base.com/articles/12c/long-identifiers-12cr2 )

किसी बिंदु पर हर डीबीए या डेवलपर ने एक बिंदु मारा होगा जहां ऑब्जेक्ट नाम के लिए 30 वर्ण सीमा समस्या का कारण बनी है। SQL सर्वर या MySQL से Oracle में माइग्रेशन प्रोजेक्ट्स करते समय यह सीमा बेहद दर्दनाक हो सकती है। Oracle डेटाबेस 12cR2 में, अधिकांश पहचानकर्ताओं की अधिकतम लंबाई अब 128 वर्ण है।

( Http://blog.dbi-services.com/oracle-12cr2-long-identifiers/ ) के अनुसार, 12.2 में यह एक नई सुविधा है । उस पोस्ट के अनुसार, 12.1 अभी भी 30 वर्णों तक सीमित था।


संपादित करें: यहां आधिकारिक ओरेकल प्रलेखन की एक कड़ी है जो परिवर्तन की व्याख्या कर रही है। ( https://docs.oracle.com/cloud/latest/exadataexpress-cloud/CSDBF/longer-identifier-names.htm#CSDBF-GUID-F4CA155F-5.14-4705-8443-0A8C9E3F875C )

Oracle डेटाबेस 12c रिलीज़ 2 (12.2) के साथ शुरू, अधिकांश प्रकार के डेटाबेस ऑब्जेक्ट्स के लिए पहचानकर्ता नामों की अधिकतम लंबाई 128 बाइट्स तक बढ़ा दी गई है।


128 बाइट्स / 4 बाइट्स (यूनिकोड) = 32 वर्ण। कम से कम मेरी समझ यह है कि गैर यूनिकोड वर्णों के लिए 4 बाइट असामान्य नहीं है? मुझे आश्चर्य होगा कि अगर इसका मतलब है कि वे यूनिकोड का समर्थन कर रहे हैं? जैसे VARCHAR2(2)2 अक्षर नहीं बल्कि 2 बाइट का मतलब है।
सेठ

1
मैं आपकी बात देखता हूं, लेकिन वर्ण बनाम बाइट आपके डेटाबेस वर्ण सेट पर निर्भर करता है। यह सेटिंग चार डेटासेट्स (जैसे कि varchar2) के लिए एन्कोडिंग के साथ-साथ db आइडेंटिफ़ायर के लिए एन्कोडिंग को निर्धारित करता है। यह राष्ट्रीय चरित्र सेट के साथ विरोधाभास है, जिसका उपयोग नट डेटाैटिप के लिए किया जाता है। तो हां, यदि आपके पास एक एन्कोडिंग है, तो आपके पहचानकर्ता प्रति चरित्र 4 बाइट्स का उपयोग कर रहे हैं (यह मानते हुए कि इसे डीबी वर्ण सेट के रूप में इस्तेमाल किया जा सकता है), तो आपके पास अब 7. के बजाय 32 होगा। लेकिन मुझे लगता है कि अधिकांश उपयोग मामलों के लिए पहचानकर्ता होगा एकल-बाइट वर्ण।
कानमूरी २uri'१

6

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

उदाहरण के लिए, विदेशी प्रमुख बाधाओं के नामकरण का एक सम्मेलन

FK_<table1>_<table2> 

13 पात्रों या उससे कम के टेबल नामों को सीमित करता है; अधिकांश डेटाबेस को अधिक उपसर्गों और प्रत्ययों की आवश्यकता होती है, आगे तालिका नामों की लंबाई को सीमित करते हैं।


5

SQLERRM में बाधा उल्लंघन की सूचना मिलती है, जो 255 वर्णों तक सीमित है, और जो अधिकांश ग्राहक त्रुटियों को दिखाई देने के लिए उपयोग करते हैं। मुझे संदेह है कि बाधा नामों के स्वीकार्य आकार में वृद्धि से उल्लंघन की रिपोर्ट करने की क्षमता पर प्रभाव पड़ेगा (विशेषकर जहां पीएलए / एसक्यूएल कोड की कुछ परतों के माध्यम से बाधा का उल्लंघन किया गया है)।


तो, उह, उस तालिका को व्यापक बनाएं, फिर?
स्केफमैन

2
यह एक तालिका नहीं है, लेकिन क्लाइंट सॉफ़्टवेयर वास्तव में डेटाबेस से त्रुटियों को कैसे प्राप्त करता है।
गैरी मायर्स

@skaffman SQLERRM की लंबाई API / ABI विनिर्देशन है। इसे बदलने का अर्थ प्रत्येक ओसीआई चालक को ग्रह पर पैच करना होगा (अन्यथा बफर ओवररन)। वे OCI 13 में सर्वर को पहले बढ़ाने के लिए क्लाइंट में बदलाव कर सकते हैं और Oracle 15 जैसे कुछ में सर्वर, जहाँ OCI 10 क्लाइंट का समर्थन नहीं किया जाएगा, मुझे लगता है। (हो सकता है कि वे अभी इस पर विचार कर रहे हों, लेकिन oracle प्रमुख संस्करण केवल कुछ ही वर्षों में रिलीज़ होता है; और तब भी हम स्क्रिप्ट / एप्लिकेशन अपग्रेड दर्द में भाग सकते हैं, जब ऐप अलग-अलग सर्वर / क्लाइंट में माइग्रेट हो जाते हैं)।
काउबर्ट

4

मेरा मानना ​​है कि 30 चरित्र पहचानकर्ता लंबाई COBOL से आती है जिसे 1950 के दशक के अंत में मानकीकृत किया गया था। चूंकि COBOL प्रोग्राम SQL (और इससे पहले SEQUEL (और उससे पहले QUEL)) के मुख्य उपयोगकर्ता थे, यह पहचानकर्ता की लंबाई के लिए एक उचित संख्या की तरह प्रतीत होता है।


5
मेरा मानना ​​है कि ओरेकल का पहला संस्करण फोरट्रान में लिखा गया था, जो मुझे लगता है कि पहचानकर्ता की लंबाई सीमा 31 है। शायद यह प्रासंगिक है।
डेविड एल्ड्रिज

4

इन सभी 'बाधाओं' को प्रोसेसर आर्किटेक्चर द्वारा लगाए गए सीमाओं के जवाबों पर छोड़ दिया जाता है जो 70 के दशक से ओले हैं। चूंकि उस समय प्रोसेसर इस बिंदु पर विकसित हुए हैं कि ये सीमाएं अब आवश्यक नहीं हैं; वे अभी बचे हैं। हालांकि, उन्हें बदलना RDBMS के लेखकों के लिए एक बड़ा सौदा है। चूँकि ये लम्बाई सीमाएँ नीचे की ओर बदलती हुई सब कुछ को प्रभावित करती हैं, इसलिए यह कहना मुश्किल है कि यह एक लंबी प्रक्रिया का नाम हो सकता है, और शायद अन्य सामान जैसे कि एक्ससेप्शन रिपोर्टिंग, डेटा शब्दकोश इत्यादि को बहुत आगे और आगे तोड़ देगा। मुझे Oracle RDBMS के एक प्रमुख पुन: लिखने की आवश्यकता होगी।


2

प्रश्न का सीधा उत्तर यह है कि ओरेकल शैली पुराने विचारों से विरासत में मिली है जिसमें 30 बहुत कुछ लग रहा था, और बहुत कुछ ने विशिष्ट डेटाबेस में वास्तविक मेमोरी से शब्दकोश कैश को अनपिन करने के जोखिम को बढ़ा दिया होगा।

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

SQL92 का कभी ध्यान न रखें, यह ODBC अनुपालन है जो वास्तव में आज के सार्वभौमिक डेटाबेस के लिए मायने रखता है, और अन्य विक्रेताओं ने ओरेकल की तुलना में इसे बेहतर तरीके से संबोधित किया है। यहां तक ​​कि तेरदता, उदाहरण के लिए, जो कि एक व्यापक खिलाड़ी के रूप में नहीं देखा जाता है, दो नामों के लिए पूरा करता है, उद्धरण चिह्नों के साथ और उसके बिना, एक 30 चार सीमा के साथ पूर्व, बाद में एक पूर्ण ODBC कार्यान्वयन जहां अजीब लंबे पहचानकर्ताओं के लिए पूरा किया गया है। ।

यहां तक ​​कि पारंपरिक बड़े डेटाबेस क्षेत्र में, 30 अक्षर अक्सर एक समस्या होती है जहां नाम सार्थक, सुसंगत और यादगार बने रहते हैं। एक बार जब आप भूमिका-नाम विरासत के साथ विशेषज्ञ संरचनाओं को डिजाइन करना शुरू करते हैं, तो आप संक्षिप्त रूप से संक्षिप्त करना शुरू करते हैं, और स्थिरता जल्द ही मर जाती है, क्योंकि उदाहरण के लिए एक तालिका नाम या स्तंभ नाम के रूप में रेंडर किए गए समान पहचानकर्ता को एक मामले में आगे संक्षिप्त नाम की आवश्यकता होगी और दूसरे में नहीं । यदि महत्वपूर्ण संख्याओं में वास्तविक उपयोगकर्ताओं को ऐसी परतों पर आमंत्रित किया जाता है, तो परिणाम बहुत खराब होते हैं, और सौभाग्य से किसी भी उम्र बढ़ने वाले डेटाबेस के लिए मुख्य ड्राइव अब उपयोगकर्ता को ऑब्जेक्ट लेयर्स और बीआई टूल्स के माध्यम से डेटाबेस से अलग करना है।

यह डेटाबेस परत को डीबीए और डेटा आर्किटेक्ट टीमों को छोड़ देता है, जो शायद परेशान नहीं हैं। संक्षिप्त नाम योजनाएं काम करना अभी भी जीवन के लिए एक काम है, ऐसा लगता है।

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


ओरेकल को नहीं। ODBC एक Microsoft बच्चा है, जावा नहीं। यह अभी भी ओसीआई के खिलाफ जुड़ा एक अलग सहायक है (इस बात पर ध्यान दें कि इंस्टेंटक्लाइंट को कैसे तैनात किया जाता है - ओडीबीसी को तत्काल के साथ काम करने के लिए आपको ओसीआई चालक और ओडीबीसी इंस्टेंटक्लाइंट ज़िप दोनों की आवश्यकता है)। ओरेकल का प्राथमिक क्लाइंट प्लेटफॉर्म (विरासत प्रो * C / C / C ++ के अलावा) JDBC है, जो सीधे OCI से जुड़ा है, ODBC नहीं।
काऊबर्ट

1

उपरोक्त सभी टिप्पणियां सही हैं, लेकिन आपको लंबे नामों की प्रदर्शन लागत को ध्यान में रखना होगा। 1990 के दशक की शुरुआत में, जब इन्फ़ॉर्मिक्स ने विशाल बिलबोर्ड स्थापित किया "इंफॉर्मिक्स फास्टर ओरेकल!" ओरेकल मुख्यालय के बगल में 101 मार्ग पर, Informix ने केवल 18 वर्णों से कम तालिका नामों की अनुमति दी! कारण स्पष्ट है - उनके शाब्दिक रूप में तालिका के नाम (जैसे कि वास्तविक नाम 't138577321'or ऐसा कुछ) डेटा शब्दकोश में संग्रहीत हैं। लंबे समय तक बड़े डेटा शब्दकोश के समान नाम, और चूंकि डेटा शब्दकोश हर बार पढ़ा जाता है एक क्वेरी के लिए एक कठिन पार्स की आवश्यकता होती है, एक बड़ा डेटा शब्दकोश खराब प्रदर्शन के बराबर होता है ...


7
जब तक आप इसे अरबों बार नहीं कर रहे हैं-तब तक किसी भी आधुनिक सॉफ़्टवेयर में अड़चन के सटीक मिलान का कोई कारण नहीं है, जब तक कि आप इसे बिलियन नहीं कर रहे हैं। जब ओरेकल का यह हिस्सा पहली बार डिज़ाइन किया गया था, तो आकार-प्रदर्शन के विचार महत्वपूर्ण हो सकते हैं, लेकिन वे इन दिनों वास्तव में प्रासंगिक नहीं हैं।
सारा जी

-7

ठीक है, सीमा मौजूद है ...।

लेकिन क्या आपको वास्तव में एक टेबल / इंडेक्स / कॉलम का नाम देने के लिए 30 से अधिक वर्णों की आवश्यकता है ??

जब प्रश्न लिखते हैं, तो उस सीमा के साथ मुझे कुछ कॉलम / टेबल के नाम परेशान करने वाले लगते हैं। यदि सीमा अधिक होती है तो मैं उन तालिकाओं में भाग सकता हूं जिन्हें एक क्वेरी की आवश्यकता होती है जैसे:

select unique_identifier_column, 
time_when_the_user_remembered_to_change_the_row_in_the_receipt_table, 
foreign_key_to_the_ap_invoice_distributions_history_table_related_to_the_all_rows_table 
from ap_invoices_really_really_all_all_rows_present_in_this_ebs_table.

मैं विशाल शब्दों के लिए माफी मांगता हूं: पी


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

10
कई कारण हैं कि हमें 30 से अधिक वर्णों की आवश्यकता है, हालांकि आमतौर पर 30 वर्ण पर्याप्त हैं। कभी-कभी एक टेबल नाम को सार्थक होने के लिए पर्याप्त रूप से क्रिया करने की आवश्यकता होती है। उदाहरण के लिए, मेरे पास यह तालिका कॉल sch_PatternRunTimeException है, यह बिल्कुल 30 वर्ण लंबा है। अब, मुझे एक मिररिंग टेबल कॉल sch_DevPatternRunTimeException जोड़ना होगा। यह अतिरिक्त 3 अक्षर नामकरण मानक Oracle के लिए काम नहीं कर रहा है, MSSQL को कोई समस्या नहीं है। यह मुझे एक नए नाम के साथ आने के लिए मजबूर कर रहा है। तालिका का नाम बदलने योग्य है, लेकिन यह हमारे ग्राहकों के संचालन को प्रभावित करेगा, जिससे हम बचने की कोशिश करते हैं।
dsum

6
यदि 99.9% संभावित मामलों में +30 वर्ण कष्टप्रद हैं, तो इसका मतलब यह नहीं है कि वे अन्य 0.1% काम में आएंगे।
रेने Nyffenegger

14
आह्ह्ह्ह स्लीपी गप्प तर्क। केवल 4 अल्फ़ान्यूमेरिक वर्णों की एक सीमा हमें 1 मिलियन से अधिक टेबल संयोजनों में मिलेगी ताकि किसी को "4." से अधिक "वास्तव में" की आवश्यकता न हो। फिर भी हम यहाँ हैं। और यह वास्तव में 30 अक्षर नहीं है, यह 30 से कम अक्षर है क्योंकि मेरे पास्कल केस नामकरण सम्मेलन को केस संवेदनशीलता की कमी के साथ हटा दिया गया है और इसे अंडरस्कोर सीमांकित नामों से बदल दिया गया है। विभिन्न उपसर्गों / प्रत्ययों के साथ संयोजन करें और आप 20 वर्णों के लिए भाग्यशाली हैं। कौन नहीं बल्कि एक मजबूत सूचकांक नाम गूंज और अंडरस्कोर के एक हॉज के ऊपर एक उल्लंघन त्रुटि के साथ गूंज होगा?
b_levitt

सहमत इस मुद्दे को संबोधित नहीं कर रहे हैं। आम तौर पर मनुष्य को स्तंभ नामों की आवश्यकता नहीं होती है, लेकिन ऐसे बहुत से मामले होते हैं, जहाँ ऑब्जेक्ट नाम स्वतः उत्पन्न हो जाते हैं।
fool4jesus
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.