5

डेटाबेस सर्वर पर विचार करें जिसका काम आज एक डेटाबेस है। संभावना है कि भविष्य में डेटाबेस को दूसरे डेटाबेस उदाहरण में स्थानांतरित किया जाएगा जिसमें एकाधिक डेटाबेस & स्कीमा हैं।एसक्यूएल सर्वर: एक स्कीमा नामकरण के लिए सम्मेलन

के एप्लिकेशन/परियोजना Invoicer 2.0 कहा जाता है का नाटक करते हैं। डेटाबेस को AcmeInvoice कहा जाता है। डेटाबेस में सभी चालान, ग्राहक और उत्पाद जानकारी होती है। यहां कलाकारों और उनकी भूमिकाओं और व्यवहार का एक चित्र है।

alt text

स्कीमा (रों) काफी हद तक आसानी से भूमिकाओं के लिए अनुमतियां देने इस्तेमाल किया जाएगा। यहां जोड़ा गया लाभ यह है कि ऑब्जेक्ट्स dbo के अंतर्गत नहीं हैं, और ऑब्जेक्ट्स & अनुमतियां भविष्य में किसी अन्य मशीन पर पोर्ट की जा सकती हैं।

प्रश्न

  • क्या सम्मेलनों का उपयोग करते हैं जब स्कीमा नामकरण?
  • क्या यह स्कीमा को डेटाबेस के समान नाम देने का अच्छा रूप है?

उत्तर

4

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

अंगूठे के आम तौर पर नियम के रूप में, मैं उस नाम का उपयोग करने से बचने की कोशिश करता हूं जो एप्लिकेशन नाम, डेटाबेस नाम या अन्य ठोस/भौतिक चीजों को प्रतिबिंबित करता है क्योंकि वे बदल सकते हैं, और एक ऐसा नाम ढूंढ सकते हैं जो आपके ऑब्जेक्ट्स के दायरे को अवधारणात्मक रूप से दर्शाता है वह स्कीमा में जाएगा।

आपकी टिप्पणी कहा गया है कि "स्कीमा काफी हद तक आसानी से भूमिकाओं के लिए अनुमतियां निर्दिष्ट करने के लिए इस्तेमाल किया जाएगा"। आपका चित्र विशिष्ट उपयोगकर्ता प्रकारों को कुछ/सभी तालिकाओं या कुछ/सभी संग्रहीत प्रोसेस तक पहुंचने से दिखाता है। मुझे लगता है कि स्कीमा में अवधारणाओं को अवधारणाओं को व्यवस्थित करने और स्कीमा में सुरक्षा दृष्टिकोण से उन्हें व्यवस्थित करने की कोशिश विरोधाभासी चीजें हैं। मैं उपयोगकर्ताओं के प्रकारों को प्रतिबिंबित करने के लिए एसक्यूएल सर्वर में भूमिकाएं बनाने के पक्ष में हूं, और उन भूमिकाओं को विशिष्ट ऑब्जेक्ट तक पहुंच प्रदान करता हूं जो प्रत्येक उपयोगकर्ता प्रकार की ज़रूरत होती है, जैसा कि भूमिका या उपयोगकर्ता को आपके सुरक्षा ढांचे को बनाने के लिए स्कीमा तक पहुंचने के लिए अपील की जाती है ..

4

आप स्कीमा डेटाबेस के रूप में ही क्यों नाम हैं? इसका मतलब है कि सभी डेटाबेस ऑब्जेक्ट्स एक ही स्कीमा के अंतर्गत आते हैं। यदि ऐसा है, तो एक स्कीमा क्यों है?

आमतौर पर स्कीमा की गतिविधि या समारोह का एक आम दायरे के भीतर समूह वस्तुओं के लिए उपयोग किया जाता है। उदाहरण के लिए, जो आपने वर्णन किया है, उसे आपके पास चालान स्कीमा, ग्राहक स्कीमा और उत्पाद स्कीमा हो सकती है। सभी चालान संबंधित वस्तुएं चालान स्कीमा में जाएंगी, सभी ग्राहक संबंधित वस्तुएं ग्राहक स्कीमा में जाएंगी, और उत्पादों के लिए भी यही होंगी।

हम अक्सर एक आम स्कीमा के साथ-साथ जो वस्तुओं है कि हमारे पूरे आवेदन करने के लिए सामान्य हो सकता है शामिल हैं का प्रयोग करेंगे।

+0

सहमत है, यह एक मेज tblCustomers नामकरण की तरह है। आप जानते हैं कि AcmeInvoice के अंदर की वस्तुएं AcmeInvoice से संबंधित हैं क्योंकि वे उस डेटाबेस में हैं। AcmeInvoice.AcmeInvoice का उद्देश्य क्या होगा। AcmeInvoice.dbo.Customers के विरोध में ग्राहक? –

+0

@pcampbell - क्या मैंने ऐसा नहीं किया है? मैंने सुझाव दिया है कि आप अपनी स्कीमा की कार्यात्मक रेखाओं या गतिविधि की रेखाओं का नाम दें। –

1

मैं डेटाबेस AcmeInvoice (या किसी अन्य उपयुक्त नाम) और स्कीमा Invoicer2 कहेंगे।

मेरे कारणों इस प्रकार हैं: Acmeinvoice मतलब है मुझे लगता है कि अनुप्रयोगों वस्तुओं/डेटा के सभी आपस में समूहित कर रहा हूँ। इसलिए इसे एक इकाई के रूप में अन्य मशीनों (बैकअप/पुनर्स्थापित या अनैच/संलग्न) में स्थानांतरित किया जा सकता है।

स्कीमा इनवोइसर 2 होगा। एप्लिकेशन बदलते हैं, शायद भविष्य में आपके पास इनवोइसर 21 होगा (आप एक स्कीमा बनाएंगे), या शायद एक रिपोर्टिंग मॉड्यूल या सिस्टम (स्कीमा रिपोर्ट)। मुझे लगता है कि स्कीमा का उपयोग मुझे एक डेटाबेस में डेटा/प्रक्रियाओं को अलग-अलग समूहों में अलग करने की अनुमति देता है जो व्यवस्थापक अनुमतियों को आसान बनाता है।

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