2009-10-19 13 views
14

मैंने हाल ही में एक सहयोगी से पूछा कि क्यों उन्होंने अपने सभी डेटाबेस तालिका नामों के अंत में _TABLE शामिल किया था। उन्होंने कहा कि यह एक और संगठन में एक मानक रहा है जिसके लिए उन्होंने काम किया था। विचारों की शुरुआत में अन्य सहयोगी V_ का उपयोग करते हैं।
क्या यह अच्छा अभ्यास है?नामकरण डेटाबेस टेबल्स और दृश्य

उत्तर

24

संगति सबसे अच्छा तरीका है। ऑब्जेक्ट नाम के अंत में एक _TABLE या _VIEW जोड़ना मेरी पुस्तक में अधिक है, लेकिन यदि डेटाबेस इस तरह से डिज़ाइन किया गया है, तो मैं सम्मेलन से नहीं तोड़ूंगा।

अपने सहयोगी के लिए 'स्थानीय' मानकों की जांच किए बिना किसी नए संगठन में अपना नामकरण सम्मेलन लाने के लिए बुरी आदत है।

+4

+1 ... यदि आप एक डेटाबेस में एकाधिक नामकरण सम्मेलनों के साथ समाप्त होते हैं तो यह उद्देश्य को हरा देता है – Andomar

1

http://vyaskn.tripod.com/object_naming.htm से:

डेटाबेस वस्तुओं के लिए बहुत से अलग नामकरण सम्मेलनों मौजूद हैं, उनमें से कोई भी गलत है। यह नामकरण सम्मेलन तैयार करने वाले व्यक्ति की व्यक्तिगत वरीयता है। हालांकि, एक संगठन में, एक व्यक्ति (या एक समूह) डेटाबेस नामकरण सम्मेलनों को परिभाषित करता है, इसे मानकीकृत करता है और अन्य इसका पालन करेंगे चाहे वे इसे पसंद करते हैं या नहीं।

full article को अपने संगठन में कार्यान्वित करने/इसे बनाने के तरीके के विवरण के लिए पढ़ें।

2

यदि आप अक्सर चयन क्वेरी पढ़ते हैं तो v_ या vw_ उपसर्ग का उपयोग करना उपयोगी हो सकता है; आप जल्दी से देख सकते हैं कि आप किसी दृश्य या तालिका से चयन कर रहे हैं या नहीं। उपसर्ग दृश्य या पोस्टफिक्सिंग टेबल पर्याप्त होना चाहिए, दोनों की आवश्यकता नहीं है। हम दृश्य उपसर्ग का उपयोग करते हैं।

इसके अतिरिक्त हम क्लस्टर टेबल और एक कार्यात्मक समूह के आस-पास के दृश्यों के लिए "मॉड्यूल" उपसर्ग का उपयोग करते हैं। उदाहरण के लिए, बिलिंग संबंधी तालिकाओं को BIL_ * और बिलिंग संबंधी दृश्य VW_BIL_ * कहा जाता है। मॉड्यूल नामकरण एसएसएमएस में एक दूसरे के पास संबंधित तालिकाओं और विचार रखता है।

19

मानक के रूप में देखने के लिए वी का उपयोग करना मेरी आंखों में विशेष रूप से खराब है क्योंकि यह आपको डेटाबेस का पुनर्विक्रय करने के सर्वोत्तम तरीकों में से एक का उपयोग करने से रोकता है और पुराने नाम की नकल करने वाले पुराने नाम के साथ एक दृश्य बनाता है संरचना जब आप परिवर्तन कर रहे होते हैं तो कुछ भी तोड़ नहीं जाता है लेकिन परिवर्तन को लागू करने से पहले आप सभी पुराने संदर्भों को ठीक किए बिना सभी पुरानी संदर्भों को ढूंढना और ठीक करना शुरू कर सकते हैं।

मैं इस विचार पर एएफएफ के साथ भी हूं कि वास्तविक समस्या किसी अन्य संगठन से नामकरण सम्मेलन ले रही है और वर्तमान संगठन के नामकरण सम्मेलनों को अनदेखा कर रही है। मैं इस उपवास पर stomp और जोर देकर कहते हैं कि वह सभी वस्तुओं और संबंधित कोड को जो भी आपके मानक है या यह एक समस्या जारी रहेगा बदल जाएगा।

3

ऐसा लगता है कि एकेएफ ने सवाल का जवाब दिया। और एचएलजीईएम रिफैक्टरिंग के बारे में एक अच्छा मुद्दा बनाता है।

हालांकि मैं इस उपद्रव को कोई उपसर्ग/प्रत्यय सम्मेलन रखने के लिए जोड़ूंगा। SQL सर्वर (और शायद अन्य डेटाबेस) में आपके पास एक ही स्वामी के साथ एक ही स्कीमा में एक ही नाम के साथ एक तालिका और दृश्य नहीं हो सकता है। यह तालिका के लिए एक असामान्य दृश्य बनाने के लिए एक आम पैटर्न है। यदि आपने नामकरण सम्मेलन अपनाया नहीं है जो टेबल से दृश्यों को अलग करता है तो आप EMPLOYEE_V के बजाय EMPLOYEE_DENORM जैसे इन विचारों के लिए मज़ेदार नामों का अंत कर सकते हैं।

यदि एचएलजीईएम जैसे रिफैक्टरिंग के लिए आवश्यकता उत्पन्न होती है तो आपके नामकरण सम्मेलन की अनुमति हो सकती है। इस तरह उपसर्ग या प्रत्यय के बिना उन विचारों को आसानी से "रिफैक्टरिंग" विचारों के रूप में पहचाना जाता है।

0

मैं सभी ऊंटों के साथ-साथ फ़ील्ड नामों में अपनी टेबल का नाम देना पसंद करता हूं। उदाहरण के लिए...

CREATE TABLE [crm].[company] 
(
    [id] INT NOT NULL PRIMARY KEY, 
    [companyName] NVARCHAR(255) NOT NULL 
) 

और विचारों के लिए, मैं उन्हें "दृश्य" शब्द के साथ प्रस्तुत करता हूं। उदाहरण के लिए ...

CREATE VIEW [crm].[viewFullEmployee] 
    AS SELECT e.id, e.companyId, e.niceId, e.startDate, e.fullPart, p.firstName, p.middleName, p.lastName, p.active, p.birthDate, p.email, p.alternateEmail, p.phone, p.phoneExt, p.homePhone, p.mobilePhone, p.jobTitle, p.suffix, p.prefix FROM [crm].[Employee] as e FULL JOIN [crm].[person] as p on e.id = p.id 

मैं भी सब कुछ बाहर स्कीमा में विभाजित है और मैं डिफ़ॉल्ट स्कीमा का उपयोग नहीं करते, मुझे मजबूर कर हमेशा अपने प्रश्नों में बातों के लिए एक स्कीमा निर्दिष्ट करने के लिए कुछ भी नहीं के रूप में dbo में है।

मुझे पता है कि इसके सामने शब्द दृश्य की कमी के कारण कुछ तालिका है। यह एक ही नाम के साथ एक टेबल और एक दृश्य होने से रोकता है।

मैं "कर्मचारी_वी" जैसे अंडरस्कोर नामों का उपयोग करना पसंद नहीं करता क्योंकि मैं टी 4 टेम्पलेट्स "पेटपापो" के साथ अपना सभी डेटा लेयर कोड उत्पन्न करता हूं और मुझे किसी प्रकार का संदर्भ देते समय मेरे कोड में _ टाइप करना पसंद नहीं है।

मैं बस की तरह बेहतर

var person = uow.Db.Fetch<Models.viewFullEmployee>("SELECT * FROM [crm].[viewFullEmployee]"); 

बनाम इस

var person = uow.Db.Fetch<Models.fullEmployee_V>("SELECT * FROM [crm].[fullEmployee_V]"); 

संग्रहित प्रक्रियाओं मैं वे की तरह "sp_" उपसर्ग जो मैं देख रहा हूँ इतने सारे लोग कर की जरूरत नहीं है लग रहा है के रूप में। आप जानते हैं कि यह EXEC के उपसर्ग, या प्रक्रिया बनाएं, या परिवर्तन प्रक्रिया के कारण उपयोग में संग्रहीत प्रक्रिया है। इस तरह मैं अपने संग्रहित प्रक्रियाओं जैसे "addUpdatePerson", "getUserPermissions", आदि

जहां मैं उपसर्ग का उपयोग करता हूं, फ़ंक्शन पर है, जैसे "fnValidateEmail" क्योंकि वे संग्रहीत प्रक्रिया नामों के साथ संघर्ष कर सकते हैं। नामकरण सम्मेलन लेने के बारे में टिप्पणी के लिए

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