PostgreSQL नामकरण सम्मेलनों


191

मुझे PostgreSQL नामकरण सम्मेलनों के बारे में एक विस्तृत मैनुअल कहां मिल सकता है? (तालिका नाम बनाम ऊंट मामले, अनुक्रम, प्राथमिक कुंजी, बाधाएं, अनुक्रमित, आदि ...)


ठीक है, अगर हम थोड़ा और आगे बढ़ेंगे और सामान्य नामकरण के तनाव को देखेंगे तो मैं इस उत्तर की जाँच करने की सलाह देता हूँ: stackoverflow.com/questions/4702728/…
vyegorov

जवाबों:


250

तालिकाओं के नाम, मामले, आदि के बारे में, प्रचलित सम्मेलन है:

  • SQL कीवर्ड: UPPER CASE
  • नाम (पहचानकर्ता): lower_case_with_underscores

उदाहरण के लिए :

UPDATE my_table SET name = 5;

यह पत्थर में नहीं लिखा है, लेकिन निचले मामले में पहचानकर्ताओं के बारे में बिट अत्यधिक अनुशंसित है, आईएमओ। Postgresql पहचानकर्ता मामले को असंवेदनशील व्यवहार करता है जब उद्धृत नहीं किया जाता है (यह वास्तव में आंतरिक रूप से कम करने के लिए उन्हें तह करता है), और जब उद्धृत किया जाता है तो संवेदनशील रूप से मामला; बहुत से लोग इस आइडिओसिप्रेस के बारे में नहीं जानते हैं। हमेशा लोअरकेस का उपयोग करना आप सुरक्षित हैं। वैसे भी, यह उपयोग करने के लिए स्वीकार्य है camelCaseया PascalCase(या UPPER_CASE), जब तक कि आप संगत कर रहे हैं: (! और इस स्कीमा निर्माण भी शामिल है) या तो उद्धरण पहचानकर्ता को हमेशा या कभी।

मुझे कई और सम्मेलनों या स्टाइल गाइड के बारे में पता नहीं है। सरोगेट कुंजी आम तौर पर एक अनुक्रम (आमतौर पर serialमैक्रो के साथ ) से बनाई जाती है , उन अनुक्रमों के लिए उस नामकरण से चिपकना सुविधाजनक होगा यदि आप उन्हें हाथ से बनाते हैं ( tablename_colname_seq)।

कुछ चर्चाएँ यहाँ देखें , यहाँ और (सामान्य एसक्यूएल के लिए) , यहाँ सभी संबंधित लिंक के साथ।

नोट: Postgresql 10 ने धारावाहिक केidentity लिए SQL- अनुरूप प्रतिस्थापन के रूप में कॉलम पेश किया ।


3
एफडब्ल्यूआईडब्ल्यू, एकमात्र आईडीओसिंक्रैसी यह है कि पीजी लोअर केस में तह करता है, जहां एसक्यूएल मानक कहता है कि इसे ऊपरी मामले में मोड़ना चाहिए। DBMSs जो कि फोल्ड होने में विफल रहते हैं, वे अजीब गैर-मानक हैं।
क्रेग रिंगर

6
Postgres के नए उपयोगकर्ता के रूप में, यह बहुत निराशाजनक है। टाइपिंग कोट्स के बीच हर समय चुना जाना या एक बदसूरत नामकरण सम्मेलन का उपयोग करना। यह गधा चूसता है।
d512

1
@ user1334007 सम्मेलन बदसूरत नहीं है - और ऊपर क्रेग की टिप्पणी पढ़ें। और अगर आपको तालियां बनाते समय (यदि आप सुसंगत हैं, तो आपने उद्धृत नहीं किया है) उद्धृत करने की कोई आवश्यकता नहीं है।
leonbloy

4
@leonbloy, यदि आप तालिका बनाते समय उद्धरण नहीं देते हैं, तो Postgres आपके तालिका नामों और फ़ील्ड नामों को कम कर देगा। जब आप अपने प्रश्नों को लिखते हैं तो आप ऊंट के मामले का उपयोग कर सकते हैं लेकिन आपका परिणाम सभी लोअरकेस को दिखाएगा, जो कि पढ़ने में कठिन होता है जब खेतों में कई शब्द (अंतिम रूप) होते हैं। यदि आप चाहते हैं कि आपके कॉलम के नाम क्वेरी परिणामों में पठनीय हों, तो आपको सब कुछ उद्धृत करना होगा या साँप के मामले का उपयोग करना होगा, जो कि, IMO, बदसूरत है। यह बहुत बेहतर होगा अगर पोस्टग्रैज ने आपके नाम को अकेले छोड़ दिया और आपको उद्धरण चिह्नों की आवश्यकता नहीं थी।
d512

11
मुझे ऊपरी मामले में कीवर्ड से नफरत है, बस उससे नफरत है, सम्मेलन या नहीं। कीवर्ड के संबंध में कोई केस-निर्भरता नहीं है। मैं सभी निचले मामलों को पसंद करता हूं। हां, मुझे पता है कि यह केवल एक प्राथमिकता है, लेकिन यह भी एक मात्र टिप्पणी है। ;-)
क्रेग

28

वास्तव में एक औपचारिक मैनुअल नहीं है, क्योंकि कोई एकल शैली या मानक नहीं है।

जब तक आप पहचानकर्ता के नामकरण के नियमों को समझते हैं तब तक आप जो चाहें उपयोग कर सकते हैं।

व्यवहार में, मुझे इसका उपयोग करना आसान लगता है lower_case_underscore_separated_identifiersक्योंकि "Double Quote"केस, स्पेस आदि को संरक्षित करने के लिए यह हर जगह आवश्यक नहीं है ।

यदि आप अपनी मेज और कार्यों को नाम देना चाहते हैं, तो आप "@MyAṕṕ! ""betty"" Shard$42"ऐसा करने के लिए स्वतंत्र होंगे, हालांकि यह हर जगह टाइप करने के लिए दर्द होगा।

समझने के लिए मुख्य बातें हैं:

  • जब तक डबल-कोटेड, पहचानकर्ता मामले मुड़ा लोअर केस कर रहे हैं, इसलिए MyTable, MYTABLEऔर mytableसभी एक ही बात कर रहे हैं, लेकिन "MYTABLE"और "MyTable"भिन्न हैं;

  • जब तक डबल-कोटेड:

    SQL पहचानकर्ता और प्रमुख शब्द एक अक्षर (az, लेकिन यह भी वर्णनात्मक निशान और गैर-लैटिन अक्षर) या एक अंडरस्कोर (_) अक्षरों के साथ शुरू होना चाहिए। एक पहचानकर्ता या कुंजी शब्द में इसके बाद के अक्षर अक्षर, अंडरस्कोर, अंक (0-9) या डॉलर चिह्न ($) हो सकते हैं।

  • यदि आप उन्हें पहचानकर्ता के रूप में उपयोग करना चाहते हैं, तो आपको कीवर्ड्स को डबल-कोट करना होगा।

व्यवहार में, मैं दृढ़ता से सलाह देता हूं कि आप कीवर्ड को पहचानकर्ता के रूप में उपयोग करें । कम से कम आरक्षित शब्दों से बचें। सिर्फ इसलिए कि आप एक तालिका का नाम दे सकते हैं इसका मतलब यह नहीं है कि आपको चाहिए।"with"


1
पहचानकर्ता के नामकरण के नियमों पर डॉक्टर को जोड़ने के लिए धन्यवाद । मुझे उस विशेष विषय को खोजने में कठिनाई हुई।
तुलसी बॉर्क

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