तालिका और विचारों का नामकरण करते समय मुझे किस मानक का पालन करना चाहिए?


20

तालिका और विचारों का नामकरण करते समय मुझे किस मानक का पालन करना चाहिए? उदाहरण के लिए, टेबल नामों की शुरुआत में tbl_ जैसी कोई चीज़ डालना अच्छा है? क्या मुझे किसी तरह ct_, lut_, या codes_ की तरह कोड / लुकअप टेबल को डिज़ाइन करना चाहिए? क्या कोई अन्य है / don'ts?

मैं एमएस एसक्यूएल सर्वर का उपयोग कर रहा हूं और कई तालिकाओं के साथ कई डेटाबेस हैं इसलिए यह अच्छा होगा कि हम कुछ सहायक तर्कसंगत के साथ मानक के रूप में उपयोग कर सकें।

जवाबों:


29

ठीक है, पहले कभी टेबल के नाम के सामने tbl नहीं लगाएं। यह एक मेज है, हम पहले से ही अब। इसे हंगेरियन नोटेशन कहा जाता है, और लोगों ने 5+ साल पहले ऐसा करना बंद कर दिया था।

बस वस्तु को उसी के आधार पर कहते हैं। यदि कोई टेबल कर्मचारी डेटा रखता है तो उसे "कर्मचारी" कहते हैं। अगर यह कंप्यूटर के बारे में जानकारी रखता है तो इसे "कंप्यूटर" कहते हैं। यदि यह कर्मचारियों को कंप्यूटर मैप करता है, तो इसे "EmployeeComputer" या "ComputerEmployee" कहते हैं (व्यक्तिगत रूप से मुझे "EmployeeComputer" बेहतर लगता है)।

उपयोग करने के लिए कोई वास्तविक सही नामकरण सम्मेलन नहीं है (हंगरी नोटेशन का उपयोग नहीं करने के अलावा)। जब तक ऑब्जेक्ट नाम समझ में आता है कि यह महत्वपूर्ण है।


11
इसके अलावा, कृपया बहुवचन संज्ञाओं के रूप में तालिकाओं के नाम न रखें, जैसा कि मैंने कर्मचारियों, Cumputers का उदाहरण देखा है .. हम सभी जानते हैं कि तालिकाओं को कई पंक्तियों को प्राप्त करना चाहिए, एक नहीं ..
Marian

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

2
जब हम कुछ करना चाहते हैं, तो हम ऐसे विचारों का उपयोग करते हैं, जैसे कि एक युगल तालिका में शामिल होना या कोड मानों को मानव पठनीय मूल्यों में बदलना। दूसरी स्थिति वह है, जहां आप एक सिम्यूलर नाम के साथ समाप्त होंगे।
बेथ व्हाइटजेल

2
श्री डेनी का उत्तर और निम्नलिखित योगदानकर्ता इसके द्वारा समर्थित हैं: dba4life.blogspot.com/2007/11/…

1
@ मेरियन: मैं प्लुरल का उपयोग करता हूं क्योंकि वे प्रश्नों को अधिक स्वाभाविक रूप से पढ़ते हैं और कीवर्ड के साथ टकराव को हल करते हैं। मैंने जिन कई प्रणालियों के साथ काम किया है उनमें एक ऑर्डर इकाई थी। बहुवचन का उपयोग करने से तालिका का नाम ordersनहीं बनता है orderऔर उपयोगकर्ताओं को हर बार तालिका का नाम उद्धृत करने से बचा जाता है। यह groupअन्य कीवर्ड पर भी लागू होता है । सौभाग्य से, कुछ कीवर्ड आम संस्थाओं से टकराते हैं।
बिलथोर

13

हम अनुमति और समूहीकरण दोनों के लिए स्कीमा (उन्हें SQL में नामस्थान के रूप में सोचते हैं) का उपयोग करते हैं। इसलिए "tbl" आदि के बजाय हमारे पास है

  • Data.Thing
  • Data.ThingHistory
  • Data.Stuff

कोई कोड डेटा स्कीमा में नहीं जाता है। कोई तालिका डेटा स्कीमा के बाहर नहीं रहती है। यदि आप चाहें तो यह लुकअप या स्टेजिंग स्कीमा के लिए निश्चित रूप से बढ़ाया जा सकता है।

हमारे द्वारा उपयोग किए जाने वाले दृश्यों के लिए, vwलेकिन यह उन्हें SQL Server 2000 में तालिकाओं से अलग करना था और अब यह थोड़े विरासत है


3
स्कीमाओं की सिफारिश करने के लिए +1। यह 100 d तालिकाओं के साथ बड़े db को बनाए रखते हुए काम आएगा। हम फंक्शनल ग्रुपिंग के लिए भी स्कीमा का उपयोग करते हैं .. जैसा कि
एडवेंचरवर्क्स

5

व्यक्तिगत रूप से मैं फैनो बेडिंगुंग का बहुत बड़ा प्रशंसक हूं , जिसका अर्थ है कि यहां नाम को किसी अन्य मान्य नाम की शुरुआत की अनुमति नहीं है।

और दूसरा दो नामों के बीच हैमिंग की दूरी एक से अधिक अक्षरों से बेहतर है।

हाँ जो कि पूर्ववर्ती समय से नियम हैं, लेकिन वे जीवन को आसान बनाते हैं।

और तीसरा नाम उच्चारण योग्य होना चाहिए, या आप तब पागल हो जाएंगे, जब आवाज की पहचान सही हो जाएगी।


2
जब आवाज की पहचान सही हो जाती है तो मैं वैसे भी पागल हो जाऊंगा। :-)
बेथ व्हाइटज़ेल

यदि आप टेलीथॉन का समर्थन करते हैं तो ही
bernd_k

1
जब आवाज की पहचान होती है, तो मैं एक ट्रक ड्राइवर बनने जा रहा हूं। वह या एक पागल hermit।
मर्देनी

क्या आप अधिक विस्तार से बता सकते हैं (शायद एक उदाहरण के साथ) "फानो बेडिंगुंग" क्या है?
निक चम्मास

1
@NickChammas मुझे लगता है कि अंग्रेजी में हम इसे शैनन-फ़ानो कोडिंग कहते हैं
इयान सैमुअल मैकलीन एल्डर

2

मुझे नहीं पता कि वहाँ वास्तव में कोई "सर्वश्रेष्ठ" नामकरण सम्मेलन है, क्योंकि यह वास्तव में व्यक्तिगत प्राथमिकता और विकास में आसानी के लिए उबलता है। मेरी सलाह है कि नामकरण सम्मेलन चुनिए और उसका पालन कीजिए। यदि आप अंडरस्कोर के साथ शब्दों को अलग करना चाहते हैं, तो अपने सभी डेटाबेस ऑब्जेक्ट में ऐसा करें। यदि आप ऊंट का उपयोग करना चाहते हैं, तो अपने सभी डेटाबेस ऑब्जेक्ट्स में ऐसा करें।

मेरी दुकान में हम निम्नलिखित नियमों का पालन करते हैं:

हम अंडरस्कोर के साथ शब्दों को अलग करते हैं और सभी लोअर-केस अक्षरों का उपयोग करते हैं।
हमारी तालिका के नाम बताते हैं कि वे क्या हैं: dbo.person, dbo.invoice।
हमारे कई-से-कई टेबल नामों का भी वर्णन है कि वे क्या हैं ( मिमी के अतिरिक्त के साथ कई संबंधों को मैप करने के लिए कई संकेत दिए गए हैं: dbo.person_mm_address। हमारी उपयोगकर्ता-निर्धारित संग्रहीत कार्यविधियाँ ऑब्जेक्ट और क्रिया दोनों का वर्णन करती हैं: usp_person_select। , usp_address_select_by_city हमारे विचार और कार्य संग्रहीत नियमों के समान नियमों का पालन करते हैं। हमारी अनुक्रमणिका में तालिका, मुख्य कॉलम (क्रम में), और क्लस्टर किए गए / गैर-क्लस्टर किए गए संकेत शामिल हैं: ix_person_last_name_first_name_nc।

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

मुझे उम्मीद है कि यह "गैर-उत्तर" किसी तरह से मदद करता है।


2

मैं इन वर्षों से संतुष्ट हूं

  • तालिका के नाम: छोटे कैप्स और अंडरस्कोर, एकवचन {ग्राहक, उत्पाद}
  • कई संबंधों के लिए तालिका के नाम: tablename1_tablename2: {customer_product}
  • दृश्य: छोटे कैप ने v को अंत में जोड़ा {customerv, productv, product_groupv}
  • संग्रहित उद्घोषक: तालिका का नाम और कार्य {customer_select, customer_insert, customer_delete, customer_update}

यदि आपके पास एक सस्ता साझा होस्टिंग पैकेज है, तो आपको अपनी सभी वस्तुओं के सामने प्रोजेक्ट संक्षिप्त नाम का उपयोग करने की आवश्यकता होगी, उदाहरण के लिए, डेटाबेस प्रशासक साइट, da_users, da_questions


विचारों के लिए क्यों product_groupvऔर क्यों नहीं product_group_v(यदि आप विचारों और तालिकाओं के इस अंतर पर जोर देते हैं)?
ypercube y

@ypercube क्योंकि मैं एक अतिरिक्त अंडरस्कोर टाइप करने के लिए बहुत आलसी हूँ और मैं आसानी से टाइपिंग की गलतियाँ करता हूँ। जब मैं एक अंडरस्कोर का उपयोग करता हूं तो मैं शब्दों को आसानी से पढ़ता हूं और मैं v को तालिकाओं से अलग करने के लिए उपयोग करता हूं, और v एक शब्द नहीं है इसलिए मैं अंडरस्कोर का उपयोग नहीं करता हूं .. यह असंगत दिखता है, हां, लेकिन मुझे यह प्रारूप व्यावहारिक लगता है।
उउर गुम्मशान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.