2010-05-20 20 views
110

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

+0

अच्छा, अगर हम थोड़ा आगे जाएंगे और सामान्य नामकरण संयोजक देखेंगे तो मैं अत्यधिक इस उत्तर की जांच करने की अनुशंसा करता हूं: http://stackoverflow.com/questions/4702728/relational-table-naming-convention/4703155#4703155 – vyegorov

उत्तर

143

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

  • एसक्यूएल कीवर्ड: UPPER CASE
  • नाम (पहचानकर्ता): lower_case_with_underscores

For example:

UPDATE my_table SET name = 5; 

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

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

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

+0

क्या अपरकेस या लोअरकेस में डेटा प्रकारों को संदर्भित करने और संदर्भ कार्यों के संदर्भ में कोई सम्मेलन है? (यानी 'regclass' या' REGCLASS' और 'to_timestamp (0)' या 'TO_TIMESTAMP (0)')? मुझे लगता है कि हम पहचानकर्ताओं के रूप में प्रकार और कार्यों पर विचार करते हैं, और इसलिए लोअरकेस? – d11wtq

+2

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

+1

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

16

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

तो जब तक आप the rules of identifier naming आप उपयोग कर सकते हैं जो कुछ भी आप की तरह समझते हैं

व्यवहार में, मैं क्योंकि यह "Double Quote" उन्हें हर जगह के मामले में, रिक्त स्थान को संरक्षित करने, आदि

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

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

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

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

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

  • यदि आप उन्हें पहचानकर्ता के रूप में उपयोग करना चाहते हैं तो आपको कीवर्ड को दोबारा उद्धृत करना होगा।

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

+0

डॉक्टर [पहचानकर्ता नामकरण के नियम] पर लिंक करने के लिए धन्यवाद (http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS)। मुझे उस विशेष विषय को खोजने में कठिनाई थी। –

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