स्तंभ नामकरण सम्मेलनों और सर्वोत्तम प्रथाओं का नामकरण


19

जब यह कॉलम नामकरण की बात आती है, तो मैं सर्वोत्तम प्रथाओं पर कुछ विशेषज्ञ की राय चाहूंगा ।

पृष्ठभूमि यह है कि विकिपीडिया के अनुसार , निम्नलिखित वाक्यविन्यास,

SELECT ... FROM Employees JOIN Timesheets USING (EmployeeID);

की तुलना में अधिक कुशल है

SELECT ... FROM Employees JOIN Timesheets ON (Employees.EmployeeID = Timesheets.EmployeeID);

हालाँकि, सभी प्राथमिक कुंजी स्तंभों के JOIN ... USINGसिंटैक्स केवल वैश्विक रूप से अद्वितीय नाम हैं । इस प्रकार मुझे आश्चर्य है कि क्या यह सही चीज माना जाता है।

व्यक्तिगत रूप से, मैं हमेशा पीके कॉलम idऔर विदेशी कुंजी कॉलम के साथ तालिकाओं का निर्माण करता था othertable_id। लेकिन इस तरह इसका उपयोग करना संभव नहीं है USINGया NATURAL JOIN

टेबल डिजाइन के लिए डिजाइन शैलियों या सर्वोत्तम अभ्यास गाइडों के किसी भी लिंक की सराहना की जाएगी, भी!


3
विकिपीडिया गलत है। पहला संस्करण किसी भी तरह से दूसरे की तुलना में अधिक कुशल नहीं है। हुड के तहत डेटाबेस
पूर्ण

जवाबों:


13

इससे पहले एसओ से पूछा जा चुका है।

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

तो एक कर्मचारी तालिका के लिए मेरे पास होगा

EmployeeID
EmployeeName
Comment
Salary
StartDate
EndDate
InsertedDateTime
...

और विकिपीडिया वास्तव में कहता है:

USING निर्माण मात्र सिंथैटिक शुगर से अधिक है, हालाँकि, चूंकि परिणाम सेट स्पष्ट विधेय के साथ संस्करण के परिणाम सेट से भिन्न होता है। विशेष रूप से, यूएसइंग सूची में उल्लिखित कोई भी कॉलम केवल एक बार ही दिखाई देगा, एक अयोग्य नाम के साथ, प्रत्येक तालिका में शामिल होने के लिए एक बार के बजाय।

वह एक कम स्तंभ है। आप कभी SELECT *भी किसी भी तरह का उपयोग नहीं करेंगे ताकि बिंदु मूट हो ...


मैंने SO - मूर्खतापूर्ण खोज करने के बारे में नहीं सोचा था। क्या आपके पास किसी विशेष रूप से अच्छे SO प्रश्नों के लिंक हैं? वैसे भी, धन्यवाद, मैं "अद्वितीय आईडी" के लिए छड़ी ताकि आगे नामकरण होगा!
केरेक एसबी

@ केर एसबी: वास्तव में, मैंने नहीं किया है। मैं उन्हें नजरअंदाज कर देता हूं क्योंकि हर एक जवाब दिया जाता है या जल्दी बंद हो जाता है :-) क्षमा करें
gbn

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

यह प्रोग्रामर पर था। आपके लिए एक अच्छी बड़ी रोटी की लड़ाई ... प्रोग्रामर.स्टैकएक्सचेंज.
com

6

निम्नलिखित पुस्तक का उपयोग SQL एंटीपैटर के रूप में आईडी का उपयोग करने के बारे में बात करता है और मैं लेखक से कहता हूं कि यह है। http://www.amazon.com/SQL-Antipatterns-Programming-Pragmatic-Programmers/dp/1934356557/ref=sr_1_1?s=books&ie=UTF8&qid=1330025134&sr=1-1

यह एक विशेष समस्या है जब आप जटिल रिपोर्टिंग कर रहे होते हैं और आपको एक से अधिक आईडी की आवश्यकता होती है। Tablename ID का उपयोग करने से सही FK की पहचान करना आसान हो जाता है (जैसा कि उनका एक ही नाम है) और गलत चीज़ में शामिल होने से होने वाली त्रुटियों की संभावना को कम करता है।

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


4

यह स्पष्ट रूप से तालिका नाम और स्तंभ नाम देना बेहतर है जैसे Employees.EmployeeID उन भावों के साथ जहां एक मौजूद है

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