ओरेकल के मामले में, आप कॉलम 'आईडी' या 'नाम' या कुछ भी सामान्य नहीं रखना चाहेंगे ।
मुद्दा यह है कि डिफ़ॉल्ट रूप से पुराने संस्करणों में से , ओरेकल समान कॉलम नामों के आधार पर तालिकाओं में शामिल होने का प्रयास करेगा, इसलिए यदि मैंने सबकुछ अच्छी तरह से नामित किया है, तो मैंने अपनी तालिकाओं के बीच डिफ़ॉल्ट जुड़ने वाले खंड को निर्दिष्ट करना भी समाप्त कर दिया है।
लेकिन भले ही आप नहीं हैं ओरेकल का उपयोग कर , कई तालिकाओं में दिखाई देने वाले नामों को न काटकर, इसका मतलब यह भी है कि आपको तब हर बार अलियासिंग की परेशानी से गुजरना नहीं पड़ता है जब आपको दो तालिकाओं में चयन करना होता है:
SELECT
instrument.name as instrument_name,
instrument.abbr as instrument_abbr,
source.name as source_name,
source.abbr as source_abbr,
...
FROM ...
इसलिए, यदि मल्टी-टेबल चयन आदर्श हैं, तो लंबे कॉलम नाम आपको टाइप करने से बचाते हैं। (यदि आप एक समय में केवल एक तालिका का उपयोग कर रहे हैं ... तो क्या आपको वास्तव में एक रिलेशनल डेटाबेस की भी आवश्यकता है?
... और टाइपिंग की बचत हमें ओरेकल में एक और मुद्दे पर लाती है - कम से कम 8i में (वर्तमान संस्करण जब मैंने ओरेकल एसक्यूएल ट्यूनिंग और डेटा मॉडलिंग पाठ्यक्रम लिया) निष्पादन योजनाओं की कैशिंग केवल पहले इतने सारे वर्णों पर आधारित है क्वेरी (सटीक मान याद नहीं कर सकता ... 1024?), इसलिए यदि आपके पास ऐसे प्रश्न हैं, जो केवल उस खंड के अंत में सभी तरह से भिन्न होते हैं, और आपके द्वारा निकाले जा रहे स्तंभों की वास्तव में लंबी सूची है, तो आप निष्पादन हिट में भाग सकता है क्योंकि यह निष्पादन योजना को सही ढंग से कैश नहीं कर सकता है।
ओरेकल के पास यह चुनने पर एक मार्गदर्शिका थी कि वे क्या दावा करते हैं कि अच्छी तालिका और स्तंभ नाम हैं, जो मूल रूप से पत्र को हटाने के लिए एक मार्गदर्शिका है, यह लगभग 5-8 वर्णों का है, लेकिन मुझे कभी इसकी परवाह नहीं थी।
...
चूंकि चीजें इसके अलावा हैं:
- कॉलम हमेशा एकवचन होते हैं (टेबल हमेशा बहुवचन होते हैं)
- सभी नाम लोअर केस हैं, बस केस में कुछ केस-सेंसिटिव है
- उपरोक्त के परिणामस्वरूप, ऊंट मामले के बजाय अंडरस्कोर का उपयोग करें।
अद्यतन : उन लोगों के लिए जो ओरेकल के व्यवहार से परिचित नहीं हैं, ओरेकल एसक्यूएल पर अंतिम उदाहरण देखें : शर्तों में शामिल हों , जहां यह उल्लेख है:
क्या हुआ? कारण इस तथ्य में निहित है कि, आपूर्तिकर्ता से अलग, इन दो तालिकाओं में एक सामान्य नाम के साथ स्तंभों की एक और जोड़ी है। वह कॉलम नाम है। इसलिए, जब आप आपूर्तिकर्ता और भाग तालिकाओं के बीच एक प्राकृतिक जुड़ाव के लिए पूछते हैं, तो जुड़ना न केवल दो तालिकाओं के आपूर्तिकर्ता_एड कॉलम को बराबर करने से होता है, बल्कि दो तालिकाओं से नाम स्तंभ भी समान होता है। चूंकि, कोई आपूर्तिकर्ता नाम उसी आपूर्तिकर्ता से एक भाग के नाम के समान नहीं है, क्वेरी द्वारा कोई पंक्तियाँ वापस नहीं की जाती हैं।
'पुरानी ज्वाइन सिंटैक्स' (8i और उससे पहले) के तहत, 'NATURAL JOIN' डिफॉल्ट जॉइन व्यवहार था, और मेरा मानना है कि यह तब भी है जब आप एक जॉइन कंडीशन को निर्दिष्ट नहीं करते हैं। एक बार 'नैचुरल जॉइन' 9i में एक आधिकारिक विकल्प था, सामान्य अनुशंसा का उपयोग नहीं किया गया था , क्योंकि खराब कॉलम नामकरण आपको खराब कर सकता है, जो कि मैं अपने अच्छे कॉलम नामों की वकालत कर रहा हूं।