डेटाबेस और स्कीमा के बीच अंतर


166

SQL सर्वर में डेटाबेस और स्कीमा में क्या अंतर है? दोनों तालिकाओं और डेटा के कंटेनर हैं।

यदि कोई स्कीमा हटा दी जाती है, तो क्या उस स्कीमा में समाहित सभी टेबल भी अपने आप डिलीट हो जाते हैं या डेटाबेस डिलीट होने पर उन्हें हटा दिया जाता है?

जवाबों:


171

एक डेटाबेस मुख्य कंटेनर है, इसमें डेटा और लॉग फाइलें, और इसके भीतर सभी स्कीमा शामिल हैं। आप हमेशा एक डेटाबेस का बैकअप लेते हैं, यह अपने आप में एक असतत इकाई है।

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

अतिरिक्त प्रश्न के लिए EDIT

drop schema test1

एमएसजी 3729, लेवल 16, स्टेट 1, लाइन 1
स्कीमा 'टेस्ट 1 ' को नहीं छोड़ सकता क्योंकि यह ऑब्जेक्ट 'कोपाइम' द्वारा संदर्भित किया जा रहा है।

जब आप उपयोग में हों तो आप स्कीमा को नहीं छोड़ सकते। आपको पहले सभी वस्तुओं को स्कीमा से निकालना होगा।

संबंधित पढ़ने:

  1. SQL सर्वर स्कीमा क्या अच्छे हैं?
  2. MSDN: उपयोगकर्ता-स्कीमा पृथक्करण

5
SQL सर्वर 2005 और इसके बाद के संस्करण में, डिफ़ॉल्ट रूप से सब कुछ DBO स्कीमा के अंदर चला जाता है अगर हम डेटाबेस ऑब्जेक्ट्स के निर्माण के दौरान किसी स्कीमा नाम का उल्लेख नहीं करते हैं?
sqlchild

@sqlchild हाँ यह सही है। एक स्कीमा की आवश्यकता होती है, प्रत्येक वस्तु को स्कीमा में रखा जाता है, इसलिए डिफ़ॉल्ट dbo है
RichardTheKiwi

क्या आप एक ही डेटाबेस में टेबलों की प्रतिकृति बनाने पर विचार करेंगे और प्रत्येक क्लाइंट के लिए अलग डेटाबेस बनाने के बजाय, उन्हें अलग-अलग क्लाइंट के अनुसार स्कीमा में समूहित करेंगे?
येवग्राफ आंद्रेयेविच झिवागो

क्या AWS Redshift के लिए तर्क समान है? किसी को? मैं एडब्ल्यूएस के मामले में दोनों के बीच उलझन में हूं।
आकाश बसु

19

स्कीमा एक डेटाबेस में वस्तुओं को वर्गीकृत करने का एक तरीका है। यह उपयोगी हो सकता है यदि आपके पास कई एप्लिकेशन एक ही डेटाबेस को साझा करते हैं और जबकि डेटा का कुछ सामान्य सेट है जो सभी एप्लिकेशन एक्सेस करता है।


12

डेटाबेस स्कीमा के साथ डेटा के कंटेनर की तरह है, और स्कीमा वहां टेबल का लेआउट है डेटा प्रकार, संबंध और सामान


1
यह विशेष रूप से SQL सर्वर के लिए सही नहीं है; सामान्य डेटाबेस में टेबल्स में स्कीमा होता है हाँ, लेकिन SQL सर्वर में स्कीमा (जो जानता है कि किस कारण से है) भी प्रभावी रूप से ऐसे नामस्थान हैं जिनमें टेबल होते हैं (और उन टेबल में पारंपरिक अर्थ में स्कीमा भी होते हैं)। दुर्भाग्यपूर्ण नाम जिसे Microsoft ने उनके लिए चुना था - namespaceकहीं अधिक उपयुक्त है।
सेक्रेडस्कुल

7

स्कीमा कहती है कि डेटाबेस में क्या टेबल हैं, उनके पास कौन से कॉलम हैं और वे कैसे संबंधित हैं। प्रत्येक डेटाबेस का अपना स्कीमा होता है।


लेकिन अगर मैं किसी स्कीमा को स्पष्ट रूप से नहीं बनाता हूं और किसी स्कीमा के नाम का उल्लेख किए बिना टेबल बनाता हूं तो टेबल कहां बनाई जाती हैं। डिफ़ॉल्ट रूप से वे dbo स्कीमा में जा रहे होंगे। है ना?
sqlchild

हां, लेकिन आमतौर पर आप स्कीमा के साथ मैन्युअल रूप से व्यवहार नहीं करते हैं, आप या तो कुछ प्रबंधन उपकरण से तालिकाओं का निर्माण करते हैं या कुछ ORM उपकरण की कोड पहली विशेषता का उपयोग कर रहे हैं
रॉबर्ट

मैं sql सर्वर प्रबंधन स्टूडियो का उपयोग करता हूं और मैं
sqlchild

4

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

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